Reference client for Bitmessage: a P2P encrypted decentralised communication protocol:

Overview

PyBitmessage

Bitmessage is a P2P communication protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication, which means that the sender of a message cannot be spoofed. BM aims to hide metadata from passive eavesdroppers like those ongoing warrantless wiretapping programs. Hence the sender and receiver of Bitmessages stay anonymous.

Development

Bitmessage is a collaborative project. You are welcome to submit pull requests although if you plan to put a non-trivial amount of work into coding new features, it is recommended that you first describe your ideas in the separate issue.

Feel welcome to join chan "bitmessage", BM-2cWy7cvHoq3f1rYMerRJp8PT653jjSuEdY

References

Comments
  • Transport Layer Security

    Transport Layer Security

    Currently peer-to-peer communication occurs over insecure sockets. Wrapping these sockets in SSL is done via ssl.wrap_socket, the resulting object has most of the same methods as a standard socket.

    Each peer could generate and self-sign a certificate and be configured to accept any certificate that it is presented. (We don't really care who we're connecting to as long as its over a secure channel, for now)

    enhancement 
    opened by r14c 59
  • Crash on Windows (was: High memory usage)

    Crash on Windows (was: High memory usage)

    Bitmassage uses over 1GB memory. It might be caused by a ton of threads for many connections. I suggest using "gevent" to reduce the number. Thank you.

    bug duplicate 
    opened by WhiteCat6142 52
  • python uses 100% CPU

    python uses 100% CPU

    On my Xubuntu 12.10 with xfce-desktop sometimes (not always) pyBitmessage causes a python process that uses 100% of one complete CPU:

    #ps aux|grep bitmes
    

    ruben     2703 88.3  1.7 1870944 70304 ?       Sl   20:44  19:14 python bitmessagemain.py
    

    If I close the GUI, that process stays and continues to waste the CPU

    only

    #kill -kill 2703
    

    stops bitmessage and releases the CPU

    opened by rubo77 40
  • setup.py is package manager incompatible

    setup.py is package manager incompatible

    setup.py is interactive, so it's broken for any distro that your script doesn't automagically detect. Why does it even attempt to do that? Setuptools and distutils are distro-agnostic.

    question 
    opened by hasufell 32
  • Fix broken tests

    Fix broken tests

    • setting BITMESSAGE_HOME doesn't always work, so we wrote a function to do this
    • logger and BMConfigParser now clear old config when loading new
    • add method for flushing log files
    • rework logic in test_logger
    • detect thread names on UNIX-like OSes
    • be more accurate when starting or stopping a process, better waiting mechanisms
    • add extra cleanup during TestProcess start
    bug test build 
    opened by PeterSurda 29
  • flatpak-builder support

    flatpak-builder support

    Recent distributions like Debian bullseye don't support QT4 anymore. This pull request provides a flatpak-builder configuration and instructions how to package PyBitmessage as a flatpak application which bundles QT4.

    This pull request is also a necessary requirement for https://github.com/Bitmessage/PyBitmessage/issues/1607

    duplicate packaging build 
    opened by zciendor 27
  • Follow PEP8 and trust Guido

    Follow PEP8 and trust Guido

    Hello!

    This is an appeal to contributors: write more pythonic code! Please read PEP8 carefully and don't trust linters bugs.

    About 79 characters line length limit, I repeat it here: readability has nothing to do with your screen size.

    Not sure is it correct to add symlink into repository. Some setuptools commands wont work without it.

    opened by g1itch 26
  • bitmessage dont start up any more when database too large or related

    bitmessage dont start up any more when database too large or related

    memory overflow at 1.79gigabytes ram consumption on windows 32bit machine running provided latest win32 binary of bitmessage.exe

    bitmessage.exe recently crashed during runtime with qt4...dll gui or similar, and now never starts up any more in the end, as it crashes with unknown memory error whenever it is started up now and taskmanager and other process related tools show that its memory consumption grows up til exactly right below 1.8gigs of ram then it gives this crash. reproducable.

    some days ago I think there was a post on the general channel public shared address list talking exactly about this phenomenon back then already

    apparently now its happening for me.

    bitmessage must not read the total database and keep too many objects in ram, but should only read the database if needed and not store too many objects in ram.

    bug 
    opened by subscribernamegoeshere 26
  • Sending messages to yourself

    Sending messages to yourself

    It appears that the current implementation of PyBitmessage does not support sending of messages to yourself, or other addresses that you own. (within the same client instance) When I comment this section of the code out, the client hangs on "Sending public key request. Waiting for reply."

    What type of development needs to be done in order to support this? Email and Bitcoin both support sending to your own address(es), thus I think we should enable this for Bitmessage.

    Thoughts?

    opened by acejam 26
  • [Feature Request] Ubuntu integration: Application Indicator, Messaging menu, Launcher shortcuts

    [Feature Request] Ubuntu integration: Application Indicator, Messaging menu, Launcher shortcuts

    • [x] Application Indicator This provides access to key features of Bitmessage.
      • [x] mono icon (compare /usr/share/icons/ubuntu-mono-dark/status/24)
    • [x] Messaging menu The entry could look like this:
      • Pybitmessage
        • New message
        • Contacts
        • 1 new message (from John Doe)
    • [x] Launcher shortcut This is very easy to implement when the application supports command line options.
    • [x] Notify OSD This informs the user about new messages and connection loss.
    • [x] Most importantly, Ubuntu users have no easy way to install Pybitmessage. Even though it may be too early to get Pybitmessage into the Debian repositories, there are several options to make it more convenient to install this application:
      • Provide a single official .deb file
      • Provide a portable statically linked executable
      • Provide a PPA
    opened by omyno 26
  • UPnP doesn't always work

    UPnP doesn't always work

    On my system UPnP doesn't work. UPnP is checked, some port (18XXX) is specified, but UPnP page on the router never shows bitmessage. It does show ZeroNet and Skype, just not bitmessage.

    FreeBSD 10.3

    (Before I was running with manually opened port and it worked fine.)

    bug 
    opened by yurivict 24
  • Incorrect stream offset in `HandleDisseminatePreEncryptedMsg`

    Incorrect stream offset in `HandleDisseminatePreEncryptedMsg`

    A user wanted to use HandleDisseminatePreEncryptedMsg API call and it didn't appear to work. After reviewing the code and specification, it looks like when decoding destination stream:

    https://github.com/Bitmessage/PyBitmessage/blob/a5a56fe7f1af86f5b8c40ee7d6307df62e0e6b3e/src/api.py#L1313

    it uses a protocol v2 specification, and not protocol v3. In v2, the offset for the stream for a message starts at byte 16, but in v3 it starts at a variable position (at the moment it usually is byte 21, which allows for a quick workaround). This API method was introduced around the same time that v3 came out so I guess someone wasn't paying attention.

    References: v2 specification from wiki: https://wiki.bitmessage.org/index.php?title=Protocol_specification&oldid=23575#msg v3 specification from rtd: https://pybitmessage.readthedocs.io/en/v0.6/protocol.html#object

    opened by PeterSurda 0
  • Add label argument to createChan API endpoint

    Add label argument to createChan API endpoint

    jsonrpclib throws errors sometimes due to the auto-generated labels that are based on the passphrases I set. Example:

    (-32603, '<class 'api.APIError'>:API Error 0021: Unexpected API Failure - bad interpolation variable reference '%(793569%(4"]'')

    This "%(793569%(4"]" is a substring of my label that's based on the passphrase and the error prevents any data from being received.

    Because the passphrases I use are generated in a specific way, I can't just exclude certain character combinations as possibilities. Therefore, I propose adding the ability to set the label at the time of the chan creation, which will allow me to set the label to something different/safer than the passphrase.

    opened by 813492291816 2
  • Bump kivymd from 1.0.2 to 1.1.1

    Bump kivymd from 1.0.2 to 1.1.1

    Bumps kivymd from 1.0.2 to 1.1.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.6.3)
  • v0.6.3(Feb 13, 2018)

    Version 0.6.2 has a bug that can be exploited for remote code execution. This is an emergency release, and 0.6.4 will be released in a couple of days with cleanup originally intended for 0.6.3, and full release notes. Everyone who uses 0.6.2 should upgrade (or, if upgrade is not possible, downgrade).

    Apart from the emergency fix, this release contains a new network subsystem which requires less resources (CPU and memory) and the Dandelion++ protocol extension for enhanced privacy.

    Windows and OSX binaries follow soon.

    Source code(tar.gz)
    Source code(zip)
  • 0.6.3.2(Feb 13, 2018)

    This version is an update on 0.6.3 with a more strict exploit mitigation code. Users of 0.6.2 should either upgrade to 0.6.3.2 or downgrade to 0.6.1.

    February 16th: Windows binary available, signed both with a code signing key and a GPG key. Note: there won't be a 64bit Windows binary for 0.6.3.2 due to a lack of time. The new network subsystem has significantly improved CPU and memory requirements so you shouldn't be running low on memory even with the 32bit binary.

    February 17th: OSX binary available, only GPG signed, will be released code signed in the near future.

    February 19th: OSX code signing delayed for a couple of days for technical reasons.

    Source code(tar.gz)
    Source code(zip)
    bitmessage-v0.6.3.2.dmg(35.47 MB)
    bitmessage-v0.6.3.2.dmg.asc(455 bytes)
    Bitmessage_x86_0.6.3.2.exe(33.78 MB)
    Bitmessage_x86_0.6.3.2.exe.asc(455 bytes)
  • v0.6.2(Mar 1, 2017)

    Usability:

    • many minor usability improvements, in particular helpful for beginners
    • get rid of confusing log messages
    • improved feedback when busy during shutdown
    • UI feedback when problems with proxy
    • UI feedback when local time is wrong
    • UI feedback when C PoW module is not available
    • folder loading performance improved
    • translations updated
    • chan join/create interface redesigned
    • can select OpenCL vendor if multiple are available (previously it would have crashed)
    • locale initialisation fixes
    • contact support form and About dialog show the GIT head
    • added setup.py (setuptools) for easier installation
    • gentle warning if sending to a chan with a too low TTL
    • message retransmit timing now works as the description

    Fixes:

    • networking subsystem stability fixes
    • multiprocessing python PoW fixed
    • message parser fixes
    • many smaller fixes
    • OpenBSD listening socket fix (works IPv4-only mode instead of not at all)

    Backend:

    • try to auto-build PoW module
    • networking subsystem performance improvements
    • refactoring of configuration interface, inventory, downloading and uploading tracking, known nodes and other minor parts
    • refactoring to reduce circular imports and global variables
    • support for OpenSSL 1.1.0 and LibreSSL
    • some network parameters configurable, but mostly only through directly editing keys.dat
    • network settings allow an optimised bootstrap provider mode

    Developers:

    • extended encoding available for testing. Use it by holding Shift while clicking on Send
    • extended encoding can be extended by adding new classes to the "messagetypes" directory
    • directory structure reorganisation to get rid of obsolete code

    Linux:

    • setup.py detects Ubuntu, Debian, Fedora, openSUSE, Gentoo and Guix

    FreeBSD/OpenBSD:

    • separate Makefile for BSD make
    • C PoW core count detection fixes for OpenBSD
    • setup.py detects FreeBSD and OpenBSD

    Windows:

    • improved error handling
    • separate Makefile for Microsoft Visual C++
    • pyinstaller spec file updated
    • 64bit binary does not require MSVC Redistributable 2012 anymore and is mostly built with mingw instead of MSVC
    • updated Python to 2.7.13 and OpenSSL to 1.0.2j/1.0.2k

    OSX:

    • binary works with OpenCL
    • updated to Python 2.7.13 and OpenSSL 1.0.2k

    Infrastructure:

    • 3 additional bootstrap nodes
    • new server for building/testing
    • transifex webhooks automate translation workflow
    • integration with landscape.io for code quality checking
    Source code(tar.gz)
    Source code(zip)
    bitmessage-v0.6.2.dmg(36.09 MB)
    bitmessage-v0.6.2.dmg.asc(473 bytes)
    Bitmessage_x64_0.6.2.exe(32.38 MB)
    Bitmessage_x64_0.6.2.exe.asc(473 bytes)
    Bitmessage_x86_0.6.2.exe(29.10 MB)
    Bitmessage_x86_0.6.2.exe.asc(473 bytes)
    PyBitmessage-0.6.2.tar.gz.asc(473 bytes)
    PyBitmessage-0.6.2.zip.asc(473 bytes)
  • v0.6.1(Aug 21, 2016)

    • Translation update and localisation fixes
    • Minor bug fixes
    • Minor UI improvements
    • Namecoin integration fixed and improved
    • SMTP server and client interface
    • Tor hidden service support
    • C PoW builds and runs on *BSD
    • Windows binary:
      • fixed build
      • upgraded to Python 2.7.12 and OpenSSL 1.0.2h
      • 64bit binary available for download
      • self-built PyInstaller bootloader should trigger fewer antivirus false positives
    • Mac OSX binary:
      • upgraded to Python 2.7.12 and OpenSSL 1.0.2h
    Source code(tar.gz)
    Source code(zip)
    Bitmessage-0.6.1.exe(28.03 MB)
    Bitmessage-0.6.1.exe.asc(473 bytes)
    Bitmessage-0.6.1_64.exe(32.08 MB)
    Bitmessage-0.6.1_64.exe.asc(473 bytes)
    bitmessage-v0.6.1.dmg(39.53 MB)
    bitmessage-v0.6.1.dmg.asc(473 bytes)
Synapse: Matrix reference homeserver

Synapse Contents Introduction About Matrix Support Synapse Installation Connecting to Synapse from a client Registering a new user from a client ACME

matrix.org 10.4k Jan 2, 2023
the first third-party instant messaging client for Google Hangouts

hangups hangups is the first third-party instant messaging client for Google Hangouts. It includes both a Python library and a reference client with a

Tom Dryer 1.7k Dec 25, 2022
A free & open modern, fast email client with user-friendly encryption and privacy features

Welcome to Mailpile! Introduction Mailpile (https://www.mailpile.is/) is a modern, fast web-mail client with user-friendly encryption and privacy feat

mailpile 8.7k Jan 4, 2023
Mysterium the first tool which permits you to retrieve the most part of a Python code even the .py or .pyc was extracted from an executable file, even it is encrypted with every existing encryptage. Mysterium don't make any difference between encrypted and non encrypted files, it can retrieve code from Pyarmor or .pyc files.

Mysterium the first tool which permits you to retrieve the most part of a Python code even the .py or .pyc was extracted from an executable file, even it is encrypted with every existing encryptage. Mysterium don't make any difference between encrypted and non encrypted files, it can retrieve code from Pyarmor or .pyc files.

Venax 116 Dec 21, 2022
Privacy enhanced BitTorrent client with P2P content discovery

Tribler Towards making Bittorrent anonymous and impossible to shut down. We use our own dedicated Tor-like network for anonymous torrent downloading.

null 4.2k Dec 31, 2022
twtxt is a decentralised, minimalist microblogging service for hackers.

twtxt twtxt is a decentralised, minimalist microblogging service for hackers. So you want to get some thoughts out on the internet in a convenient and

buckket 1.8k Jan 9, 2023
Decentralised graph database management system

Decentralised graph database management system To get started clone the repo, and run the command below. python3 database.py Now, create a new termina

Omkar Patil 2 Apr 18, 2022
A p2p chat app for zephyr

A p2p chat app for zephyr

L3gacy B3ta 4 Jun 2, 2021
a decompilation of NAP36 the widevine removal software for amz and nf used by p2p groups until it stoped working due to it using expired cdm keys

NAP36 a decompilation of NAP36 the widevine removal software for amz and nf used by p2p groups until it stoped working due to it useing expired cdm ke

null 9 Aug 29, 2021
Simple P2P application for sending files over open and forwarded network ports.

FileShareV2 A major overhaul to the V1 (now deprecated) FileShare application. V2 brings major improvements in both UI and performance. V2 is now base

Michael Wang 1 Nov 23, 2021
PyTorch implementation of CVPR 2020 paper (Reference-Based Sketch Image Colorization using Augmented-Self Reference and Dense Semantic Correspondence) and pre-trained model on ImageNet dataset

Reference-Based-Sketch-Image-Colorization-ImageNet This is a PyTorch implementation of CVPR 2020 paper (Reference-Based Sketch Image Colorization usin

Yuzhi ZHAO 11 Jul 28, 2022
This repository contains numerical implementation for the paper Intertemporal Pricing under Reference Effects: Integrating Reference Effects and Consumer Heterogeneity.

This repository contains numerical implementation for the paper Intertemporal Pricing under Reference Effects: Integrating Reference Effects and Consumer Heterogeneity.

Hansheng Jiang 6 Nov 18, 2022
A simple Encrypted IM chat software Server & client based on Python3.

SecretBox A simple Encrypted IM chat software Server & client based on Python3. Version 1.0 命令行版 安装步骤 Server 运行pip3 install -r requirements 安装依赖。 运行py

h3h3da 5 Oct 31, 2022
This is a zeep based SOAP client wrapper for simple communication with the Bricknode SOAP API.

This is a zeep based SOAP client wrapper for simple communication with the Bricknode SOAP API.

Nord Fondkommission AB 2 Dec 15, 2021
Standalone script written in Python 3 for generating Reverse Shell one liner snippets and handles the communication between target and client using custom Netcat binaries

Standalone script written in Python 3 for generating Reverse Shell one liner snippets and handles the communication between target and client using custom Netcat binaries. It automates the boring stuff like URL encoding the command and setting up a listener.

Yash Bhardwaj 3 Sep 27, 2022
Clubhouse API written in Python. Standalone client included. For reference and education purposes only.

clubhouse-py is originally developed for the sake of interoperability. Standalone client is also created with very basic features, including but not limited to the audio-chat

null 1.7k Jan 5, 2023
PyBeacon is a collection of scripts for dealing with Cobalt Strike's encrypted traffic.

PyBeacon is a collection of scripts for dealing with Cobalt Strike's encrypted traffic. It can encrypt/decrypt beacon metadata, as well as pa

NCC Group Plc 162 Dec 21, 2022
Generate links that users can use to submit messages encrypted with your public key.

Hawkpost Hawkpost lets you create unique links that you can share with the person that desires to send you important information but doesn't know how

Whitesmith 901 Dec 27, 2022
Generate simple encrypted messages!

Premio's Shift is a very simple text encryption, you can use it to send secret messages to your friends. Table of Content Table of Content How it work

Peterson Adami Candido 3 Aug 6, 2021
Alpkunt 9 Sep 9, 2022