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.

Owner
Samrat Dutta
Developer, designer, writer. Developer of CoWiseCare.
Samrat Dutta
PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition, CVPR 2018

PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place

Mikaela Uy 294 Dec 12, 2022
FaceAnon - Anonymize people in images and videos using yolov5-crowdhuman

Face Anonymizer Blur faces from image and video files in /input/ folder. Require

22 Nov 03, 2022
deep-prae

Deep Probabilistic Accelerated Evaluation (Deep-PrAE) Our work presents an efficient rare event simulation methodology for black box autonomy using Im

Safe AI Lab 4 Apr 17, 2021
SimpleDepthEstimation - An unified codebase for NN-based monocular depth estimation methods

SimpleDepthEstimation Introduction This is an unified codebase for NN-based monocular depth estimation methods, the framework is based on detectron2 (

8 Dec 13, 2022
Cobalt Strike teamserver detection.

Cobalt-Strike-det Cobalt Strike teamserver detection. usage: cobaltstrike_verify.py [-l TARGETS] [-t THREADS] optional arguments: -h, --help show this

TimWhite 17 Sep 27, 2022
A hobby project which includes a hand-gesture based virtual piano using a mobile phone camera and OpenCV library functions

Overview This is a hobby project which includes a hand-gesture controlled virtual piano using an android phone camera and some OpenCV library. My moti

Abhinav Gupta 1 Nov 19, 2021
Pytorch-Swin-Unet-V2 - a modified version of Swin Unet based on Swin Transfomer V2

Swin Unet V2 Swin Unet V2 is a modified version of Swin Unet arxiv based on Swin

Chenxu Peng 26 Dec 03, 2022
OpenABC-D: A Large-Scale Dataset For Machine Learning Guided Integrated Circuit Synthesis

OpenABC-D: A Large-Scale Dataset For Machine Learning Guided Integrated Circuit Synthesis Overview OpenABC-D is a large-scale labeled dataset generate

NYU Machine-Learning guided Design Automation (MLDA) 31 Nov 22, 2022
UniFormer - official implementation of UniFormer

UniFormer This repo is the official implementation of "Uniformer: Unified Transf

SenseTime X-Lab 573 Jan 04, 2023
PEPit is a package enabling computer-assisted worst-case analyses of first-order optimization methods.

PEPit: Performance Estimation in Python This open source Python library provides a generic way to use PEP framework in Python. Performance estimation

Baptiste 53 Nov 16, 2022
E2EC: An End-to-End Contour-based Method for High-Quality High-Speed Instance Segmentation

E2EC: An End-to-End Contour-based Method for High-Quality High-Speed Instance Segmentation E2EC: An End-to-End Contour-based Method for High-Quality H

zhangtao 146 Dec 29, 2022
'Aligned mixture of latent dynamical systems' (amLDS) for stimulus decoding probabilistic manifold alignment across animals. P. Herrero-Vidal et al. NeurIPS 2021 code.

Across-animal odor decoding by probabilistic manifold alignment (NeurIPS 2021) This repository is the official implementation of aligned mixture of la

Pedro Herrero-Vidal 3 Jul 12, 2022
A simple Python configuration file operator.

A simple Python configuration file operator This project provides a common way to read configurations using config42. Installation It is possible to i

Scott Lau 2 Nov 08, 2021
Pytorch implementation of CoCon: A Self-Supervised Approach for Controlled Text Generation

COCON_ICLR2021 This is our Pytorch implementation of COCON. CoCon: A Self-Supervised Approach for Controlled Text Generation (ICLR 2021) Alvin Chan, Y

alvinchangw 79 Dec 18, 2022
CoTr: Efficiently Bridging CNN and Transformer for 3D Medical Image Segmentation

CoTr: Efficient 3D Medical Image Segmentation by bridging CNN and Transformer This is the official pytorch implementation of the CoTr: Paper: CoTr: Ef

218 Dec 25, 2022
Job-Recommend-Competition - Vectorwise Interpretable Attentions for Multimodal Tabular Data

SiD - Simple Deep Model Vectorwise Interpretable Attentions for Multimodal Tabul

Jungwoo Park 40 Dec 22, 2022
Changing the Mind of Transformers for Topically-Controllable Language Generation

We will first introduce the how to run the IPython notebook demo by downloading our pretrained models. Then, we will introduce how to run our training and evaluation code.

IESL 20 Dec 06, 2022
A PyTorch-centric hybrid classical-quantum machine learning framework

torchquantum A PyTorch-centric hybrid classical-quantum dynamic neural networks framework. News Add a simple example script using quantum gates to do

MIT HAN Lab 400 Jan 02, 2023
[ECCV 2020] XingGAN for Person Image Generation

Contents XingGAN or CrossingGAN Installation Dataset Preparation Generating Images Using Pretrained Model Train and Test New Models Evaluation Acknowl

Hao Tang 218 Oct 29, 2022
A Novel Incremental Learning Driven Instance Segmentation Framework to Recognize Highly Cluttered Instances of the Contraband Items

A Novel Incremental Learning Driven Instance Segmentation Framework to Recognize Highly Cluttered Instances of the Contraband Items This repository co

Taimur Hassan 3 Mar 16, 2022