Code Monkey home page Code Monkey logo

plutus's Introduction

Plutus

Bitcoin Brute Forcer

Donate to the author of this program: 1B1k2fMs6kEmpxdYor6qvd2MRVUX2zGEHa

Installation

Python 3+ Required

A Constant Internet Connection Is Required

Installation:

$ git clone https://github.com/Isaacdelly/Plutus

$ cd Plutus

$ pip install -r requirements.txt 

Usage

Traditional Mode: Multiprocessing disabled

$ cd Plutus

$ python plutus.py

Multiprocessing Mode: Multiprocessing enabled

$ cd Plutus

$ python plutus.py -m

Multiprocessing is supported thanks to Wayne Yao (https://github.com/wx-Yao)

Multiprocessing

Running the file with with a -m argument activates Multiprocessing Mode, an extension of the original program that maximizes the usage of your computer's cores. This mode generates private keys in bursts compared to the traditional version's one at a time, in an attempt to improve the speed and efficiency of the program. However, activating this mode risks greater chances of the API getting overloaded, possibly causing your IP address to get temporarily blocked. If you are running this program for long periods of time, it is recommended to run the traditional version.

Proof of Concept

This program is meant to analyze possible ways Bitcoin could be stolen. Because it is impossible to convert a wallet address back into its private key, this program goes the opposite way and generates a completely random private key, then converts it into its respective Bitcoin address. It then queries the calculated address for a balance and prints the result to the user.

This program does this in a brute-force style, repeatedly generating and converting private keys, and querying balances. The ultimate goal is to randomly find a wallet with a balance out of the 2160 possible wallets in existence. In the event that a wallet with a balance is found, the wallet's private key, public key, wallet address, and balance is stored in a text file plutus.txt for later use.

Although this project can be used maliciously, it is simply an exploration into the Bitcoin protocol and advanced encryption and hashing techniques using Python.

How it Works

Private keys are generated randomly to create a 32 byte hexidecimal string using the cryptographically secure os.urandom() function.

The private keys are converted into their respective public keys. Then the public keys are converted into their Bitcoin wallet addresses using the binascii, ecdsa, and hashlib Python modules.

The wallet addresses are queried using Block Explorer API to collect balance details.

If the wallet contains a balance, then the private key, public key, wallet address, and balance are saved to a text file plutus.txt on the user's hard drive.

Expected Outputs




If the wallet is empty, then the format Wallet Address = 0 will be printed. An example is:

1A5P8ix6XaoCqXmtXxBwwhp5ZkYsqra32C = 0

However, if a balance is found, then the output will include all necessary information about the wallet. A copy of the output will also be saved in a text file titled plutus.txt with all balances in Satoshi. An example is:

address: 1JGM6sREUwt5paFEfHNuzvRy7nXtQdaamn
private key: 6694e2d40e786839d48b1b699ab9c318514dc0a0f27f2ccaf7f9f32224ead3a8
WIF private key: 5JbTtbihnAnNbBtqZKmkWbrDUeei1bCamqKPrHJ49vQx1CT8oUQ
public key: 04475C43E9E58637630E10DB01F2FF38C64430E07E272E4C82C877653B8AF15720E4F98F66B49BB4E91B36D4C08FC4F2E13F0A5079DFCEB1821FA05A9F9F30F361
balance: 10000000

Warnings

If you are receiving:

HTTP Error Code: (number)
Retrying in 5 seconds

Or

Unable to connect to API after several attempts
Retrying in 30 seconds

This program queries Block Explorer API for wallet balances making a HTTP request necessary for complete operation. If connection to the API is found to be unresponsive (failing to return a 200 HTTP status) the program will pause for 5 seconds and attempt to continue.

If you are receiving a lot of errors, visit Blockexplorer.com to see if their API might be down.

This program also responds to 429 HTTP responses because of the high frequency of server requests. When a 429 is encountered, the program will print the error HTTP Error Code: 429, but will not pause. However, if several 429's are received consecutively, the user will get the result Unable to connect to API after several attempts and will be forced to wait 30 seconds until the program continues again.

Efficiency

This program is able to handle, generate, and query a private key in 0.5 seconds. However, because this program uses the internet for balance requests, a slower internet connection may impact time efficiency.

Donate to the author of this program: 1B1k2fMs6kEmpxdYor6qvd2MRVUX2zGEHa

plutus's People

Contributors

isaacdelly avatar

Watchers

James Cloos avatar

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.