Git Product home page Git Product logo

gridhead / sanctuary-zero Goto Github PK

View Code? Open in Web Editor NEW
56.0 1.0 34.0 39.17 MB

A command-line bound implementation of secure synchronous lightweight chatroom with zero logging and total transience built using WebSockets, Fernet Cryptography, Asyncio and Prompt Toolkit

License: GNU General Public License v3.0

Python 100.00%
secure-messenger websocket-chat fernet-encryption asyncio prompt-toolkit hacktoberfest

sanctuary-zero's Introduction

sanctuary-zero

A command-line bound implementation of secure synchronous lightweight chatroom with zero logging and total transience built using WebSockets, Fernet Cryptography, Asyncio and Prompt Toolkit

Good news!

This project is now listed in the list of Projects using Python Prompt Toolkit.

Features

  1. Provides real-time conversation using synchronous WebSocket objects
  2. Incredibly lightweight with memory usage as low as just 4MB over Python runtime
  3. Restricted console refresh rate and native support for SSH, CHROOT and RDP
  4. Zero logging or data storage to minimize database vulnerabilities
  5. Accessible across internet with both IPv4 and IPv6 support by-design
  6. No-frills user alias and random-generated keys for chatroom creation
  7. Hardened protection using password-based Fernet symmetric-key cryptography
  8. Transient chatrooms stay valid as long as at least one user is present
  9. State-of-the-art active chatroom and user session management
  10. Convenient userlist and casted message history maintenance
  11. Maintain low profile and avoid detection by limiting network activity to a minimum
  12. Prevent continuous polling by optimizing message transfers on said events

Looks exciting?

Jump right into the project wiki to know more about it.

  1. Home
  2. Client setup
  3. Server setup
  4. Fernet Cryptography
  5. Contributors

Platforms supported

  1. GNU/Linux (Tested on Arch Linux, Fedora 32, Ubuntu 20.04)
  2. Microsoft Windows (Tested on Windows 10 Build 1909)

Screenshots

Server

Client

sanctuary-zero's People

Contributors

ahmadsyafrudin avatar dependabot[bot] avatar gilmouta avatar gitarthasarma avatar gridhead avatar melsaa avatar nat236919 avatar pranav11p avatar s0umadeep avatar thevivekmnair avatar vinmay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

sanctuary-zero's Issues

'clear' is not recognized

Description

As written, a terminal is cleared using os.system("clear"); however, a Windows' clear command does not use clear, instead, it uses cls. Therefore, I would suggest we check the OS before using clearing command.

Screenshot

image

Facilitate a way to strengthen Fernet without PKCS

Fernet is a symmetric-key cryptography so it has its own set of vulnerabilities. How can we make sure that the end-to-end encryption scenario is strengthened all while not making it as complicated as public-key cryptography standard?

The time shown at user prompt stays constant

It usually picks the time when the response was asked and gets refreshed only when the message is sent and a new input call is triggered. The usual behaviour of it should be for the prompt to go on changing with respect to time.

Send messages specifically to a chatroom

The legacy method checks for messages at the client-side and outputs it only if it is subjected to the chatroom that the user has joined. This would lead to network usages even when there is no one sending anything in the chatroom.

inconsistency in chatroom ID generated at client side

Since the chatroom generated on new user login are generated at random. there may occur a clash, In such an event two users may land up in the same chatroom without explicitly joining. To create such a condition try replacing the function randgene in cnew.py to give a constant chatroom ID. Possible solution can be generating the chatroom ID from server side. Please correct, if I am wrong.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.