Este é um bate -papo criptografado através da linha de comando! Foi feito usando NCurses para criar toda a interface do usuário. Eu queria fazer um exemplo cliente-servidor de um bate-papo, também as mensagens seriam criptografadas de ponta a ponta.
Ao aceitar a conexão de um novo cliente, a primeira mensagem que o servidor recebe é a public key do cliente, que mais tarde é enviada a todos os soquetes de escuta (clientes). As mensagens são primeiro criptografadas usando public keys do cliente registrado antes de serem enviadas para o servidor. Outros clientes de escuta não criptografarão suas mensagens usando sua private key .
O projeto consiste em 3 partes principais,
Nos GIFs abaixo, o terminal certo foi aberto usando o Telnet (instalar no Linux) para mostrar como uma pessoa que não usa o cliente veria as mensagens dos usuários usando o cliente deste projeto.
| Cliente oficial | Conectado usando telnet |
|---|---|
![]() | ![]() |
O exemplo abaixo mostra dois clientes, onde as mensagens são criptografadas de ponta a ponta.
Cliente oficial A | Cliente oficial B |
|---|---|
![]() | ![]() |
CoNTACT -ME no Twitter | Criar um problema
O que posso dizer, eu amo Ncurses e queria fazer um exemplo de algo que exigia criptografia, a idéia de um bate -papo no TCP foi a primeira coisa que me veio à mente.
Este foi apenas um projeto feito de curiosidade, o uso que você pode dar a essa ferramenta é por seu próprio risco.
Esta linha de comando TCP Chat foi construída usando NCURSses.
O servidor está funcionando constantemente e também pode ser usado em um Raspberry Pi em combinação com o NGrok. Ao fazer isso, você pode abrir seu bate -papo com outros colegas e ter uma maneira segura de mensagens.
O cliente tem uma boa interface do usuário para ser usada no terminal. O cliente se conecta primeiro ao servidor e envia sua public key para o servidor. O servidor recupera essas informações e as envia a todos os usuários que usam esse cliente.
Todo cliente irá criptografar suas mensagens com as public keys dos outros clientes de escuta. O servidor receberá a mensagem de cada cliente de audição correspondente e a enviará de acordo.
Depois que a mensagem criptografada é recebida do lado dos outros clientes, ela não é criptografada usando a private key do usuário.
O cliente renova seus pares de chave sempre que você o inicia.
Depois que a instalação for feita,
Conforme padrão, a porta à qual o servidor está se conectando é 54000
Iniciando o servidor (caso você esteja executando o servidor)
source silver_serverIniciando o cliente
source silver_sniffle -a 127.0.0.1 54000 127.0.0.1 e a porta 54000 pode ser alterada, por exemplo, para seu próprio endereço TCP , se você tiver um. Obviamente, o servidor teria que estar em execução nesse endereço.
sudo apt install libncurses5-dev libncursesw5-devsudo apt-get install libssl-devsudo apt-get -y install cmake Clonar este repositório assim,
git clone https://github.com/edghyhdz/silver-sniffle.git Uma vez dentro da pasta Raiz Project silver-sniffle ,
# Lets start by creating the build directory
mkdir build && cd build
# cmake that guy
cmake ..
# Finally
source install.sh install.sh executará a instalação final que criará um atalho Terimal chamado silver_server e silver_sniffle .
A estrutura final da pasta do projeto é a seguinte,
.
├── ...
├── build # Directory were project was built
│ ├──silver_server # Server executable
│ ├── executable # Client executable location
│ │ └─── silver_sniffle # Client executable
│ └── certificates # key pair location
└── ...
Se tudo foi feito tudo bem, você poderá executar o servidor fazendo o seguinte,
source silver_serverDepois que o servidor estiver em funcionamento, você poderá executar o cliente como assim,
source silver_sniffle -a 127.0.0.1 54000Você sempre pode redirecionar o cliente para outro endereço.
As referências mais relevantes são as seguintes,
Mais referências podem ser encontradas dentro do código.
Edgar Hernandez