Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
boha — Crypto bounties, puzzles and challenges data library | Kitploit
Tools/GitHubGitHub/oritwoen/boha
CryptographyCTFPapers & ResearchLearning & EducationCurated Resources
GitHuboritwoen/boha

boha

Crypto bounties, puzzles and challenges data library

View Repository
16610 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

boha

Crates.io Downloads License Ask DeepWiki

Crypto bounties, puzzles and challenges data library.

Installation

CLI

Arch Linux (AUR):

root@kitploit:~
paru -S boha

From crates.io:

root@kitploit:~
cargo install boha --features cli,balance

Library

root@kitploit:~
[dependencies]
boha = "0.19"

With balance fetching:

root@kitploit:~
[dependencies]
boha = { version = "0.19", features = ["balance"] }

Usage

CLI

root@kitploit:~
# Statistics
boha stats

# List puzzles
boha list
boha list b1000
boha list b1000 --unsolved
boha list b1000 --with-pubkey

# Show puzzle details
boha show b1000/90
boha show gsmg
boha show hash_collision/sha256

# Show puzzle and open asset in browser
boha show zden/level_4 --open

# Show collection author
boha author b1000
boha author zden

# Get key range
boha range 90

# Check balance (requires --features balance)
boha balance b1000/71

# Search puzzles by ID, address, chain, or currency
boha search sha256
boha search kitten --collection bitimage

# Verify private key derives correct address
boha verify b1000/66
boha verify --all
boha verify --all --quiet; echo $?

# Export full database (JSON/JSONL only)
boha export
boha export b1000 zden
boha export --unsolved
boha export -o jsonl | jq .
boha export --compact

# Output formats (default: table)
boha -o json stats
boha -o yaml show b1000/90
boha -o csv list b1000 > puzzles.csv
boha -o jsonl list b1000 --unsolved | jq .

Output formats

Note: export command supports JSON and JSONL only. Use list command for CSV/YAML output.

Library

root@kitploit:~
use boha::{arweave, b1000, ballet, bitaps, bitimage, gsmg, hash_collision, warp, zden, Status};

let p90 = b1000::get(90).unwrap();
println!("Address: {}", p90.address.value);
println!("HASH160: {}", p90.address.hash160.unwrap());
println!("Funded: {}", p90.start_date.unwrap_or("unknown"));

let range = p90.key_range().unwrap();
println!("Range: 0x{:x} - 0x{:x}", range.start(), range.end());

if let Some(txid) = p90.claim_txid() {
    println!("Claimed in: {}", txid);
    println!("Explorer: {}", p90.chain.tx_explorer_url(txid));
}

let unsolved: Vec<_> = b1000::all()
    .filter(|p| p.status == Status::Unsolved)
    .filter(|p| p.pubkey.is_some())
    .collect();

let gsmg_puzzle = gsmg::get();
let kitten = bitimage::get("kitten").unwrap();
let sha256 = hash_collision::get("sha256").unwrap();
let warp_challenge = warp::get("challenge_1").unwrap();
let level1 = zden::get("level_1").unwrap();

let puzzle = boha::get("b1000/90").unwrap();
let puzzle = boha::get("gsmg").unwrap();
let puzzle = boha::get("bitaps").unwrap();
let puzzle = boha::get("bitimage/kitten").unwrap();
let puzzle = boha::get("warp/challenge_1").unwrap();
let puzzle = boha::get("zden/level_1").unwrap();

// Access puzzle assets (images, hints)
if let Some(path) = puzzle.asset_path() {
    println!("Local: {}", path);
}
if let Some(url) = puzzle.asset_url() {
    println!("Remote: {}", url);
}

Balance fetching (async)

root@kitploit:~
use boha::{b1000, balance};

#[tokio::main]
async fn main() {
    let puzzle = b1000::get(71).unwrap();
    let bal = balance::fetch(puzzle.address.value, puzzle.chain).await.unwrap();

    println!("Confirmed: {} sats", bal.confirmed);
    println!("Total: {:.8} BTC", bal.total_btc());
}

Features

FeatureDescription
cliCommand-line interface
balanceBlockchain balance fetching (BTC via mempool.space, LTC via litecoinspace.org, ETH via Etherscan, DCR via dcrdata, AR via arweave.net)

Collections

b1000

Bitcoin Puzzle Transaction - 256 puzzles where each puzzle N has a private key in range [2^(N-1), 2^N - 1].

Solved (82): 1-70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130

Unsolved with public key (6): 135, 140, 145, 150, 155, 160

Unsolved (72): 71-74, 76-79, 81-84, 86-89, 91-94, 96-99, 101-104, 106-109, 111-114, 116-119, 121-124, 126-129, 131-134, 136-139, 141-144, 146-149, 151-154, 156-159

Empty - no funds (96): 161-256

gsmg

GSMG.IO 5 BTC Puzzle - Multi-phase cryptographic challenge with a single Bitcoin address.

AddressStatusPrize
1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBeUnsolved~1.25 BTC

Originally 5 BTC, prize halves with each Bitcoin halving.

hash_collision

Peter Todd's hash collision bounties - P2SH addresses that can be claimed by finding hash collisions.

zden

Zden's Visual Crypto Puzzles - Artistic puzzles where private keys are encoded in images, animations, and visual patterns.

Unsolved: Level 5, Level HALV

arweave

Tiamat's Arweave Bounties - Cryptographic puzzles on the Arweave blockchain, created by Tiamat (chronobot.io).

StatusCount
Claimed7
Unsolved4

ballet

Bobby Lee's Ballet Crypto Puzzles - Physical Bitcoin notes (Ballet wallets) with BIP38-encrypted private keys. Solve by cracking the passphrase printed on the card.

StatusCount
Solved1
Unsolved2

bitaps

Bitaps Mnemonic Challenge - Shamir Secret Sharing Scheme (SSSS) puzzle where the original 12-word mnemonic was split into 5 shares using 3-of-5 threshold.

AddressStatusPrize
bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6Unsolved~1.0 BTC

Two of three required shares are published. Goal: break the SSSS scheme or find implementation bugs.

bitimage

Bitimage puzzles - Bitcoin addresses derived from arbitrary files using SHA256(Base64(file)) as BIP39 entropy.

PuzzlePassphraseStatusPrize
kittenNo✅ Solved (2019-07-09)0.00095 BTC
kitten_passphraseYes⏳ Unsolved~0.01 BTC

Both puzzles use the same source file (Antonopoulos kitten tweet). The passphrase puzzle requires an unknown BIP39 passphrase.

warp

Keybase WarpWallet challenges - Brainwallet challenges published to show how quickly weak WarpWallet passphrases get cracked.

StatusCount
Solved4
Expired2

Includes the original four November 2013 challenges plus two later WarpWallet-specific challenge rounds reclaimed by Keybase after expiry.

Data

All puzzle data is embedded at compile time from JSONC files in data/.

Each puzzle includes: address (with HASH160 and type), chain, status, prize, public key (if exposed), private key (if solved), key source, solve date (if solved), solve time, start date (when funded), transactions history, solver information, and assets (puzzle images, hints).

Assets

Visual puzzle collections (zden, gsmg, bitimage) include embedded assets in assets/ directory:

root@kitploit:~
assets/
├── zden/           # 15 puzzle images
├── gsmg/           # puzzle.png, follow_the_white_rabbit.png
└── bitimage/       # kitten images

Access via library:

root@kitploit:~
let puzzle = zden::get("level_4").unwrap();
println!("{}", puzzle.asset_path().unwrap());  // assets/zden/level_4/puzzle.png
println!("{}", puzzle.asset_url().unwrap());   // https://raw.githubusercontent.com/...

Agent Skills

This project includes agent skills that teach AI coding agents how to use boha.

Static skills

Curated by the project author:

root@kitploit:~
npx skills add oritwoen/boha
SkillDescription
bohaRust library API for querying crypto puzzle and bounty data across six blockchains
boha-cliCLI for browsing, searching, verifying and exporting puzzle data

Dynamic skills

Auto-generated from live docs, issues, and releases using skilld:

root@kitploit:~
npx skilld add boha

Related Tools

License

MIT

Download Tool
FormatFlagDescription
table-o tableTUI table with colors (default)
json-o jsonPretty-printed JSON
jsonl-o jsonlJSON Lines (one object per line)
yaml-o yamlYAML
csv-o csvCSV with header
PuzzleHashStatusPrize
sha1SHA-1✅ Claimed (2017-02-23)2.48 BTC
sha256SHA-256⏳ Unsolved0.277 BTC
ripemd160RIPEMD-160⏳ Unsolved0.116 BTC
hash160HASH160⏳ Unsolved0.100 BTC
hash256HASH256⏳ Unsolved0.100 BTC
op_absOP_ABS✅ Claimed (2013-09-13)-
ChainSolvedUnsolvedTotal
Bitcoin9211
Ethereum202
Litecoin101
Decred101
ToolDescription
vukeResearch tool for studying vulnerable Bitcoin key generation practices. Analyze solved puzzles for weak patterns.
vgenBitcoin vanity address generator with regex pattern matching and GPU acceleration.
vusiECDSA signature vulnerability analysis - nonce reuse, polynonce, biased nonces, lattice/HNP attacks.
kangarooPollard's Kangaroo ECDLP solver for secp256k1 using Vulkan/Metal/DX12 compute.