🤯 Bate papo implementado usando protocolo ICMP?
Bate papo implementado usando protocolo ICMP
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:
- Um número
- Um número
- Um número
- 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
- Isto não está "pronto para produção"!
- Todo o tráfego é completamente limpo!
- Eu testei isso apenas em uma rede local (entre duas máquinas, virtual e fÃsica), mas deve funcionar externamente também.
- 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.