🤯 Bate papo implementado usando protocolo ICMP?

Bate papo implementado usando protocolo ICMP

Video Demo

Exemplo

Escute para que alguém se conecte a você!

go run . --iface 10.0.0.x --listen

Conecte-se a alguém que está escutando:

go run . --iface 10.0.0.x --target 10.0.0.x

Usando

Basta escrever algo e pressionar Enter!

O Handshake

Quem está escutando espera que o remetente envie 4 pacotes nesta ordem:

  1. Um número
  2. Um número
  3. Um número
  4. A soma dos três números anteriores

A soma dos três primeiros números deve ser ímpar.

Esses números devem ser enviados no seguinte formato "|número|"

Então, se tudo estiver correto, o ouvinte envia o (4º número multiplicado por 2).

Depois, o remetente verifica se o número enviado é igual à soma dos três números anteriores vezes dois.

Se esse requisito for atendido, o remetente confirma o handshake enviando um "|OK|".

Se falhar, o remetente envia "|FAIL|".

Disclaimer

  1. Isto não está "pronto para produção"!
  2. Todo o tráfego é completamente limpo!
  3. Eu testei isso apenas em uma rede local (entre duas máquinas, virtual e física), mas deve funcionar externamente também.
  4. O handshake não é destinado a ser seguro nem algum tipo de autenticação; é destinado a evitar que um ping aleatório se transforme automaticamente em um chat.

Recursos Faltando

  • Detectar quando um dos usuários conectados é desconectado, então desconectar ambos e fechar o aplicativo.
  • Criptografar mensagens entre pares.
  • Evitar que pings aleatórios sejam interpretados como mensagens.

Que doido! Eu pesquisei um pouco sobre ICMP e já peguei um pouco da dificuldade que pode ter sido, mas eu adoraria um post falando mais do protocolo e do que foi preciso para fazer esse chat funcionar!

Logo mais irei fazer um post detalhando o desenvolvimento até agora. Fiz tudo utilizando a linguagem go, o que facilitou um pouco.
Eu vi, esta até pensado em fazer uma contribuição para poder estudar um pouco de go, mas não tive muito idéia do que fazer. Você consegue pensar em algo??
- Detect when one of the connected users is disconnected, then disconnect both and close the app - Encrypt messages between peers - Avoid random ping to be interpreted as a message Tem essas três features principais que estão faltando. O que acha de fazer a primeira? Detectar se um dos usuário que entraram no chat fecharam e se sim, fazer com que o outro também quit?
Posso tentar! Deve ser a mais simples, sem entrar no mundo de criptografia, sem no muito no protocolo do ping e sua ultilização