¡Este es un chat encriptado a través de la línea de comandos! Se realizó con NCURSES para construir toda la interfaz de usuario. Quería hacer un ejemplo de chat de cliente cliente, si también los mensajes se encriptarían de extremo a extremo.
Al aceptar la conexión de un nuevo cliente, el primer mensaje que el servidor recibe es la public key del cliente, que luego se envía a todos los sockets (clientes). Los mensajes se cifran primero utilizando public keys del cliente registrado antes de ser enviados al servidor. Otros clientes de escucha no cifrarán sus mensajes utilizando su private key .
El proyecto consta de 3 partes principales,
En los GIF a continuación, el terminal correcto se abrió utilizando Telnet (instalar en Linux) para mostrar cómo una persona que no usa el cliente vería los mensajes de los usuarios que usan el cliente de este proyecto.
| Cliente oficial | Conectado usando telnet |
|---|---|
![]() | ![]() |
El ejemplo a continuación muestra a dos clientes, si los mensajes están encriptados de extremo a final.
Cliente oficial A | Cliente oficial B |
|---|---|
![]() | ![]() |
Conntact Me en Twitter | Crear un problema
Lo que puedo decir, me encantan los ncurses y quería hacer un ejemplo de algo que requirió el cifrado, la idea de un chat TCP fue lo primero que me ocurrió.
Este fue solo un proyecto hecho por curiosidad, el uso que podría dar a esta herramienta es bajo su propio riesgo.
Este chat TCP de línea de comando se construyó usando NCURSES.
El servidor se ejecuta constantemente y también podría usarse en una Raspberry Pi en combinación con NGROK. Al hacerlo, puede abrir su chat a otros compañeros y tener una forma segura de mensajes.
El cliente tiene una buena interfaz de usuario para usar en la terminal. El cliente primero se conecta al servidor y envía su public key al servidor. El servidor recupera esta información y la envía a todos los usuarios que usan este cliente.
Cada cliente cifrará sus mensajes con las public keys de los otros clientes que escuchan. Luego, el servidor recibirá el mensaje de cada cliente de escucha correspondiente y lo enviará en consecuencia.
Una vez que el mensaje encriptado se recibe del lado de los otros clientes, no está crefriado utilizando la private key del usuario.
El cliente renueva sus pares de claves cada vez que lo inicia.
Una vez que se ha realizado la instalación,
Según el valor predeterminado, el puerto al que se está conectando el servidor es 54000
Iniciar el servidor (en caso de que esté ejecutando el servidor)
source silver_serverIniciar el cliente
source silver_sniffle -a 127.0.0.1 54000 127.0.0.1 y el puerto 54000 podrían cambiarse, por ejemplo, a su propia dirección TCP si tiene una. Por supuesto, el servidor tendría que ejecutar en esa dirección.
sudo apt install libncurses5-dev libncursesw5-devsudo apt-get install libssl-devsudo apt-get -y install cmake Clon este repositorio como así,
git clone https://github.com/edghyhdz/silver-sniffle.git Una vez dentro de la carpeta del proyecto raíz, silver-sniffle ,
# Lets start by creating the build directory
mkdir build && cd build
# cmake that guy
cmake ..
# Finally
source install.sh install.sh ejecutará la instalación final que creará un atajo terimal llamado silver_server y silver_sniffle .
La estructura final de la carpeta del proyecto es la siguiente,
.
├── ...
├── build # Directory were project was built
│ ├──silver_server # Server executable
│ ├── executable # Client executable location
│ │ └─── silver_sniffle # Client executable
│ └── certificates # key pair location
└── ...
Si todo se hizo bien, debería poder ejecutar el servidor haciendo lo siguiente,
source silver_serverUna vez que el servidor esté en funcionamiento, debería poder ejecutar el cliente como así,
source silver_sniffle -a 127.0.0.1 54000Siempre puede redirigir al cliente a otra dirección.
Las referencias más relevantes son las siguientes,
Se pueden encontrar más referencias dentro del código.
Edgar Hernández