A Bitcoin wallet collider that brute forces random wallet addresses written in Rust.

Overview

Plutus-Rustus Bitcoin Brute Forcer

A Bitcoin wallet collider that brute forces random wallet addresses written in Rust.

This is a straight port of Plutus with significant perfomance gains over python counterpart.

Like This Project? Give It A Star

Dependencies

Tested in rustc 1.61.0 (fe5b13d68 2022-05-18) For dependencies see Cargo.toml Minimum RAM requirements

Installation

$ git clone https://github.com/a137x/plutus-rustus.git

Compilation:

cargo rustc --release -- -C target-cpu=native

Start

./target/release/plutus-rustus

For linux users to run program in the background (dettach from ssh session):

bash start.sh & disown

Proof Of Concept

A private key is a secret number that allows Bitcoins to be spent. If a wallet has Bitcoins in it, then the private key will allow a person to control the wallet and spend whatever balance the wallet has. So this program attempts to find Bitcoin private keys that correlate to wallets with positive balances. However, because it is impossible to know which private keys control wallets with money and which private keys control empty wallets, we have to randomly look at every possible private key that exists and hope to find one that has a balance.

This program is essentially a brute forcing algorithm. It continuously generates random Bitcoin private keys, converts the private keys into their respective wallet addresses, then checks the balance of the addresses. If a wallet with a balance is found, then the private key, public key and wallet address are saved to the text file plutus.txt on the user's hard drive. The ultimate goal is to randomly find a wallet with a balance out of the 2160 possible wallets in existence.

How It Works

Private keys are generated randomly with a help of bitcoin rust library.

The private keys are converted into their respective public keys. Then the public keys are converted into their Bitcoin wallet addresses.

A pre-calculated database of every P2PKH Bitcoin address with a positive balance is included in this project. The generated address is searched within the database, and if it is found that the address has a balance, then the private key, public key and wallet address are saved to the text file plutus.txt on the user's hard drive.

This program also utilizes multithreading through tokio::task in order to make concurrent calculations.

Efficiency

Using database of 33,165,253 addresses, searching performance is about 15981 private keys per second per thread (core) running on Hetzner CPX31 cloud VPS.

Database FAQ

An offline database is used to find the balance of generated Bitcoin addresses. Visit /database for information.

Expected Output

./target/release/plutus-rustus 
Loading pickle slice from file DirEntry("/plutus-rustus/database/MAR_15_2021/02.pickle")
Database size 1000000 addresses.
Loading pickle slice from file DirEntry("/plutus-rustus/database/MAR_15_2021/00.pickle")
Database size 2000000 addresses.
Loading pickle slice from file DirEntry("/plutus-rustus/database/MAR_15_2021/01.pickle")
Database size 3000000 addresses.
...
Load of pickle files completed in 7.74s, database size: 33165253
Running on 4 cores
Core ThreadId(10) started
Core ThreadId(11) started
Core ThreadId(12) started
Core ThreadId(13) started
Core ThreadId(13) checked 10000 addresses in 0.95, iter/sec: 10581.981747510054
Core ThreadId(12) checked 10000 addresses in 0.95, iter/sec: 10524.61153358878
Core ThreadId(11) checked 10000 addresses in 0.96, iter/sec: 10444.270972762719
Core ThreadId(10) checked 10000 addresses in 0.96, iter/sec: 10363.59450488973
...

If a wallet with a balance is found, then all necessary information about the wallet will be saved to the text file plutus.txt. An example is:

4ef862ae89545a25cb75e1d56b19aef02fae6fdaea8f6cbeacf8e58e22edd480 // private key KysDe6HB1oPnUGCuXT88Pppqu1Td9WVDzgCYes9x4B1S5aL7bd2e // hex private key in Wallet Import Format 030bdfccb1fd2aac06cec7e688f944632a8ec33871cfaedfdd08e51f462a4e9532 // public key 15x5ugXCVkzTbs24mG2bu1RkpshW3FTYW8 // P2PKH wallet address

Memory Consumption

This program uses approximately 3331 MB of RAM with current database of 33,165,253 Bitcoin addresses. Memory consumption solely depends on size of database, and indifferent to amount of threads (cores) it runs on.

Create an issue so I can add more stuff to improve

License

MIT License

You might also like...
Iterate over bitcoin blocks

Blocks iterator Iterates over Bitcoin blocks, decoding data inside Bitcoin Core's blocks directory. Features: Blocks are returned in height order, it

EXPERIMENTAL: Bitcoin Core Prometheus exporter based on User-Space, Statically Defined Tracing and eBPF.

bitcoind-observer An experimental Prometheus metric exporter for Bitcoin Core based on Userspace, Statically Defined Tracing and eBPF. This demo is ba

Rustcoin - A LightWeight SDK For Bitcoin, Ethernum

Rustcoin - A LightWeight SDK For Bitcoin, Ethernum

CypherSmith is a random cypher generator for OpenCypher.

CypherSmith is a random cypher generator for OpenCypher. Its paragon is SQLsmith, a random SQL query generator.

The Stage 2 building block to reach the dream of DSNs with Bitcoin DeFi

rust-nostr Intro A complete suite of nostr Bitcoin libraries that can be used to develop Decentralized Social Networks (DSN) with integrated Bitcoin f

A preview of the integration between Bitcoin and the Internet Computer.

Bitcoin Integration Developer Preview Overview The integration between the Internet Computer and Bitcoin will enable developers to build canisters tha

interBTC  A trust-minimized bridge from Bitcoin to Polkadot.
interBTC A trust-minimized bridge from Bitcoin to Polkadot.

interBTC A trust-minimized bridge from Bitcoin to Polkadot. Explore the specification » Report Bug · Request Feature This repository is hosted on GitH

Library with support for de/serialization, parsing and executing on data-structures and network messages related to Bitcoin
Library with support for de/serialization, parsing and executing on data-structures and network messages related to Bitcoin

Rust Bitcoin Library with support for de/serialization, parsing and executing on data-structures and network messages related to Bitcoin. Heads up for

A demo of the Internet Computer's Bitcoin API

Bitcoin Integration Demo A demo of the bitcoin endpoints on the Internet Computer. This demo is already deployed to the IC, so you can already try it

Comments
  • Fully utilizing the cpu

    Fully utilizing the cpu

    Hi,

    Thank you for the project. I have 8 cores and with hyperthreading 16 logical processors. For plutus python when I was checking with Htop utility all 16 processes were showing 100% all the time.

    I tested with your Rust code. With this project only 8 cores are utilized 100%. Rust can't see the logical processors like Python does. How can we solve this so that all CPU power is used all the time?

    opened by ethicalliving 5
Owner
Temet nosce
null
Rust-based password mutator for brute force attacks

PWFuzz-RS A Rust-based password mutator for brute force attacks Disclaimer This tool works, but was mainly an experiment. Please do not expect frequen

Michael Taggart 5 Aug 3, 2022
A mnemonic brute forcing tool for nano and banano.

brute a mnemonic brute forcing tool for nano and banano. What is brute? It is a mnemonic brute forcing tool which can be used to recover an account fr

null 7 May 3, 2022
Smarter brute-force password searching for PKZIP encrypted files

Zip Blitz Motivation This program was created for a very specfic problem I had. I had a large encrypted zip file that I lost/forgot the password for.

Michael 4 Jul 29, 2022
Vanitygen-bip39 - Generate vanity / gas efficient Ethereum addresses for your hdwallet (bip39 12 or 24 words)

vanitygen-bip39 Generate Ethereum gas efficient addresses with leading zeros https://medium.com/coinmonks/on-efficient-ethereum-addresses-3fef0596e263

iam4x 9 Jul 2, 2022
Tool for computing vanity Gnosis Safe addresses

0xdeadbeef Tool used for computing vanity Gnosis Safe addresses. This tool is currently hard-coded to only support the v1.3.0 Safe deployment: GnosisS

Nicholas Rodrigues Lordello 41 Jun 5, 2022
A wallet library for Elements / Liquid written in Rust!

EDK Elements Dev Kit A modern, lightweight, descriptor-based wallet library for Elements / Liquid written in Rust! Inspired by BDK for Elements & Liqu

luca vaccaro 11 Dec 11, 2021
A Rust library for working with Bitcoin SV

Rust-SV A library to build Bitcoin SV applications in Rust. Documentation Features P2P protocol messages (construction and serialization) Address enco

Brenton Gunning 47 Aug 27, 2022
Generate or convert random bytes into passphrases. A Rust port of niceware.

niceware My blog post: Porting Niceware to Rust A Rust port of niceware. Sections of this README have been copied from the original project. This libr

Andrew Healey 20 Sep 7, 2022
Rust command line program for Bitcoin brainwallet

brainwallet Rust command line program for Bitcoin brainwallet as implemented at https://www.bitaddress.org. To run it, first install Rust, e.g. from h

Frank Buss 3 Dec 30, 2021
The Parity Bitcoin client

The Parity Bitcoin client. Gitter Installing from source Installing the snap Running tests Going online Importing bitcoind database Command line inter

Parity Technologies 709 Sep 11, 2022