All Projects → merrychap → fluffychat

merrychap / fluffychat

Licence: other
🐑 Decentralized chat with private messages and rooms. Messages and files are encrypted using RSA

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to fluffychat

Chatsecure Ios
ChatSecure is a free and open source encrypted chat client for iOS that supports OTR and OMEMO encryption over XMPP.
Stars: ✭ 3,044 (+12076%)
Mutual labels:  encryption, messaging, decentralized
Emberclear
Encrypted Chat. No History. No Logs.
Stars: ✭ 157 (+528%)
Mutual labels:  encryption, messaging
Magma
The magma server daemon, is an encrypted email system with support for SMTP, POP, IMAP, HTTP and MOLTEN,. Additional support for DMTP and DMAP is currently in active development.
Stars: ✭ 1,740 (+6860%)
Mutual labels:  encryption, messaging
Encrypt
🔒 A set of high-level APIs over PointyCastle for two-way cryptography.
Stars: ✭ 199 (+696%)
Mutual labels:  encryption, rsa
Hybrid Crypto Js
RSA+AES hybrid encryption implementation for JavaScript. Works with Node.js, React Native and modern browsers.
Stars: ✭ 87 (+248%)
Mutual labels:  encryption, rsa
Encryptor4j
Strong encryption for Java simplified
Stars: ✭ 92 (+268%)
Mutual labels:  encryption, rsa
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+60588%)
Mutual labels:  encryption, decentralized
Rsa Javascript
rsa-javascript
Stars: ✭ 13 (-48%)
Mutual labels:  encryption, rsa
Photos
[DEPRECATED] Encrypted, secure, decentralized personal data wallet -- technology behind textile.photos
Stars: ✭ 236 (+844%)
Mutual labels:  encryption, decentralized
Lurch
XEP-0384: OMEMO Encryption for libpurple.
Stars: ✭ 245 (+880%)
Mutual labels:  encryption, messaging
conceal-desktop
Conceal Desktop (GUI)
Stars: ✭ 65 (+160%)
Mutual labels:  messaging, decentralized
Vuash
⚠️ Moved to GitLab.
Stars: ✭ 86 (+244%)
Mutual labels:  encryption, messaging
Onionr
Private Decentralized Communication Network 🎭 🧅
Stars: ✭ 84 (+236%)
Mutual labels:  encryption, decentralized
Open Crypto
🔑 Hashing (BCrypt, SHA2, HMAC), encryption (AES), public-key (RSA), and random data generation.
Stars: ✭ 115 (+360%)
Mutual labels:  encryption, rsa
Iotalk
iotalk is a privacy-minded messaging system built on the IOTA Tangle. Messages are encrypted so only the intended recipient can read them.
Stars: ✭ 67 (+168%)
Mutual labels:  encryption, messaging
Easyrsa
Simple and Secure Wrapper for phpseclib
Stars: ✭ 183 (+632%)
Mutual labels:  encryption, rsa
dispersy
The elastic database system. A database designed for P2P-like scenarios, where potentially millions of computers send database updates around.
Stars: ✭ 81 (+224%)
Mutual labels:  messaging, decentralized
Swiftyrsa
RSA public/private key encryption in Swift
Stars: ✭ 894 (+3476%)
Mutual labels:  encryption, rsa
Peergos
A p2p, secure file storage, social network and application protocol
Stars: ✭ 895 (+3480%)
Mutual labels:  encryption, decentralized
Jsrsasign
The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, OCSP, CMS SignedData, TimeStamp, CAdES JSON Web Signature/Token in pure JavaScript.
Stars: ✭ 2,760 (+10940%)
Mutual labels:  encryption, rsa

fluffychat (project is frozen)

General description

You can communicate with people by writing messages and sending different files. This chat provides rooms and private messages between users. Chat is protected by RSA encryption.

Also, you can run several chat entities on the same host. You have to just clone chat in different directories (it will be changed, of course). It's all because of database.db. When you are trying run another entity in the same directory as the first then database.db will be thinking that first entity and yours are the one entity (bad, I know)

For detailed description see DECOMPOSITION.md file.

Future

I want to completely change a structure of fluffychat in the future . For now, it's not really convinient tool and contains many grammar mistakes. Stay tuned, guys! Make fluffychat great again <3

Some details

Chat works only in local networks due to the fact that this is under development.

Network protocol of this chat is too naive. Because of that, I started chat_protocol repository. After this protocol will be finished network functionality of this chat will be replaced with chat_protocol implementation.

Requirements

  • Python 3.*
    • netifaces
    • PyCrypto
    • PyQt5

Architecture

Here will be a little description about architecture.

Example of using

Here will be examples.

Where is log file?

Log file is app.log. You can see it by typing next:

$ vim app.log

How to run application

There are two ways of running chat. If you want to create a new chat, then you should run this:

$ python3 main.py [--create] [--recv-port R]

But if you want to join in existing chat, then you should know IP and connection port of a host sitting in this chat. Also you have to specify port for receiving messages. When you know all this stuff then run next:

$ python3 main.py [-h] [--create] [--host HOST] [--port PORT]
               [--recv-port RECV_PORT] [--gui] [--dis-enc]
Argument Description
--host IP of a remote host
--port Default connection port of a remote host
--recv-port Port for receiving data from other hosts
--create Key for creating new chat
--gui Run chat in GUI mode
--dis-enc Disable RSA encryption. It means when a host from the chat sends you a message it will not be encrypted for you.

Examples

To start typing any command you should at first press "enter" Below is placed example of creating a new chat

$ python3 main.py --create --recv-port 8080
[*] Please, specify your username(a-zA-Z_.):> merrychap
[*] Specify your root path for storing files:> /home/merrychap/Desktop/fluffychat
('192.168.0.102', 8080)

Type "@help" for list of commands with the descriptio

[*] Enter command:> @help

======================================
Type commands with @ on the left side of a command.
List of commands:

+ help : Shows this output
+ room "room_name" : Switches to the room message mode. 
+ add_user : "username" "room_name"
+ users : Shows online users.
+ create_room "roomname" : Creates new room. 
+ user "username" : Switches to the user message mode. 
+ change_root_path "root path" : Changes the directory of storing files
+ change_visibility : Changes your visibility in the chat
+ remove_room "roomname" : Removes created room.
+ username "username" : Changes the current username. 
+ exit : Closes chat.
+ rooms : Shows available rooms.
======================================

The next example is connecting to the existing chat.

$ python3 main.py --host 192.168.0.102 --port 8080 --recv-port 8080
*] Please, specify your username(a-zA-Z_.):> Holo
[*] Specify your root path for storing files:> /home/Holo/Desktop/fluffychat
('192.168.0.103', 8080)

Type "@help" for list of commands with the descriptio

[*] Enter command:> @users

======================================
+ merrychap
+ Holo
======================================

Already done

  • Private messages
  • Rooms
  • Sending files
  • RSA encryption
  • Tests
  • GUI
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].