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...
A bitcoin vanity address generator written with the Rust programming language.
A bitcoin vanity address generator written with the Rust programming language.

btc-vanity A bitcoin vanity address generator written with the Rust programming language. With btc-vanity you can create a private key which has a com

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

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

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.

A fast, simple and powerful open-source cross platform utility tool for generating strong, unique and random passwords

password-generator-pro A fast, simple and powerful open-source cross platform utility tool for generating strong, unique and random passwords. Feature

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

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

Flexible Rust implementation of the MuSig2 multisignature protocol, compatible with Bitcoin.

MuSig2 This crate provides a flexible rust implementation of MuSig2, an optimized digital signature aggregation protocol, on the secp256k1 elliptic cu

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

Comments
  • How to use

    How to use

    Hi guys,

    Please help out if you can. Once you get an address, private key, hex private key in Wallet Import Format, and P2PKH wallet address how exactly I can access that wallet, I don't even know what wallet was used. My simple questions is what should I do with the info, where to use it to access the BTC :( Thanks

    opened by lexick2016 1
  • 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
Modern, lightweight & standard-compliant bitcoin wallet runtime & cli without rust-bitcoin dependencies

Bitcoin protocol command-line wallet & tools Modern, minimalistic & standard-compliant cold wallet from LNP/BP Standards Association. Contributing Con

BP: Bitcoin protocol 3 Jul 31, 2023
Mine Bitcoin Addresses ⛏️🅰️🅱️🅾️

Bitcoin Address Miner Mine Bitcoin Addresses ⛏️ ??️ ??️ ??️ Overview The Bitcoin Address Miner is a utility written in Rust that generates random BIP-

simone ragonesi 6 Nov 29, 2023
Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transactions of your non-custodial wallets on a provider of your choice, all while respecting your privacy

Bitcoin Push Notification Service (BPNS) Description Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transacti

BPNS 1 May 2, 2022
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 6 Oct 31, 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 8 Nov 30, 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
stealth addresses library implementing ERC-5564 over secp256k1 in rust

eth-stealth-addresses rust library implementing ERC-5564 stealth addresses using canonical ECC over the secp256k1 curve. let's make privacy on evm cha

κασσάνδρα.eth 30 Oct 9, 2023
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 44 Dec 22, 2022
Generate IPv4 12th order Hilbert heatmaps from a file of IPv4 addresses.

Rustified IPv4 Heatmap This is a pure Rust version of the C ipv4-heatmap utility originally published by The Measurement Factory and updated forever-a

boB Rudis 8 Sep 28, 2022