Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
boha — Libreria di dati su bounty, puzzle e sfide crypto | Kitploit
Strumenti/GitHubGitHub/oritwoen/boha
CrittografiaCTFPaper e RicercaApprendimento e FormazioneRisorse Curate
GitHuboritwoen/boha

boha

Libreria di dati su bounty, puzzle e sfide crypto

Vedi Repository
166566 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
# @agntn/puzzles

[![npm version](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](https://npmx.dev/package/@agntn/puzzles)
[![npm downloads](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](https://npmx.dev/package/@agntn/puzzles)
[![license](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](https://npmx.dev/package/@agntn/puzzles)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/agntn/puzzles)

Puzzle e taglie crypto pubbliche, come record tipizzati. Chiedi un puzzle, ottieni il suo indirizzo, il suo materiale di chiave e cosa è successo on chain.

## Perché?

Ogni thread di puzzle ha le stesse tre cose: gli indirizzi, i premi e chi ha risolto cosa. Ogni scanner e tracker li ridigita dal thread, in modo leggermente diverso ogni volta. Così vivono qui una volta sola, come codice. Un puzzle è un record TypeScript. Il type checker lo legge prima che lo faccia un test. La CLI, il server MCP e le estensioni Pi e OMP leggono un unico registro.

Documentazione, una pagina per puzzle e un playground live: [puzzles.agntn.dev](https://puzzles.agntn.dev).

> [!WARNING]
> Pre-1.0. L'API, i flag della CLI e il modello dati possono ancora cambiare. Fissa una versione esatta se ci costruisci sopra.

## ✨ Funzionalità

- 🧾 **Dati come codice.** Un letterale `PuzzleSpec` per puzzle, costruito da un'unica factory `puzzle()` per ogni chain. Niente JSON, niente build step.
- 🕳️ **Assente significa assente.** Un puzzle senza un solver o un premio non ha quella chiave. Nulla viene serializzato come null.
- 🔑 **Materiale di chiave in ogni forma.** Hex, WIF, un payload BIP38, una seed phrase, secret share, un keyfile Arweave sigillato, o solo una larghezza in bit. Anche ogni chiave di un multisig. Un unico builder.
- 💤 **Registro lazy.** Importare il pacchetto non carica alcun record. `get("bits/71")` importa un modulo di una collezione.
- ✅ **La verifica è un valore.** Una chiave pubblicata deriva l'indirizzo oppure no. Nulla lancia eccezioni per un record errato.
- 💰 **Saldi live.** `puzzle.balance()` tramite `@agntn/explorers`. Unità base come `bigint`, chiavi API oscurate dagli errori.
- 👀 **Una sorveglianza sul record.** `puzzles watch` elenca i depositi e le spese che un record manca, un premio che si è spostato, una chiave pubblica che una spesa ha rivelato, una pagina sorgente che è cambiata. Non modifica mai un record. Lo fai tu.
- 📋 **Una checklist prima del weekend.** `puzzles eligibility` raccoglie la fonte, l'indirizzo, i totali complessivi dall'explorer, lo stato con le sue prove e cosa conta come soluzione. Tutto ciò che nessuno riesce a compilare torna come riga `missing`, mai come ipotesi.
- 🖼️ **Il puzzle stesso, non un link ad esso.** `puzzles_assets` consegna a un modello l'immagine, i file di stage e i post archiviati dietro gli indizi, verificati contro lo SHA-256 che il record fissa. I link marciscono. Questi no.
- 🤖 **Quindici strumenti per agenti.** Un unico executor dietro MCP, Pi e OMP. Stessa risposta ovunque.
- 🌐 **Gira ovunque.** ESM neutro sulla Fetch API. Node, browser, edge worker.

## 📦 Installazione

```bash
pnpm add @agntn/puzzles
```

Node.js 26 o versione successiva per la CLI.

## 🚀 Prima chiamata

```bash
npx @agntn/puzzles stats
```

Stampa il totale, un conteggio per stato e quanti puzzle hanno una chiave pubblica nota. Nessuna chiave, nessuna configurazione, nessuna rete. I record sono inclusi nel pacchetto. Il comando `puzzles` qui sotto è `pnpm exec puzzles` dopo un `pnpm add` locale, oppure semplicemente `puzzles` dopo `pnpm add -g @agntn/puzzles`.

```bash
puzzles show hash-collision/sha256
```

```text
hash-collision/sha256	unsolved	0.27734251 BTC	35Snmmy3uhaer2gTboc81ayCip4m9DT4ko
chain: bitcoin  address kind: p2sh
hash160: 292fb39df7cd619a396069383928e6bfb74ebec5
redeem script: 6e879169a87ca887 (hash 292fb39df7cd619a396069383928e6bfb74ebec5)
public key: unknown
private key: unknown
started: 2013-09-13 05:59:09
transactions: 1
	funding	2013-09-13 05:59:09	0.1 BTC	397f12ee15f8a3d2ab25c0f6bb7d3c64d2038ca056af10dd8251b98ae0f076b0
explorer: https://blockstream.info/address/35Snmmy3uhaer2gTboc81ayCip4m9DT4ko
source: https://bitcointalk.org/index.php?topic=293382.0
```

### Comandi

| Comando                       | Cosa stampa                                                                                                                            |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `puzzles stats`               | Totali, conteggi per stato, somme dei premi e la versione dei dati                                                                     |
| `puzzles collections`         | Una riga per collezione: chiave, conteggi, autore                                                                                      |
| `puzzles authors [key]`       | Una riga per autore, oppure il record di un autore con i suoi fatti documentati                                                        |
| `puzzles author <key>`        | Il record di un autore, direttamente dallo strumento `puzzles_author`                                                                  |
| `puzzles solvers [key]`       | Una riga per solver nominato, oppure il record di un solver: ogni risoluzione, profili e fatti documentati                             |
| `puzzles solver <key>`        | Il record di un solver, direttamente dallo strumento `puzzles_solver`                                                                  |
| `puzzles show <id>`           | Il record di un puzzle: materiale della chiave, transazioni, indizi e link. `--json` per i dati                                        |
| `puzzles hints <id>`          | Gli indizi della collezione, poi quelli del puzzle, poi i suoi file di indizi. `--json` per entrambi                                    |
| `puzzles stages <id>`         | Le fasi di un puzzle multi-fase con le loro pagine, file e risposte pubblicate. `--json` per la lista                                  |
| `puzzles assets <id>`         | I file forniti con un puzzle con SHA-256 e dimensione, e le pagine archiviate che cita. `--read <path>` ne scrive uno, `--check`/`--live` verificano |
| `puzzles list [collection]`   | Un puzzle per riga. `--address`, `--chain`, `--status`, `--technique` e `--with-pubkey` restringono, `--limit` e `--offset` paginano   |
| `puzzles verify [id]`         | Una chiave pubblicata e la sua ricetta rispetto all'indirizzo. `--all` o i filtri di `list` per un insieme, exit 1 in caso di discrepanza |
| `puzzles balance [id]`        | Il saldo live. I filtri di `list` controllano un intero insieme, una riga ciascuno. `--api-key`, oppure una variabile per catena        |
| `puzzles watch [id]`          | Ciò che la catena sa e il record no. `--since` controlla anche le pagine sorgente, exit 1 per qualsiasi anomalia                       |
| `puzzles eligibility <query>` | La checklist prima di lavorare su un premio, per id o indirizzo. Exit 1 finché manca un campo                                          |
| `puzzles export`              | L'intero dataset con il suo `data_version`                                                                                             |
| `puzzles mcp`                 | Il server MCP su stdio                                                                                                                 |

`--json` stampa i dati dietro il testo, `bigint` come stringhe e i campi assenti omessi. I comandi provengono dalle stesse definizioni di strumenti che ricevono gli agenti, quindi un errore di battitura in un flag fallisce qui proprio come fallisce per un modello. I flag e i codici di uscita sono nella [guida CLI](https://puzzles.agntn.dev/guide/cli).

## 🧠 Libreria

```ts
import { get, stats, verify } from "@agntn/puzzles";
import { bits } from "@agntn/puzzles/collections/bits";

const puzzle = await get("bits/71"); // loads the bits collection, nothing else
puzzle?.address().value; // "1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU"
puzzle?.keyRange(); // [2n ** 70n, 2n ** 71n - 1n]

(await verify(bits.require(1))).verified; // true, key 1 derives its address
(await stats()).unsolved; // how many are still waiting for a key
(await bits.require(71).balance()).totalUnits(); // 7.10190014 when I ran it, mempool.space decides
```

È praticamente tutto qui. Una collezione è una voce a sé stante e tutto ciò che contiene è sincrono. Le viste che attraversano le collezioni attendono un caricamento. Gli errori discendono da `PuzzlesError`, i bilanci hanno la propria famiglia sotto `BalanceError`. Il resto è nelle guide: [records](https://puzzles.agntn.dev/guide/records), [registry](https://puzzles.agntn.dev/guide/registry), [lookups](https://puzzles.agntn.dev/guide/lookups), [verification](https://puzzles.agntn.dev/guide/verification), [balances](https://puzzles.agntn.dev/guide/balances).

## 🗺️ Collezioni

| Chiave                      | Catene                              | Di cosa si tratta                           |
| --------------------------- | ----------------------------------- | ------------------------------------------- |
| `bits`                      | bitcoin                             | Chiavi da 1 a 256 bit, un indirizzo ciascuna |
| `quizchain`                 | bitcoin                             | Blocchi quiz concatenati tramite le loro chiavi |
| `quizchain2`                | bitcoin                             | La seconda edizione di Quizchain, da maggio 2019 |
| `rushwallet`                | bitcoin                             | Brainwallet da un concorso del 2014         |
| `zden`                      | bitcoin, ethereum, litecoin, decred | I puzzle visivi di Zden                     |
| `weave`                     | arweave, ethereum                   | La serie Puzzle Weave di Tiamat             |
| `move-over-brokers`         | bitcoin                             | Dodici chiavi nascoste in un libro sulla blockchain |
| `mini`                      | bitcoin, bitcoincash                | I sette mini-puzzle di RetiredCoder         |
| `warp`                      | bitcoin                             | Le sfide brainwallet scrypt di Keybase      |
| `hash-collision`            | bitcoin                             | Le taglie per collisione P2SH di Peter Todd |
| `teikhos`                   | ethereum                            | Contratti che pagano per una chiave pubblica |
| `ballet`                    | bitcoin                             | Chiavi BIP38 stampate su wallet fisici      |
| `dug`                       | bitcoin                             | Caccia al seed per studenti del 2025        |
| `coin-games`                | bitcoin                             | Banconote con un teschio, un leone e Venere |
| `bitimage`                  | bitcoin                             | Seed ricavati tramite hash da fotografie    |
| `luckylurker`               | bitcoin                             | Due sfide seed Bitcoin Vault                |
| `iamabananaamaa`            | bitcoin                             | Un ZIP in un GIF, poi un falso Cesare       |
| `doges-gambit`              | ethereum, dogecoin                  | Due chiavi lette da un video di una scacchiera |
| `crypto-puzzles`            | ethereum                            | Chiavi Ether grezze nascoste in brevi video |
| `walking-banks`             | bitcoin                             | Un seed nascosto in un romanzo thriller su Bitcoin |
| `grycoin`                   | bitcoin                             | Quizchain rinominato, pochi giorni prima della chiusura |
| `smith-lyle-moore`          | bitcoin                             | Le due cacce di una band, una per singolo    |
| `real-big-block`            | bitcoin                             | 777 mBTC per un capitolo di Wattpad, non reclamati |
| `school-of-bitcoin`         | bitcoin                             | Un biglietto da visita con 1M di sats sul retro |
| `liberte-guidant-le-peuple` | bitcoin                             | Delacroix in gilet gialli, seed in francese |
| `hunting-time`              | bitcoin                             | Parole seed camuffate da orari in un romanzo |
| `bitaps`                    | bitcoin                             | Uno schema di condivisione segreta 3 su 5   |
| `gsmg`                      | bitcoin                             | Un puzzle a immagini multifase              |
| `movie-enigma`              | bitcoin                             | Titoli di film come parole seed, risolto nel 2026 |
| `ledger-donjon`             | bitcoin                             | Scissors Secret Sharing dal CTF            |
| `coin-artist`               | bitcoin                             | Dipinto TORCHED H34R7S                      |
| `genesis`                   | bitcoin                             | Puzzle OP_RETURN del blocco genesis         |
| `mineshop`                  | ethereum                            | Un seed diviso tra un video e un post       |
| `satoshi-birthday-quiz`     | bitcoin                             | Sette risposte di un quiz trasformate in hash dentro un wallet |
| `book-quiz`                 | bitcoin                             | Un quiz su un libro che nessuno ha vinto in tempo |
| `80-bit`                    | bitcoin                             | 80 bit nascosti e una corsa nella mempool |
| `wickex`                    | bitcoin                             | Esadecimale, Morse e una passphrase da spettrogramma |
| `picture-puzzle`            | bitcoin                             | Quattro immagini che compongono un database di chiavi |
| `brave-new-world`           | bitcoin                             | Una seed phrase nascosta in un collage del 2020 |
| `wealth-in-poetry`          | bitcoin                             | Parole seed nascoste in un saggio su Medium del 2019 |
| `path-to-greatness`         | litecoin                            | Indizi da una demo di un gioco, una chiave Litecoin |
| `proof-of-writing`          | ecash                               | Una seed Cashtab sulla diagonale di un saggio |
| `bitaddress`                | bitcoin                             | Un wallet BIP38 con una passphrase dimenticata |
| `powerful-moss`             | base                                | Una seed in un album, il premio in un contratto |
| `trivia-brainwallet`        | bitcoin                             | Dodici indovinelli di trivia salati in scrypt |
| `great-riddle`              | bitcoin                             | Parole seed nascoste in disegni a penna a sfera |
| `satoshi-maze`              | bitcoin                             | Un numero primo da e per due parole Base58 |
| `natasha-otomoski`          | bitcoin                             | Otto parole camel case come byte grezzi di chiave |
| `phy`                       | bitcoin                             | Un post firmato e una spirale di emoji grigie |
| `seed-phrase`               | bitcoin                             | Indizi datati, poi due anni di silenzio |
| `9vw04`                     | bitcoin                             | Una WIF in un tweet, arcobaleni esclusi |

Gli identificatori sono `collection/name`. Un singleton, come `gsmg`, `genesis` o `80-bit`, è solo la chiave. Ogni collezione ha una pagina con la storia, le particolarità e ogni puzzle: [puzzles.agntn.dev/collections](https://puzzles.agntn.dev/collections).

## 🤖 Agenti

```bash
claude mcp add puzzles --scope user -- npx -y @agntn/puzzles mcp
claude mcp add --transport http puzzles https://puzzles.agntn.dev/mcp # nothing to install
pi install npm:@agntn/puzzles
```

```json
{
  "mcpServers": {
    "puzzles": { "command": "npx", "args": ["-y", "@agntn/puzzles", "mcp"] }
  }
}
```

Quindici strumenti: `puzzles_stats`, `puzzles_collections`, `puzzles_authors`, `puzzles_author`, `puzzles_solvers`, `puzzles_solver`, `puzzles_show`, `puzzles_hints`, `puzzles_stages`, `puzzles_assets`, `puzzles_list`, `puzzles_verify`, `puzzles_balance`, `puzzles_watch` e `puzzles_eligibility`. Gli ultimi tre terminano il processo, e lo fa anche `puzzles_assets` quando legge un file. Le loro annotazioni lo indicano. Cosa contiene il testo e dove si trovano i limiti: la [guida per gli agenti](https://puzzles.agntn.dev/guide/agents).

## 🚫 Cosa non fa

Non risolve nulla. Nessuno scanner, nessun kangaroo, nessun cracker di brainwallet e nessuna deduzione di uno stato da un elenco di transazioni. `solved`, `swept`, `claimed` ed `expired` sono scritti a mano, perché una transazione di claim più una chiave pubblicata significa comunque risolto. I fatti della catena provengono da `@agntn/chains`, la derivazione delle chiavi da `@agntn/keys` e i saldi da `@agntn/explorers`. Questo pacchetto non ne reimplementa nessuno.

## 🧩 Aggiungere un puzzle

Un file di record sotto `src/collections/<key>/` e una riga nel modulo della collezione. Poi `pnpm test` esegue il controllo dei dati: id univoci, formati di indirizzi e txid, derivazione delle chiavi, payload BIP38, percorsi degli asset e il loro SHA-256, nessun valore nullo. La struttura di un record è in [Puzzle records](https://puzzles.agntn.dev/guide/records) e le regole in [CONTRIBUTING.md](https://github.com/oritwoen/boha/blob/main/CONTRIBUTING.md).

## 🛠️ Sviluppo

```bash
pnpm install
pnpm --dir docs install   # the docs site; lint and test read the Nuxt types it generates
pnpm lint         # vp lint and vp fmt, docs included
pnpm typecheck    # builds first, then checks src, Pi and OMP
pnpm test         # unit tests and the data gate
pnpm test:packed  # packs the tarball and runs every published entry without src/
pnpm docs         # the Docus site on localhost
```

## 💛 Ringraziamenti

Questo pacchetto esiste grazie ai programmi open source di Anthropic e OpenAI: [Claude for Open Source](https://claude.com/contact-sales/claude-for-oss) e [Codex for Open Source](https://developers.openai.com/community/codex-for-oss).

## 📄 Licenza

[MIT](https://github.com/oritwoen/boha/blob/main/LICENSE)
Scarica lo strumento