Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marcos-venicius/icmptalk
Talk with someone using ICMP
https://github.com/marcos-venicius/icmptalk
chat go golang handshake icmp packets protocol terminal-app tool
Last synced: about 1 month ago
JSON representation
Talk with someone using ICMP
- Host: GitHub
- URL: https://github.com/marcos-venicius/icmptalk
- Owner: marcos-venicius
- License: mit
- Created: 2024-09-09T17:30:19.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-09-09T21:13:10.000Z (5 months ago)
- Last Synced: 2024-11-16T06:47:26.566Z (3 months ago)
- Topics: chat, go, golang, handshake, icmp, packets, protocol, terminal-app, tool
- Language: Go
- Homepage:
- Size: 598 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ICMPTalk
Chat with someone via ICMP.
https://github.com/user-attachments/assets/2c6a39ad-9fe2-4b72-912e-68dc076ed95f
### Example
Listen for someone to connect to you!
```bash
go run . --iface 10.0.0.x --listen
```Connect to someone that is listening:
```bash
go run . --iface 10.0.0.x --target 10.0.0.x
```### Using
Just write something and press enter!
### The handshake
Who is listening expects the sender to send 4 packets in that order:
1. A number
2. A number
3. A number
4. The sum of all three previous numbers**The sum of the three first numbers should be odd.**
**These numbers should be sent in the following format "|number|"**Then, if everything is correct, the listener sends the (4th number times 2)
Then, the sender checks if the number sent is equal to the sum of three previous number times two.
If this requirements is filled, then the sender confirms the handshake sending an "|OK|".
If it fails, the sender sends "|FAIL|"### Disclaimer
1. **This is not "production ready"!**
2. **All the traffic is completely clean!**
3. **I'v tested this only in local network (between two machines), but should work on external too**
4. **The handshake is not intended to be secure nor some kind of authentication, it's intended to avoid some random ping to turn into a chat automatically**### Missing features
- 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