Code Monkey home page Code Monkey logo

crypt-chat's Introduction

Client/Server encrypted chat application Travis ci

Example server running at qinusty.co.uk port 5000

Client command guide

/register <username> <password> is used to register an account with the server /login <username> <password> is used to attempt to authenticate with the server

/msg <username> <message> is used to communicate with a user via username (end to end encryption is used) /gmsg <groupname> <message> is used to communicate with a group via the server, all messages are end to end encrypted however user lists are stored. /exit closes the client and logs out of the server

Requirements

  • Postgresql with database
  • Python 3.4.3 or above
  • Virtualenv

Setup basics

Setup tested on Fedora 23 in Gnome terminal, Python 3.4.3 and virtualenv 15.0.1

git clone [email protected]:Qinusty/Crypt-Chat.git
cd Crypt-Chat/
virtualenv -p python3.4 env

activate the virtual environment

  • bash uses . env/bin/activate
  • fish uses . env/bin/activate.fish

Double check python version with python -V If you are still on python 2.7.x, run future python commands with python3.4 instead of python

Client

Modify config.json and add server details.

pip install -r client-requirements.txt
python Client.py

Server

Install requirements with pip install -r server-requirements.txt

Database configuration

Run commands and authenticate when required. You may need to configure postgres to use md5 authentication. Take a look here pg_hba

psql -U <user> -c 'CREATE DATABASE <dbname>'
psql -U <user> <dbname> < DDL/schema.sql

Configure server and database connection settings via server_config.json

python Server.py

Security disclaimer

I cannot guarantee completely secure communications due the self taught nature of my education on encryption. However the end to end encryption uses 4096 bit RSA keys and uses the PKCS1_OAEP standard for RSA encryption and passwords are locally hashed using SHA512 and transmitted with end to end encryption before being stored on the server's database as the unencrypted hash.

crypt-chat's People

Contributors

qinusty avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

novolei

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.