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
Pytorch Implementation of Google's Parallel Tacotron 2: A Non-Autoregressive Neural TTS Model with Differentiable Duration Modeling

Parallel Tacotron2 Pytorch Implementation of Google's Parallel Tacotron 2: A Non-Autoregressive Neural TTS Model with Differentiable Duration Modeling

Keon Lee 170 Dec 27, 2022
Open source repository for the code accompanying the paper 'Non-Rigid Neural Radiance Fields Reconstruction and Novel View Synthesis of a Deforming Scene from Monocular Video'.

Non-Rigid Neural Radiance Fields This is the official repository for the project "Non-Rigid Neural Radiance Fields: Reconstruction and Novel View Synt

Facebook Research 296 Dec 29, 2022
FG-transformer-TTS Fine-grained style control in transformer-based text-to-speech synthesis

LST-TTS Official implementation for the paper Fine-grained style control in transformer-based text-to-speech synthesis. Submitted to ICASSP 2022. Audi

Li-Wei Chen 64 Dec 30, 2022
Deep Learning for Time Series Forecasting.

nixtlats:Deep Learning for Time Series Forecasting [nikstla] (noun, nahuatl) Period of time. State-of-the-art time series forecasting for pytorch. Nix

Nixtla 5 Dec 06, 2022
Visualizer using audio and semantic analysis to explore BigGAN (Brock et al., 2018) latent space.

BigGAN Audio Visualizer Description This visualizer explores BigGAN (Brock et al., 2018) latent space by using pitch/tempo of an audio file to generat

Rush Kapoor 2 Nov 21, 2022
wlad 2 Dec 19, 2022
Code for our paper at ECCV 2020: Post-Training Piecewise Linear Quantization for Deep Neural Networks

PWLQ Updates 2020/07/16 - We are working on getting permission from our institution to release our source code. We will release it once we are granted

54 Dec 15, 2022
Forecasting Nonverbal Social Signals during Dyadic Interactions with Generative Adversarial Neural Networks

ForecastingNonverbalSignals This is the implementation for the paper Forecasting Nonverbal Social Signals during Dyadic Interactions with Generative A

1 Feb 10, 2022
The code of “Similarity Reasoning and Filtration for Image-Text Matching” [AAAI2021]

SGRAF PyTorch implementation for AAAI2021 paper of “Similarity Reasoning and Filtration for Image-Text Matching”. It is built on top of the SCAN and C

Ronnie_IIAU 149 Dec 22, 2022
PyTorch trainer and model for Sequence Classification

PyTorch-trainer-and-model-for-Sequence-Classification After cloning the repository, modify your training data so that the training data is a .csv file

NhanTieu 2 Dec 09, 2022
Vowpal Wabbit is a machine learning system which pushes the frontier of machine learning with techniques such as online, hashing, allreduce, reductions, learning2search, active, and interactive learning.

This is the Vowpal Wabbit fast online learning code. Why Vowpal Wabbit? Vowpal Wabbit is a machine learning system which pushes the frontier of machin

Vowpal Wabbit 8.1k Jan 06, 2023
Neural Lexicon Reader: Reduce Pronunciation Errors in End-to-end TTS by Leveraging External Textual Knowledge

Neural Lexicon Reader: Reduce Pronunciation Errors in End-to-end TTS by Leveraging External Textual Knowledge This is an implementation of the paper,

Mutian He 19 Oct 14, 2022
The repository offers the official implementation of our BMVC 2021 paper in PyTorch.

CrossMLP Cascaded Cross MLP-Mixer GANs for Cross-View Image Translation Bin Ren1, Hao Tang2, Nicu Sebe1. 1University of Trento, Italy, 2ETH, Switzerla

Bingoren 16 Jul 27, 2022
Joint deep network for feature line detection and description

SOLD² - Self-supervised Occlusion-aware Line Description and Detection This repository contains the implementation of the paper: SOLD² : Self-supervis

Computer Vision and Geometry Lab 427 Dec 27, 2022
NVIDIA Deep Learning Examples for Tensor Cores

NVIDIA Deep Learning Examples for Tensor Cores Introduction This repository provides State-of-the-Art Deep Learning examples that are easy to train an

NVIDIA Corporation 10k Dec 31, 2022
A large-scale video dataset for the training and evaluation of 3D human pose estimation models

ASPset-510 ASPset-510 (Australian Sports Pose Dataset) is a large-scale video dataset for the training and evaluation of 3D human pose estimation mode

Aiden Nibali 36 Oct 30, 2022
A more easy-to-use implementation of KPConv based on PyTorch.

A more easy-to-use implementation of KPConv This repo contains a more easy-to-use implementation of KPConv based on PyTorch. Introduction KPConv is a

Zheng Qin 36 Dec 29, 2022
Self-Supervised Contrastive Learning of Music Spectrograms

Self-Supervised Music Analysis Self-Supervised Contrastive Learning of Music Spectrograms Dataset Songs on the Billboard Year End Hot 100 were collect

27 Dec 10, 2022
Six - a Python 2 and 3 compatibility library

Six is a Python 2 and 3 compatibility library. It provides utility functions for smoothing over the differences between the Python versions with the g

Benjamin Peterson 919 Dec 28, 2022
Implementation of ConvMixer in TensorFlow and Keras

ConvMixer ConvMixer, an extremely simple model that is similar in spirit to the ViT and the even-more-basic MLP-Mixer in that it operates directly on

Sayan Nath 8 Oct 03, 2022