Executando verificação de segurança...
2

🤯 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.
Carregando publicação patrocinada...
2

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!

1
1

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??

1
  • 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?

1