Cryptochat is a project that allows two users to communicate securely via the command line interface (CLI).
- The server is implemented in Python with the socket module.
- A network sniffer is implemented to capture the packets sent and received and ensure that the data is properly encrypted.
- An authentication is required before accessing the server.
- Cryptochat uses the RSA algorithm to encrypt messages.
- All datas are stored into a SQLite database.
- All roles run on the same machine by default.
CryptoChat_demo.mp4
Role | Link | Description | Max clients |
---|---|---|---|
Server (P2P) | β© | Host, send, receive and save messages. | 1 |
Client | β© | Send and receive messages. | / |
Sniffer | β© | Analyze a specified number of TCP packets containing datas. | / |
All roles | β© | Contains the entire project with all roles. | / |
Consider installing python 3.12 or higher.
- Create a virtual environment and install the requirements.
pip install -r requirements.txt
python3 srv.py
python3 clt.py
python3 snf.py
The figures below explain how CryptoChat works.
![About roles](https://private-user-images.githubusercontent.com/104645407/301960926-4eeea55e-3b44-4048-8a26-c1651dc7cdee.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI0NTY2MzcsIm5iZiI6MTcyMjQ1NjMzNywicGF0aCI6Ii8xMDQ2NDU0MDcvMzAxOTYwOTI2LTRlZWVhNTVlLTNiNDQtNDA0OC04YTI2LWMxNjUxZGM3Y2RlZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzMxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDczMVQyMDA1MzdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03OTViZDgzMmU3MTMxMjJkYjFmNjY1Njc3ZjU5NWQwNzYwNjFiNWEyZjVlZmM5YzY0OGQwMTdjZDllZDY0ODVjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.kR8t4chV8N7OY4pSo93E8k4M81E1YC1hUIDSDlumlfc)
CryptoChat π¬π is under MIT License
If you like this project, feel free to give it a β!