Skip to content

Backgammonian/Decentralized-Chat-Peer

Repository files navigation

Decentralized-Chat-Peer

Peer (client) of decentralized chat application.
The server side of this app is located in this repo.

Overview

This project is a client of the decentralized chat application. This app works on top of reliable UDP library and establishes encrypted connections using AES-256 and ECDH.
⚠️WARNING: Implemented encryption scheme wasn't thoroughly tested for vulnerabilities such as MITM, replay attack, etc.

Main reason of using UDP instead of TCP is the ability to perform UDP hole punching technique so users that are inside different local networks (i.e. without global IP-addresses) can establish direct connection via Internet with help of specialized rendevous server. After connection is done the peers are able to send text messages and images to each other.

This app can also be hidden in system tray and can send receipt notifications to user.

UPD: Now users can send files of any size and extension to each other! This functionality was borrowed from my previous file sharing project.

How to use tracker?

Tracker recognizes several commands from peers:

  • connect - provides hole-punching technique to connect with other peers. Example: connect Nickname. Peers' nicknames are case sensitive.
  • ping - check connection to tracker manually.
  • time - get tracker's date and time.

Demonstration:

profile-demo chat-demo file-receive-demo file-download-demo

Dependencies: