From 9dda40ab87edadd39a28d779fb939a0ae7cc3f7b Mon Sep 17 00:00:00 2001 From: davide3011 Date: Fri, 23 Jan 2026 09:06:58 +0100 Subject: [PATCH] Aggiunge README.md generale --- README.md | 303 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..79d1397 --- /dev/null +++ b/README.md @@ -0,0 +1,303 @@ +# Bitcoin P2PK Research Suite + +Suite completa di strumenti per ricerca educativa su transazioni Bitcoin Pay-to-Public-Key (P2PK) e sicurezza crittografica. + +## ⚠️ Disclaimer Importante + +**Questo progetto è ESCLUSIVAMENTE per scopi educativi e di ricerca.** + +- Non utilizzare per attività illegali o tentativi di accesso non autorizzato +- La ricerca di chiavi private altrui è illegale +- Lo scopo è dimostrare la sicurezza crittografica di Bitcoin (ECDSA secp256k1) +- La probabilità di trovare chiavi per bruteforce è praticamente zero (1 su 2^256) + +## Panoramica + +Questo repository contiene due componenti principali: + +1. **Scanner Python**: Analizza la blockchain Bitcoin per identificare e catalogare transazioni P2PK +2. **Bruteforce C++**: Dimostra l'impossibilità pratica di trovare chiavi private per bruteforce + +## Quick Start + +### 1. Scanner Python - Analisi Blockchain + +Scansiona la blockchain Bitcoin per trovare transazioni P2PK e verificare UTXO. + +```bash +# Installa dipendenze Python +python3 -m venv .venv +source .venv/bin/activate # Linux/macOS +pip install -r requirements.txt + +# Esegui lo scanner +cd databases +python3 scan_blockchain.py + +# Genera report HTML +python3 view_db.py +``` + +**Output**: +- Database SQLite con tutte le transazioni P2PK trovate +- Report HTML interattivo con statistiche e ricerca +- Esportazione CSV dei dati + +### 2. Bruteforce C++ - Dimostrazione Sicurezza + +Dimostra l'impossibilità pratica del bruteforce su chiavi Bitcoin. + +```bash +# Installa dipendenze C++ +cd bruteforce +make install-deps + +# Compila con ottimizzazioni massime +make + +# Estrai chiavi P2PK non spese dal database +python3 extract_p2pk_utxo.py + +# Esegui il bruteforce (dimostrazione) +./p2pk_bruteforce +``` + +**Performance**: ~50-100K keys/sec su hardware comune + +## Documentazione Dettagliata + +Ogni componente ha la sua documentazione specifica: + +- **[Scanner Python](databases/README.md)**: Guida completa scanner blockchain +- **[Bruteforce C++](bruteforce/README.md)**: Guida completa programma bruteforce + +## Componenti + +### Scanner Python (Database) + +**Scopo**: Analizzare la blockchain Bitcoin per identificare transazioni P2PK storiche. + +**Caratteristiche**: +- Scansione blocchi Bitcoin via API mempool.space +- Salvataggio in database SQLite normalizzato +- Verifica UTXO in tempo reale (speso/non speso) +- Report HTML interattivo con statistiche +- Scansione incrementale (riprende da dove si ferma) +- Rate limiting intelligente per rispettare le API +- Esportazione dati in CSV + +**Tecnologie**: +- Python 3.x +- SQLite3 +- Requests (HTTP API) +- HTML/CSS/JavaScript (report) + +**Blocchi interessanti**: +- Blocchi 1-10000: Era di Satoshi, quasi tutti P2PK +- Blocchi 10000-100000: Transizione verso P2PKH +- Blocchi 100000+: Prevalentemente P2PKH, P2SH, SegWit + +### Bruteforce C++ (Ricerca Chiavi) + +**Scopo**: Dimostrare l'impossibilità pratica del bruteforce su Bitcoin. + +**Caratteristiche**: +- Ottimizzato per massima velocità (C++ con secp256k1) +- Multi-threading automatico (usa tutti i core CPU) +- Partizionamento spazio chiavi 2^256 tra thread +- Generazione chiavi casuali con seed robusti +- Statistiche in tempo reale (velocità, tentativi, tempo) +- Logging progresso in CSV +- Zero sovrapposizione tra thread (efficienza massima) +- Formato numeri leggibile (K, M, G, T) + +**Tecnologie**: +- C++11 +- libsecp256k1 (libreria Bitcoin Core) +- pthread (multi-threading) +- Makefile (build system) + +**Ottimizzazioni**: +- Compilazione nativa (`-march=native -mtune=native`) +- Link-Time Optimization (`-flto`) +- Profile-Guided Optimization (opzionale) +- Partitioning dello spazio delle chiavi +- Seed XOR-based per zero correlazione + +## Statistiche e Performance + +### Scanner Python +- **Velocità**: ~1-5 blocchi/sec (dipende da delay API) +- **API calls**: ~3-5 per blocco +- **Database size**: ~100KB per 1000 blocchi P2PK +- **Rate limit**: Configurabile (default 1.0s tra blocchi) + +### Bruteforce C++ +- **Raspberry Pi 5 (4 core)**: ~50-60K keys/sec +- **CPU moderna (8 core)**: ~100-500K keys/sec +- **CPU high-end (16+ core)**: ~1M+ keys/sec +- **Efficienza threading**: Lineare (100% utilizzo core) + +### Matematica della (Im)Probabilità + +**Spazio delle chiavi**: 2^256 ≈ 1.16 × 10^77 chiavi possibili + +**Con 1 milione di chiavi/sec**: +- 1 anno = 3.15 × 10^13 tentativi +- Probabilità successo = 2.7 × 10^-64 (praticamente zero) +- Tempo per testare tutto = 3.67 × 10^63 anni +- Età dell'universo = 1.38 × 10^10 anni + +**Conclusione**: È più probabile vincere la lotteria 10 volte consecutive che trovare una chiave per caso. + +## Workflow Completo + +### Ricerca Educativa Tipica + +1. **Scansione Blockchain** (Scanner Python): + ```bash + cd databases + python3 scan_blockchain.py + # Scansiona blocchi 1-10000 (ricchi di P2PK) + ``` + +2. **Analisi Dati** (Visualizzatore): + ```bash + python3 view_db.py + # Genera report HTML interattivo + ``` + +3. **Estrazione Target** (Preparazione Bruteforce): + ```bash + cd ../bruteforce + python3 extract_p2pk_utxo.py + # Estrae P2PK non spesi dal database + ``` + +4. **Dimostrazione Sicurezza** (Bruteforce): + ```bash + ./p2pk_bruteforce + # Dimostra l'impossibilità pratica del bruteforce + ``` + +## Scopo Educativo + +Questo progetto insegna: + +1. **Struttura Blockchain Bitcoin**: + - Differenza tra P2PK, P2PKH, P2SH, SegWit + - Formato transazioni e ScriptPubKey + - Concetto di UTXO (Unspent Transaction Output) + +2. **Crittografia Bitcoin**: + - ECDSA su curva secp256k1 + - Generazione chiavi pubbliche da private + - Spazio delle chiavi 2^256 + +3. **Sicurezza Crittografica**: + - Perché il bruteforce è impossibile + - Importanza dello spazio delle chiavi grande + - Scalabilità esponenziale (ogni bit raddoppia il tempo) + +4. **Ottimizzazione Software**: + - Multi-threading efficiente + - Partizionamento dati + - Eliminazione race conditions + - Profiling e misurazione performance + +## Requisiti di Sistema + +### Minimi +- **OS**: Linux, macOS, Windows (WSL) +- **RAM**: 512MB +- **Storage**: 100MB +- **CPU**: Single core +- **Python**: 3.7+ +- **Compiler**: GCC 7+ o Clang 8+ + +### Raccomandati +- **OS**: Linux (migliore performance) +- **RAM**: 2GB+ +- **Storage**: 1GB+ +- **CPU**: Multi-core (4+) +- **Python**: 3.10+ +- **Compiler**: GCC 11+ o Clang 14+ + +## Collaborazione Multi-Utente + +### Scansione Distribuita + +Più utenti possono collaborare per scansionare blocchi diversi: + +1. **Utente A**: Scansiona blocchi 1-5000 +2. **Utente B**: Scansiona blocchi 5001-10000 +3. **Utente C**: Scansiona blocchi 10001-15000 + +```bash +# Sincronizza database via Git +git pull +python3 scan_blockchain.py # Scansiona il tuo range +git add databases/*.db +git commit -m "Scansionati blocchi X-Y" +git push +``` + +### Best Practices +- Coordinarsi sui range di blocchi +- Usare delay ≥ 1.0s per non sovraccaricare API +- Fare pull prima di ogni nuova scansione +- Committare database dopo scansioni complete + +## Risoluzione Problemi + +### Scanner Python + +**Errore: API timeout** +```bash +# Aumenta il delay tra richieste +# Nel prompt: delay = 2.0 secondi +``` + +**Errore: Database locked** +```bash +# Chiudi tutti gli script che usano il database +pkill -f scan_blockchain +``` + +### Bruteforce C++ + +**Errore: libsecp256k1 non trovata** +```bash +cd bruteforce +make install-secp256k1 +``` + +**Velocità troppo bassa** +```bash +# Verifica numero thread +htop # Controlla utilizzo CPU + +# Ricompila con ottimizzazioni +make clean +make +``` + +## Crediti +- **Bitcoin**: [bitcoin.org](https://bitcoin.org) +- **API**: [mempool.space](https://mempool.space) +- **libsecp256k1**: [Bitcoin Core](https://github.com/bitcoin-core/secp256k1) +- **Documentazione**: [Bitcoin Wiki](https://en.bitcoin.it/wiki) + +## Contributi +Sviluppato con assistenza di Claude Code (Anthropic). + +## Link Utili + +- [Bitcoin Whitepaper](https://bitcoin.org/bitcoin.pdf) +- [secp256k1 Documentation](https://github.com/bitcoin-core/secp256k1) +- [Mempool.space API](https://mempool.space/docs/api) +- [P2PK Transactions](https://en.bitcoin.it/wiki/Transaction) + +--- + +**⚠️ Ricorda**: La sicurezza di Bitcoin si basa sull'impossibilità computazionale del bruteforce. Questo progetto lo dimostra in pratica.