A mnemonic brute forcing tool for nano and banano.

Overview

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 from a partially known 24 word mnemonic phrase. This phrase must be:

  • mostly known but missing entire words.
  • mostly known but you don't know which exact word from a group of words should be at a given position.
  • a combination of the above two. E.g. you know word #1 must be either abandon or zoo, but word #5 is completely unknown.
  • completely unknown. You don't know any of the words to the mnemonic, but you really want the nano at an address. Just kidding.

The two flavours of brute

The brute tool can be ran in two different ways:

  1. Ledger mode - This is the high performance, offline version of brute which requires a data.ldb file. This is the ledger database of the network you wish to recover an account from. The database snapshot must have been taken after the account you wish to recover was first opened.

  2. Node mode - The default, much slower version of brute, that does not require the downloading of the ledger database. Instead, brute communicates with a node via rpc. Due to node limitations, this is restricted to single thread cpu calculations.

Usage and example

To run brute, first download the latest release from the releases page or compile it yourself. Enter the directory containing brute. If on windows, double click on the supplied run_brute.bat, otherwise run the brute program.

Upon the first run, a new config file brute_config.toml will be created, with some default settings. To start, open brute_config.toml in a text editor and paste your mnemonic into the double quotes on the line mnemonic = "". A mnemonic should be in the form of 24 elements separated with a space. Each element can be one of the following:

  • A word from the bip39 word list.
  • A selection of words from the bip39 word list, separated by commas, that represent the possible options of the word at that position in the mnemonic.
  • An X to symbolise a completely unknown word.

If you wish to run brute in Ledger mode, you must now configure the ledger settings. These are self explanatory but a detailed overview of each setting is available at the bottom of this readme under the Options in brute_config.toml title.

Once your mnemonic has been added to the config file, run brute again - if on windows, via run_brute.bat like before.

Example

In this scenario, I came home after work to find my dog had got hungry whilst I was out, and eaten the first two words of my mnemonic which I had left on the table. The third word was also missing most of its letters, but I could make out it ended in a z. Looking in the list of the 2048 bip39 words, I could see that it could only have been buzz,jazz or quiz. I opened brute_config.toml and set my mnemonic using the appropriate syntax to reflect this:

mnemonic = "X X buzz,jazz,quiz beach note much angry bread success carbon recall buddy fabric replace attack fruit ghost marine rural bubble spawn stem empty apart"

I then ran the brute program to crack my mnemonic.

Options in brute_config.toml

General settings:

  • address_prefix - This will tell brute the type of address you are looking for. If looking for a nano account, this should remain 'nano_'. If looking for a banano account, this should be set to 'ban_'. If you are using brute in Ledger mode, this is purely cosmetic since the tool checks the ledger for public keys, not addresses.

  • stop_at_first - This option can be toggled true/false. Tells brute whether or not to stop searching for opened accounts, once the first opened account has been found.

  • stats_logging - This option can be toggled true/false. Tells brute whether or not to print statistics each second - % remaining and mnemonics per second.

Ledger settings:

  • use_ledger - This tells brute whether or not you wish to use the high performance Ledger mode (reading directly from the network ledger).

  • ledger_path - If you wish to use the Ledger mode, supply the full path to your data.ldb file here.

  • multithreaded - This tells brute whether or not to run computations on many threads. This gives a big performance boost but may stress out your CPU to a greater degree. Currently the number of threads is the same as the number of cores.

Node settings:

  • node_url - The Node RPC endpoint that you wish to query for account balance checking. This is important, and if possible you should set this to your own node. brute makes a lot of requests, and stressing public nodes is not preferable.

  • batch_size - This is the number of accounts per 'accounts_balances' request sent to the node. Too little, and the frequency of requests becomes too large. Too much, and the node will likely reject your request. Change with caution. For RPC Proxy enabled nodes, this will need to be lowered from 10,000 to 1,000 in most cases.

  • request_cooldown - Not yet implemented.

To-Do

  • Add a user defined number of threads setting rather than fixed 1 thread per core
  • Implement node rpc cooldown and queuing. Currently a good cpu will create too many requests too quickly for most nodes.
  • Allow more syntax options such as word prefix or suffix, or 'contains x' - a quick poll of the wordlist can find which apply
  • When the 24th word is unknown, reduce pointless computations by only calculating the checksum once.
  • GPU support for blake and sha hashes - may not be necessary if nodes cannot keep up with RPC requests...
  • Fix stop_at_first so that it actually works in multithreaded ledger mode.
  • Multi threaded cpu calculation
  • New idea: read directly from data.ldb/mdb ledger file rather than requesting via node rpc. Need lots of storage space. In testing with banano ledger in the meantime. Could allow for multithreading and gpu calculation features to actually server a purpose.
  • Error handling - standardise
  • Output standardise and wait upon ending
  • Config parsing
  • Split into modules and separate files
  • Split into more functions
  • Split main() into sub-routines
  • Send node accounts_balances with a balanced number of accounts and check which contains balance (if any)
  • Make nano rpc requests work
You might also like...
A secure development tool box and fintech application made with Rust to be used for developing cryptocurrencies on the blockchain.

Crypto Fintech Tools for Rust (CFT) Dependencies Rust MacOS Homebrew # xcode cli tools xcode-select --install # install dependencies using Homebrew b

Open-source tool to enforce privacy & security best-practices on Windows and macOS, because privacy is sexy ๐Ÿ‘๐Ÿ†

privacy-sexy Open-source tool to enforce privacy & security best-practices on Windows and MacOs, because privacy is sexy ๐Ÿ‘ ๐Ÿ† privacy-sexy is a data-

Chargo is a tool for file encryption/decryption. It's based on Argon2 and ChaCha20Poly1305 algorithms.

| Documentation Chargo is a tool for file encryption/decryption with password. It's based on Argon2 and ChaCha20Poly1305 algorithms. From arg2u with โ™ฅ

CLI tool for deterministically building and verifying executable against on-chain programs or buffer accounts

Solana Verify CLI A command line tool to build and verify solana programs. Users can ensure that the hash of the on-chain program matches the hash of

Lockbox is a command-line tool for generating and managing passwords
Lockbox is a command-line tool for generating and managing passwords

Lockbox is a command-line tool for generating and managing passwords. It uses strong encryption algorithms to securely store your passwords, so you can be sure that your data is safe.

Tool to retrieve mev-share events data and scan for refunds onchain

MEV-Share Analysis This repository can be used to retrieve historical events sent to mev-share and scan for any refunds that were sent to the users. T

A tool for bulk downloading and exporting the account data inside Solana snapshots.

Memento Memento is a tool used to load and save accounts from old Solana snapshots in Google Cloud Storage. Why should I use Memento? No fighting sola

Library and CLI tool for generating Radix Babylon Accounts.
Library and CLI tool for generating Radix Babylon Accounts.

Wallet Compatible Derivation This repo is a package containing two crates - a library named wallet_compatible_derivation and binary named wallet_compa

An automated CLI tool that optimizes gas usage in Solidity smart contracts, focusing on storage and function call efficiency.

Solidity-Gas-Optimizoor An high performance automated CLI tool that optimizes gas usage in Solidity smart contracts, focusing on storage and function

Comments
  • Ledger mode and multithread computation

    Ledger mode and multithread computation

    Added Ledger mode - read directly from a copy of data.ldb (ledger database file for nano or banano) Added multithreaded calculation - currently fixed (threads:cpus = 1:1) and only for mnemonics containing complete unknowns. Feature to work on mnemonics with no complete unknowns and only subgroups in #To-Do (readme).

    opened by derfarctor 0
Releases(v1.0.0-alpha)
  • v1.0.0-alpha(Jan 24, 2022)

    Working test v1.0.0-alpha

    • Added direct ledger database support via Ledger mode.
    • Added multithreading in Ledger mode.
    • Comes with run_brute.bat for easy starting on windows.
    • Config option request_cooldown is not yet implemented and thus changing it will have no effect.

    For up to date information on the settings in brute_config.toml please refer to the README.md file in the github repository.

    Source code(tar.gz)
    Source code(zip)
    brute-v1.0.0-alpha-linux.zip(2.83 MB)
    brute-v1.0.0-alpha-windows.zip(1.56 MB)
  • v0.1.0-alpha-windows(Jan 17, 2022)

    Working test v0.1.0-alpha for windows.

    • Comes with run_brute.bat for easy starting.
    • No multithreading or node rpc queuing.
    • Config option request_cooldown is not yet implemented and thus changing it will have no effect.

    If attempting to use an RPC Proxy enabled node for requests, batch_size will probably need to be lowered from default 10,000 down to 1000. Please refer to the repository README.md which is updated, rather than the one in the source release.

    Source code(tar.gz)
    Source code(zip)
    brute-windows-pre-release-v0.1.0-alpha.zip(1.46 MB)
Owner
null
โ‹ฐยทโ‹ฐ Feeless is a Nano cryptocurrency node, wallet, tools, and Rust crate.

โ‹ฐยทโ‹ฐ Feeless What is Feeless? Feeless is a Nano cryptocurrency node, wallet, tools, and Rust crate. This is not the official project for Nano, only an

null 127 Dec 5, 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
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 Bitcoin wallet collider that brute forces random wallet addresses written in Rust.

Plutus-Rustus Bitcoin Brute Forcer A Bitcoin wallet collider that brute forces random wallet addresses written in Rust. This is a straight port of Plu

null 46 Dec 23, 2022
Ethereum key tool - Lightweight CLI tool to deal with ETH keys written in rust

ekt - Etherum Key Tool ekt is a lightweight tool to generate ethereum keys and addresses. Installation Either clone it and run it with cargo or instal

null 5 May 8, 2023
Fiddi is a command line tool that does the boring and complex process of checking and processing/watching transactions on EVM compatible Blockchain.

Fiddi is a command line tool that does the boring and complex process of checking and processing/watching transactions on EVM compatible Blockchain.

Ahmad Abdullahi Adamu 7 Jan 9, 2023
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

Sebastien Rousseau 3 Dec 16, 2022
A simple and secure rust command-line tool to protect your text by encrypting and decrypting it using the robust AES-256 algorithm.

Secret Keeper A simple and secure command-line tool to protect your text by encrypting and decrypting it using the robust AES-256 algorithm. Built wit

Kunal Bagaria 9 May 11, 2023
๐Ÿ” UPLINK is a Rust lightweight (2MB) tool for file transfer and remote management that uses AES-GCM and Envelope Encryption over WebSockets.

UPLINK โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–’โ–“โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘ โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–’โ–“โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘ โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘ โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–’โ–“โ–ˆโ–“โ–’โ–‘โ–‘โ–’โ–“โ–ˆ

Krystian Bajno 5 Sep 28, 2024
A tool to identify related SSL keys, CSRs, and certificates.

โ›“ sslchains A tool to identify related SSL keys, CSRs, and certificates. Usage Default Display Mode Run with any number of path arguments to define th

Gary Locke 1 Apr 2, 2022