CipherLink is a secure real-time multi-client chat application developed using Python Socket Programming and Tkinter GUI. The application enables multiple users to communicate securely over local networks or the internet using End-to-End Encryption (E2EE).
The project demonstrates:
- Socket Programming
- Client-Server Architecture
- Multithreading
- GUI Development using Tkinter
- End-to-End Encryption using Fernet
- Internet Deployment using Ngrok
- Online Users Synchronization
- Chat Log Management
- 🔒 End-to-End Encrypted Messaging
- 🌐 Internet-based Communication using Ngrok
- 👥 Multi-Client Communication
- 📋 Dynamic Online Users List
- 💬 Real-Time Messaging
- 🖥️ Tkinter GUI Interface
- 🧵 Multi-threaded Server Handling
- 📝 Local Chat Log Saving
- ⚡ Lightweight and Fast
- 🔐 Password-based Encryption using Fernet
| Technology | Purpose |
|---|---|
| Python 3.x | Core Programming |
| Socket Programming | Networking Communication |
| Tkinter | GUI Development |
| Threading | Multi-client Handling |
| Cryptography (Fernet) | End-to-End Encryption |
| Ngrok | Internet Deployment |
| PyInstaller | EXE File Generation |
┌─────────────────┐
│ SERVER │
│ (Central Hub) │
└────────┬────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────────────┐ ┌────────────┐ ┌────────────┐
│ CLIENT 1 │ │ CLIENT 2 │ │ CLIENT N │
│ GUI │ │ GUI │ │ GUI │
└────────────┘ └────────────┘ └────────────┘
- User enters a shared password.
- Password is converted into a secure encryption key using PBKDF2HMAC.
- Messages are encrypted using Fernet encryption before transmission.
- Server only forwards encrypted packets.
- Receiving client decrypts the message locally.
CipherLink/
│
├── modified_server.py
├── modified_client.py
├── chat_logs/
├── README.md
└── requirements.txt
Download and install Python 3.8+:
https://www.python.org/downloads/
During installation:
- Enable “Add Python to PATH”
Open terminal inside project directory:
pip install cryptographyOptional (for EXE conversion):
pip install pyinstallerOpen terminal inside project directory:
python modified_server.pyExpected Output:
Starting secure chat server on 0.0.0.0:5000
Keep this terminal OPEN.
After signup:
ngrok config add-authtoken YOUR_AUTH_TOKENOpen another terminal:
ngrok tcp 5000Example Output:
Forwarding tcp://0.tcp.in.ngrok.io:19345 -> localhost:5000
Keep this terminal OPEN.
Open:
modified_client.py
Update these lines:
SERVER_HOST = "0.tcp.in.ngrok.io"
SERVER_PORT = 19345Replace with your own ngrok host and port.
Save the file.
python modified_client.pySteps:
- Enter username
- Enable encryption
- Enter shared password
- Click “Set Password”
- Click “Connect”
Send your friend:
- modified_client.py
OR preferably:
- modified_client.exe
Your friend should:
- Run client
- Enter username
- Enter same password
- Click Connect
Install requirements:
pip install pyinstaller cryptographyGenerate EXE:
pyinstaller --onefile --windowed modified_client.pyGenerated EXE location:
dist/modified_client.exe
All messages are automatically stored locally inside:
chat_logs/
Logs include:
- Username
- Timestamp
- Messages
- Server running terminal
- Ngrok tunnel
- Client GUI
- Multi-client communication
- Encrypted communication
- Online users list
- Wrong password handling
- Chat log generation
- File Sharing
- Private Messaging
- Group Chat Rooms
- Database Integration
- Cloud Deployment
- Mobile Application
- Voice & Video Calling
- TLS Secured Connections
- Secure Internal Communication
- Educational Networking Projects
- Cybersecurity Demonstrations
- Real-Time Messaging Systems
- Lightweight Communication Platforms
Anmol B.E. Computer Science & Engineering Chandigarh College of Engineering & Technology (Degree Wing)
This project is developed for academic and educational purposes.