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)
MoinMoin Wiki Development (2.0+), unstable, for production please use 1.9.x.

MoinMoin - a wiki engine in Python MoinMoin is an easy to use, full-featured and extensible wiki software package written in Python. It can fulfill a

MoinMoin Wiki Engine 240 Dec 22, 2022
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
Web based localization tool with tight version control integration.

Weblate is a copylefted libre software web-based continuous localization system, used by over 1150 libre projects and companies in more than 115 count

Weblate 3.3k Jan 02, 2023
get things from one computer to another, safely

Magic Wormhole Get things from one computer to another, safely. This package provides a library and a command-line tool named wormhole, which makes it

15.4k Jan 01, 2023
Online translation tool

Pootle Docs | Changes | Issues | Community Support | Contributing | Development Channel Pootle is an online translation and localization tool. It work

Translate 1.4k Jan 06, 2023
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 04, 2023
Build SMS applications with Python

RapidSMS RapidSMS is a free and open source framework for building interactive SMS applications, which integrates tightly with Django to provide a ric

RapidSMS 622 Dec 31, 2022
GlobaLeaks is free, open source software enabling anyone to easily set up and maintain a secure whistleblowing platform.

GlobaLeaks is free, open souce software enabling anyone to easily set up and maintain a secure whistleblowing platform. Continous Integration and Test

GlobaLeaks 995 Jan 01, 2023
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
Askbot is a Django/Python Q&A forum. **Contributors README**: https://github.com/ASKBOT/askbot-devel#how-to-contribute. Commercial hosting of Askbot and support are available at https://askbot.com

ATTENTION: master branch is experimental, please read below Askbot - a Django Q&A forum platform This is Askbot project - open source Q&A system, like

ASKBOT 1.5k Dec 28, 2022
Conference planning tool: CfP, scheduling, speaker management

pretalx is a conference planning tool focused on providing the best experience for organisers, speakers, reviewers, and attendees alike. It handles th

496 Dec 31, 2022
Insular email distribution - mail server as Docker images

Mailu is a simple yet full-featured mail server as a set of Docker images. It is free software (both as in free beer and as in free speech), open to s

Mailu 4.2k Jan 04, 2023
Read/sync your IMAP mailboxes (python2)

Upstream status (master branch): Upstream status (next branch): Financial contributors: Links: Official github code repository: offlineimap Website: w

OfflineIMAP 1.7k Dec 29, 2022
PyZMQ: Python bindings for zeromq

PyZMQ: Python bindings for ØMQ This package contains Python bindings for ØMQ. ØMQ is a lightweight and fast messaging implementation. PyZMQ should wor

The ZeroMQ project 3.2k Jan 02, 2023
Reference client for Bitmessage: a P2P encrypted decentralised communication protocol:

PyBitmessage Bitmessage is a P2P communication protocol used to send encrypted messages to another person or to many subscribers. It is decentralized

Bitmessage 2.7k Dec 30, 2022
Zulip server and webapp - powerful open source team chat

Zulip overview Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of

Zulip 17k Jan 07, 2023
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 02, 2023
Easy-to-use and powerful offline translation tool

Introduction Virtaal is a graphical program for doing translation. It is meant to be easy to use and powerful at the same time. Although the initial f

Translate 271 Nov 22, 2022
A wiki system with complex functionality for simple integration and a superb interface. Store your knowledge with style: Use django models.

django-wiki Django support The below table explains which Django versions are supported. Release Django Upgrade from 0.7.x 2.2, 3.0, 3.1 0.5 or 0.6 0.

django-wiki 1.6k Dec 28, 2022
Securely and anonymously share files, host websites, and chat with friends using the Tor network

OnionShare OnionShare is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor ne

Micah Lee 5.4k Jan 02, 2023