Encrypted TCP messaging system with Python server and C++ clients for University project.
- Server: Python 3.12+.
- Client: C++17, Boost.Asio, Crypto++ (RSA-1024, AES-128-CBC)
- CMake/Make
The server runs by default at localhost:1357, unless defined to use a different port at myport.info.
It listens for incoming TCP traffic from Clients and responds to the incoming requests.
- Registration of a new user
- List existing clients (not including the requester client)
- Get Public key of another client
- Send message to another client (saves the waiting message in DB)
- List awaiting messages (of the requester client)
The client program prints a menu to the console to allow the user to choose the wanted action to commit.
It communicates with the server as defnied at server.info (or uses default localhost:1357)
- Register (only available if
my.infois not existing or invalid) - List clients (available contacts)
- Request public key of another client
- Request to get awaiting messages
- Send a text message to another client
- Request symmetric key of another client
- Send symmetric key to another client
- Send a file to another client
- Exit the program
Can be started from the root of the project with:
make start-serverOr from src/server with:
python3 main.pyBuild the client from the root of the project with:
make rebuildThis will generate the binary file in src/client/build folder.
You can copy it to any path that you'd like to start the client from, or start from there (and add a server.info file if needed).
And start the client with:
./clientNote
server.info and my.info (if already registered) should exist in the same path of the executable, where you run the program from in order to be recognized.