
Bibliothèque de données de primes, énigmes et défis crypto
Bibliothèque de données pour primes, énigmes et défis cryptographiques.
Arch Linux (AUR) :
paru -S boha
Depuis crates.io :
cargo install boha --features cli,balance
[dependencies]
boha = "0.19"
Avec récupération du solde :
[dependencies]
boha = { version = "0.19", features = ["balance"] }
# Statistiques
boha stats
# Lister les énigmes
boha list
boha list b1000
boha list b1000 --unsolved
boha list b1000 --with-pubkey
# Afficher les détails d'une énigme
boha show b1000/90
boha show gsmg
boha show hash_collision/sha256
# Afficher l'énigme et ouvrir l'actif dans le navigateur
boha show zden/level_4 --open
# Afficher l'auteur de la collection
boha author b1000
boha author zden
# Obtenir la plage de clés
boha range 90
# Vérifier le solde (nécessite --features balance)
boha balance b1000/71
# Rechercher des énigmes par ID, adresse, chaîne ou devise
boha search sha256
boha search kitten --collection bitimage
# Vérifier que la clé privée dérive la bonne adresse
boha verify b1000/66
boha verify --all
boha verify --all --quiet; echo $?
# Exporter la base de données complète (JSON/JSONL uniquement)
boha export
boha export b1000 zden
boha export --unsolved
boha export -o jsonl | jq .
boha export --compact
# Formats de sortie (par défaut : 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 .
Remarque : la commande export ne prend en charge que JSON et JSONL. Utilisez la commande list pour une sortie CSV/YAML.
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();
// Accéder aux actifs de l'énigme (images, indices)
if let Some(path) = puzzle.asset_path() {
println!("Local: {}", path);
}
if let Some(url) = puzzle.asset_url() {
println!("Remote: {}", url);
}
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());
}
| Fonctionnalité | Description |
|---|---|
cli | Interface en ligne de commande |
balance | Récupération du solde sur la blockchain (BTC via mempool.space, LTC via litecoinspace.org, ETH via Etherscan, DCR via dcrdata, AR via arweave.net) |
Bitcoin Puzzle Transaction - 256 énigmes où chaque énigme N possède une clé privée dans la plage [2^(N-1), 2^N - 1].
Résolues (82) : 1-70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130
Non résolues avec clé publique (6) : 135, 140, 145, 150, 155, 160
Non résolues (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
Vides - sans fonds (96) : 161-256
GSMG.IO 5 BTC Puzzle - Défi cryptographique en plusieurs phases avec une seule adresse Bitcoin.
| Adresse | Statut | Prix |
|---|---|---|
| 1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe | Non résolue | ~1,25 BTC |
À l'origine 5 BTC, le prix est divisé par deux à chaque halving du Bitcoin.
Primes de collision de hachage de Peter Todd - Adresses P2SH pouvant être réclamées en trouvant des collisions de hachage.
Énigmes cryptographiques visuelles de Zden - Énigmes artistiques où les clés privées sont encodées dans des images, animations et motifs visuels.
Non résolues : Niveau 5, Niveau HALV
Primes Arweave de Tiamat - Énigmes cryptographiques sur la blockchain Arweave, créées par Tiamat (chronobot.io).
| Statut | Nombre |
|---|---|
| Réclamées | 7 |
| Non résolues | 4 |
Énigmes cryptographiques Ballet de Bobby Lee - Billets Bitcoin physiques (portefeuilles Ballet) avec clés privées chiffrées BIP38. Résolvez en craquant la phrase secrète imprimée sur la carte.
| Statut | Nombre |
|---|---|
| Résolues | 1 |
| Non résolues | 2 |
Défi mnémonique Bitaps - Énigme de partage de secret Shamir (SSSS) où le mnémonique original de 12 mots a été divisé en 5 parts avec un seuil de 3 sur 5.
| Adresse | Statut | Prix |
|---|---|---|
| bc1qyjwa0tf0en4x09magpuwmt2smpsrlaxwn85lh6 | Non résolue | ~1,0 BTC |
Deux des trois parts requises sont publiées. Objectif : casser le schéma SSSS ou trouver des bugs d'implémentation.
Énigmes Bitimage - Adresses Bitcoin dérivées de fichiers arbitraires en utilisant SHA256(Base64(fichier)) comme entropie BIP39.
| Énigme | Phrase secrète | Statut | Prix |
|---|---|---|---|
| kitten | Non | ✅ Résolue (2019-07-09) | 0,00095 BTC |
| kitten_passphrase | Oui | ⏳ Non résolue | ~0,01 BTC |
Les deux énigmes utilisent le même fichier source (tweet du chaton d'Antonopoulos). L'énigme avec phrase secrète nécessite une phrase secrète BIP39 inconnue.
Défis Keybase WarpWallet - Défis brainwallet publiés pour montrer à quelle vitesse les phrases secrètes WarpWallet faibles sont craquées.
| Statut | Nombre |
|---|---|
| Résolus | 4 |
| Expirés | 2 |
Inclut les quatre défis originaux de novembre 2013 plus deux tours de défis spécifiques à WarpWallet réclamés par Keybase après expiration.
Toutes les données des énigmes sont intégrées au moment de la compilation à partir de fichiers JSONC dans data/.
Chaque énigme comprend : l'adresse (avec HASH160 et type), la chaîne, le statut, le prix, la clé publique (si exposée), la clé privée (si résolue), la source de la clé, la date de résolution (si résolue), le temps de résolution, la date de début (lors du financement), l'historique des transactions, les informations sur le solveur et les actifs (images de l'énigme, indices).
Les collections d'énigmes visuelles (zden, gsmg, bitimage) incluent des actifs intégrés dans le répertoire assets/ :
assets/
├── zden/ # 15 images d'énigmes
├── gsmg/ # puzzle.png, follow_the_white_rabbit.png
└── bitimage/ # images du chaton
Accès via la bibliothèque :
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/...
Ce projet inclut des compétences d'agent qui apprennent aux agents d'IA de codage à utiliser boha.
Organisées par l'auteur du projet :
npx skills add oritwoen/boha
| Compétence | Description |
|---|---|
boha | API de la bibliothèque Rust pour interroger les données de primes et d'énigmes cryptographiques sur six blockchains |
boha-cli | CLI pour parcourir, rechercher, vérifier et exporter les données des énigmes |
Générées automatiquement à partir de la documentation en direct, des problèmes et des versions à l'aide de skilld :
npx skilld add boha
MIT
| Format | Option | Description |
|---|
table | -o table | Tableau TUI avec couleurs (par défaut) |
json | -o json | JSON mis en forme |
jsonl | -o jsonl | JSON Lines (un objet par ligne) |
yaml | -o yaml | YAML |
csv | -o csv | CSV avec en-tête |
| Énigme | Hachage | Statut | Prix |
|---|
| sha1 | SHA-1 | ✅ Réclamée (2017-02-23) | 2,48 BTC |
| sha256 | SHA-256 | ⏳ Non résolue | 0,277 BTC |
| ripemd160 | RIPEMD-160 | ⏳ Non résolue | 0,116 BTC |
| hash160 | HASH160 | ⏳ Non résolue | 0,100 BTC |
| hash256 | HASH256 | ⏳ Non résolue | 0,100 BTC |
| op_abs | OP_ABS | ✅ Réclamée (2013-09-13) | - |
| Chaîne | Résolues | Non résolues | Total |
|---|
| Bitcoin | 9 | 2 | 11 |
| Ethereum | 2 | 0 | 2 |
| Litecoin | 1 | 0 | 1 |
| Decred | 1 | 0 | 1 |
| Outil | Description |
|---|
| vuke | Outil de recherche pour étudier les pratiques vulnérables de génération de clés Bitcoin. Analysez les énigmes résolues pour détecter des motifs faibles. |
| vgen | Générateur d'adresses Bitcoin vanity avec correspondance par expressions régulières et accélération GPU. |
| vusi | Analyse de vulnérabilités de signatures ECDSA - réutilisation de nonce, polynonce, nonces biaisés, attaques lattice/HNP. |
| kangaroo | Solveur ECDLP de Pollard's Kangaroo pour secp256k1 utilisant le calcul Vulkan/Metal/DX12. |