이것은 명령 줄을 통한 암호화 된 채팅입니다! 전체 사용자 인터페이스를 구축하기 위해 NCURES를 사용하여 수행되었습니다. 나는 채팅의 클라이언트-서버 예제를하고 싶었고, 메시지는 끝에서 끝까지 암호화 될 것입니다.
새 클라이언트의 연결을 수락하면 서버가받는 첫 번째 메시지는 클라이언트의 public key 이며 나중에 모든 청취 소켓 (클라이언트)으로 전송됩니다. 메시지는 서버로 돌아 가기 전에 로그인 클라이언트의 public keys 사용하여 먼저 암호화됩니다. 다른 청취 고객은 private key 사용하여 메시지를 암호화하지 않습니다.
이 프로젝트는 3 가지 주요 부분으로 구성되어 있으며
아래 GIF에서 오른쪽 터미널은 Telnet (Linux에 설치)을 사용하여 열려 클라이언트를 사용하지 않는 사람 이이 프로젝트의 클라이언트를 사용하는 사용자의 메시지를 어떻게 볼 수 있는지 보여줍니다.
| 공식 고객 | Telnet을 사용하여 연결되었습니다 |
|---|---|
![]() | ![]() |
아래의 예는 두 클라이언트를 보여 주며 메시지가 암호화 된 끝에서 종료되었습니다.
공식 고객 A | 공식 고객 B |
|---|---|
![]() | ![]() |
트위터에서 나를 연결하십시오 | 문제를 만듭니다
내가 말할 수있는 것은, 나는 ncurses를 좋아하고 암호화가 필요한 무언가의 예를 만들고 싶었다. TCP 채팅의 아이디어는 내 마음에 들어온 첫 번째 일이었다.
이것은 호기심으로 만들어진 프로젝트 일뿐입니다.이 도구에 제공 할 수있는 사용은 자신의 위험에 처해 있습니다.
이 명령 줄 TCP 채팅은 NCURSE를 사용하여 구축되었습니다.
서버는 지속적으로 실행 중이며 Ngrok과 함께 라즈베리 파이에서도 사용할 수도 있습니다. 그렇게함으로써 다른 동료들과 채팅을 열고 안전한 메시징 방법을 가질 수 있습니다.
클라이언트는 터미널에 사용할 멋진 UI가 있습니다. 클라이언트는 먼저 서버에 연결하여 public key 서버로 보냅니다. 서버는이 정보를 검색 하여이 클라이언트를 사용하여 모든 사용자에게 보냅니다.
그런 다음 모든 고객은 다른 청취 고객의 public keys 와 메시지를 암호화합니다. 그런 다음 서버는 각각의 해당 청취 클라이언트의 메시지를 가져 와서 그에 따라 보냅니다.
암호화 된 메시지가 다른 클라이언트 측에서 수신되면 사용자의 private key 사용하여 암호화되지 않습니다.
클라이언트는 시작할 때마다 키 쌍을 갱신합니다.
설치가 완료되면
기본값에 따라 서버가 연결하는 포트는 54000 입니다.
서버 시작 (서버를 실행중인 경우)
source silver_server클라이언트 시작
source silver_sniffle -a 127.0.0.1 54000 127.0.0.1 및 포트 54000 예를 들어 자신의 TCP 주소로 변경 될 수 있습니다. 물론 서버는 해당 주소에서 실행해야합니다.
sudo apt install libncurses5-dev libncursesw5-devsudo apt-get install libssl-dev 엽니 다sudo apt-get -y install cmake 이 저장소를 복제하고
git clone https://github.com/edghyhdz/silver-sniffle.git 루트 프로젝트 폴더 silver-sniffle 에 들어가면
# Lets start by creating the build directory
mkdir build && cd build
# cmake that guy
cmake ..
# Finally
source install.sh install.sh silver_server 와 silver_sniffle 이라는 3 차 단축키를 생성하는 최종 설치를 실행합니다.
최종 프로젝트 폴더 구조는 다음과 같습니다.
.
├── ...
├── build # Directory were project was built
│ ├──silver_server # Server executable
│ ├── executable # Client executable location
│ │ └─── silver_sniffle # Client executable
│ └── certificates # key pair location
└── ...
모든 것이 완화되면 다음을 수행하여 서버를 실행할 수 있어야합니다.
source silver_server서버가 가동되고 실행되면 그렇게 클라이언트를 실행할 수 있어야합니다.
source silver_sniffle -a 127.0.0.1 54000항상 클라이언트를 다른 주소로 다시 경로 할 수 있습니다.
가장 관련성있는 참조는 다음과 같습니다.
더 많은 참조는 코드 내에서 찾을 수 있습니다.
에드거 에르난데스