A very basic E2E encrypted messaging app, made as part of defensive systems course in University. It's a server-client model, in which clients can send files and messages to each other, and the server acts as an intermediate. All messages stored in the server are encrypted, and there's a basic django admin support.
Note that it's very primitive, and due to project requirements it's not robust.
- Python3.6 or higher.
- Windows or Linux OS.
pip install -r requirements.txt
edit the port.info
file with the port you want to have open for clients.
edit the server.info
file with the hostname and port of the server machine.
python main.py server
While running, admin panel is available at localhost:8000/admin
. Default credentials are admin
and admin
.
You will be able to see:
- Registered user and their public keys.
- Pending encrypted messages.
python main.py client
You will have a menu displaying possible actions.
The Fastest way to send a message to another client would be:
- Register (1).
- List clients (2). From the list find the client you wish to send a message to.
- Send or receive a symmetric key (51 or 52).
- Send a message (5).
A longer way to do this, is a step-by-step procedure:
- Register.
- List clients. Find another client.
- Explicitly request the client's public key.
- Send a symmetric key encrypted by the other client's public key.
- Send a message or file, encrypted by a shared symmetric key.
- Request for waiting messages, to see any responses.