Empowering journalists and whistleblowers

Overview

Onymochat

Empowering journalists and whistleblowers

Version Python Versions Release Testted_On MIT License PR's Welcome

Onymochat is an end-to-end encrypted, decentralized, anonymous chat application. You can also host your anonymous .onion webpage with Onymochat.

  • Onymochat works over the Tor.
  • Anyone can start their own chat server from their own PC.
  • It's end-to-end encrypted.
  • It's basically magic.

Features

  • Start your own chat server for two or more users from your own PC.
  • Users can get connected to a chat server using the public key of the server.
  • You can launch your chat client and chat with anyone who has your public key and server details (after he/she/they joins the server).
  • You can launch your own anonymous .onion webpage with Onymochat. You can use this anonymous website for your journalistic works and whistleblowing.

You don't have to rely upon any third-party app to provide you with a platform/server to anonymously chat with your friend. You can host your own server and if the person you want to chat with has the server's public key, he/she/they can join the server with his/her/their chat client and chat with you.

Multiple people can use a single chat server. The chat data is deleted whenever the server is closed. The chat is end to end encrypted, so even if someone hacks into the server somehow, they won't be able to get to know what two people are talking about. It uses 4096 bit RSA keys for encryption. You connect to the chat server over the Tor network, which gives you anonymity.

Security

Let's see what makes Onyomochat a secure chat application:

  • End-to-end 4096 bit RSA encryption for messages.
  • Version 3 Onion Service for your .onion webpage.
  • Version 3 Onion Service for your chat server.
  • Connection to server over the Tor network.

Installation

Environment Setup

Onymochat requires Python 3.9 or above to run. I have tested it with Python 3.9. Make sure that you have Python added to your PATH. When you install Python in your Windows system, make sure to check 'Add Python 3.x to PATH'. If you forget to do it, see this tutorial to know how to add Python to your PATH for Windows.

Install Python

For Windows and Mac

Download Python 3.9 from here. Use the installer to install Python in your System. Download 'macOS 64-bit universal2 installer' for Mac OS. Download 'Windows x86-64 executable installer' for your Windows 64 Bit system and 'Windows x86 executable installer' for Windows 32 bit system.

For Linux

Use the following command to install Python 3.9 on your Linux system.

apt-get install python3.9

Check pip

Make sure you have pip installed in your system. Use the following command to check if you have pip installed.

pip --version

If you see a message like 'pip 21.2.2' then you have pip installed on your system. Otherwise, follow this tutorial to install pip in your system. Generally, Python comes with an ensurepip module, which can install pip in a Python environment.

python -m ensurepip --upgrade

Download Repository

Go to the GitHub repository of Onymochat: https://github.com/SamratDuttaOfficial/onymochat

Click on the green 'Code' button and click on 'Download ZIP' and unzip the archive somewhere to use Onymochat.

Or, use the command below if you have git installed in your system.

git clone https://github.com/SamratDuttaOfficial/onymochat

Install Requirements

Open up your terminal (CMD on Windows) and go to the folder where you've cloned/unzipped Onymochat. Example:

cd C:\User\Desktop\Onymochat-master

Then install all the requirements from the requirements.txt file.

Windows:

pip install -r requirements.txt

Linux and Mac OS:

pip3 install -r requirements.txt

If you're on Linux, you might need to install Tkinter separately in the following way:

sudo apt install python3-tk

This will install all of the requirements, except Tor.

Install Tor

Download and install Tor browser from the official Tor Project website: https://www.torproject.org/download/

Take a note of where you're installing Tor/Tor Browser, it will be required later.

How to Use

After installation, open the 'onymochat' subdirectory in your terminal. This directory should have a file like run_onymochat.py. Run this file.

python run_onymochat.py

If you are on Linux, run that file using the following command instead:

python3 run_onymochat.py

This will run the Onymochat program in your terminal. This will greet you with a menu. Just input the number of the option you want to go to, and hit the enter button.

First, configure Onymochat with Tor.

Configure Onymocaht with Tor

Run the program and go to option 0 (zero).

Then, on the next prompt, enter the path to tor.exe in the TorBrowser folder. This is important to configure Onymochat with Tor. You have to do this step only once after installation. Paste the path to tor.exe in the TorBrowser (or any similar name) folder.

Example (For Windows): C:\user\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe

Example (For Mac): Applications\TorBrowser.app\Tor\tor.real

Linux users just write 'tor' without the quotations.

Now you are ready to use Onymochat

Things You Can Do

Here are all the things you can do with Onymochat.

  1. Create new hidden service and chat server
  2. Generate encryption keys for chat
  3. Run chat client
  4. Create onion webpage
  5. Generate QR codes for your encryption keys
  6. Generate QR codes for other keys
  7. Delete all saved keys
  8. Exit

How to Chat?

Here are some steps you need to follow to chat with someone through Onymochat.

CAUTION: NEVER SHARE ANY OF YOUR PRIVATE KEYS WITH ANYONE

Step 1

First, select option 1 to create a new hidden service and server and follow the instructions given in your terminal/command window. This will be the server where the chat data will be temporarily saved (all chat data will be lost when the hidden service and server is closed). You can press Ctrl + C to close this hidden service and server when you are done chatting.

Then, share the hidden service public key with someone you want to chat with. You can do it in person by meeting that person, or through any other communication method. You can use the same hidden service (same public key) to chat with multiple persons but this comes with the risk of sharing the same keys with everyone, and someone might use them later to spam you. Or, the other person, with whom you want to chat with, can provide you with his/her/their hidden service public key and you can use it too.

Step 2

Select option 2 to generate encryption keys for your chat. You need to share your public key with any person you want to chat with.

Step 3

Select option 3 to run your chat client. There you won't need to create any new encryption keys for chatting if you don't want to. Creating more than one key will be very hard to manage and might be the reason of some problems in future.

You will need to enter your or the other person's hidden service and server's public key and also the other person's public key for encryption to chat with that person.

How to Create an Anonymous (.onion) Webpage

Step 1

In the 'onymochat' directory, go to the 'onion_webpage' directory. Edit the index.html HTML according to your preference. This will be the page for your anonymous webpage.

Step 2

Select option 4 from the main menu. You can generate a new URL for your .onion webpage and save the private key of that webpage to resume the webpage later with the same URL. Or, you can use a pre-saved private key to resume your website with a particular URL you've generated before.

Generate QR Codes for Encryption Keys

Option 5, and 6 is to generate QR codes for different keys used in Onymochat. These QR codes are saved in \files\qr_codes. You can print them and share them with other people you want to communicate with.

Delete all saved keys and QR codes

Use option 7 to delete all saved public and private keys and QR codes from your system. Use this option only when you suspect a security breach.

Exit Program

Exit the program by selecting option 8 from the main menu.


Author

Created by Samrat Dutta

Github: https://github.com/SamratDuttaOfficial

Linkedin: https://www.linkedin.com/in/SamratDuttaOfficial

Buy me a coffee: https://www.buymeacoffee.com/SamratDutta


Github

Please visit the Github repository to download Onymochat and see a quick tutorial.

https://github.com/SamratDuttaOfficial/onymochat

Pull requests are always welcome.

You might also like...
All the essential resources and template code needed to understand and practice data structures and algorithms in python with few small projects to demonstrate their practical application.

Data Structures and Algorithms Python INDEX 1. Resources - Books Data Structures - Reema Thareja competitiveCoding Big-O Cheat Sheet DAA Syllabus Inte

Implement face detection, and age and gender classification, and emotion classification.
Implement face detection, and age and gender classification, and emotion classification.

YOLO Keras Face Detection Implement Face detection, and Age and Gender Classification, and Emotion Classification. (image from wider face dataset) Ove

PyKale is a PyTorch library for multimodal learning and transfer learning as well as deep learning and dimensionality reduction on graphs, images, texts, and videos
PyKale is a PyTorch library for multimodal learning and transfer learning as well as deep learning and dimensionality reduction on graphs, images, texts, and videos

PyKale is a PyTorch library for multimodal learning and transfer learning as well as deep learning and dimensionality reduction on graphs, images, texts, and videos. By adopting a unified pipeline-based API design, PyKale enforces standardization and minimalism, via reusing existing resources, reducing repetitions and redundancy, and recycling learning models across areas.

[CVPR 21] Vectorization and Rasterization: Self-Supervised Learning for Sketch and Handwriting, IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2021.
[CVPR 21] Vectorization and Rasterization: Self-Supervised Learning for Sketch and Handwriting, IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2021.

Vectorization and Rasterization: Self-Supervised Learning for Sketch and Handwriting, CVPR 2021. Ayan Kumar Bhunia, Pinaki nath Chowdhury, Yongxin Yan

Episodic Transformer (E.T.) is a novel attention-based architecture for vision-and-language navigation. E.T. is based on a multimodal transformer that encodes language inputs and the full episode history of visual observations and actions. Pretrained SOTA Deep Learning models, callbacks and more for research and production with PyTorch Lightning and PyTorch
Pretrained SOTA Deep Learning models, callbacks and more for research and production with PyTorch Lightning and PyTorch

Pretrained SOTA Deep Learning models, callbacks and more for research and production with PyTorch Lightning and PyTorch

This is the official repo for TransFill:  Reference-guided Image Inpainting by Merging Multiple Color and Spatial Transformations at CVPR'21. According to some product reasons, we are not planning to release the training/testing codes and models. However, we will release the dataset and the scripts to prepare the dataset. I have created this Virtual Paint Program, in this you can paint(draw) on your screen using hand gestures, created in Python-3 using OpenCV and Mediapipe library. Gestures :-  Index Finger for drawing and Index+Middle Finger for changing position and objects.
DIT is a DTLS MitM proxy implemented in Python 3. It can intercept, manipulate and suppress datagrams between two DTLS endpoints and supports psk-based and certificate-based authentication schemes (RSA + ECC).

DIT - DTLS Interception Tool DIT is a MitM proxy tool to intercept DTLS traffic. It can intercept, manipulate and/or suppress DTLS datagrams between t

Owner
Samrat Dutta
Developer, designer, writer. Developer of CoWiseCare.
Samrat Dutta
Pre-trained BERT Models for Ancient and Medieval Greek, and associated code for LaTeCH 2021 paper titled - "A Pilot Study for BERT Language Modelling and Morphological Analysis for Ancient and Medieval Greek"

Ancient Greek BERT The first and only available Ancient Greek sub-word BERT model! State-of-the-art post fine-tuning on Part-of-Speech Tagging and Mor

Pranaydeep Singh 22 Dec 8, 2022
An image base contains 490 images for learning (400 cars and 90 boats), and another 21 images for testingAn image base contains 490 images for learning (400 cars and 90 boats), and another 21 images for testing

SVM Données Une base d’images contient 490 images pour l’apprentissage (400 voitures et 90 bateaux), et encore 21 images pour fait des tests. Prétrait

Achraf Rahouti 3 Nov 30, 2021
Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

eXtreme Gradient Boosting Community | Documentation | Resources | Contributors | Release Notes XGBoost is an optimized distributed gradient boosting l

Distributed (Deep) Machine Learning Community 23.6k Dec 31, 2022
Python Library for learning (Structure and Parameter) and inference (Statistical and Causal) in Bayesian Networks.

pgmpy pgmpy is a python library for working with Probabilistic Graphical Models. Documentation and list of algorithms supported is at our official sit

pgmpy 2.2k Jan 3, 2023
High performance, easy-to-use, and scalable machine learning (ML) package, including linear model (LR), factorization machines (FM), and field-aware factorization machines (FFM) for Python and CLI interface.

What is xLearn? xLearn is a high performance, easy-to-use, and scalable machine learning package that contains linear model (LR), factorization machin

Chao Ma 3k Jan 3, 2023
This repository is related to an Arabic tutorial, within the tutorial we discuss the common data structure and algorithms and their worst and best case for each, then implement the code using Python.

Data Structure and Algorithms with Python This repository is related to the Arabic tutorial here, within the tutorial we discuss the common data struc

Mohamed Ayman 33 Dec 2, 2022
Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

eXtreme Gradient Boosting Community | Documentation | Resources | Contributors | Release Notes XGBoost is an optimized distributed gradient boosting l

Distributed (Deep) Machine Learning Community 20.6k Feb 13, 2021
High performance, easy-to-use, and scalable machine learning (ML) package, including linear model (LR), factorization machines (FM), and field-aware factorization machines (FFM) for Python and CLI interface.

What is xLearn? xLearn is a high performance, easy-to-use, and scalable machine learning package that contains linear model (LR), factorization machin

Chao Ma 2.8k Feb 12, 2021
BBB streaming without Xorg and Pulseaudio and Chromium and other nonsense (heavily WIP)

BBB Streamer NG? Makes a conference like this... ...streamable like this! I also recorded a small video showing the basic features: https://www.youtub

Lukas Schauer 60 Oct 21, 2022