
असुरक्षित क्रिप्टोग्राफिक कुंजी पीढ़ी के अध्ययन के लिए शोध उपकरण (brainwallet, PRNG, milksad, LCG, xorshift)
कमज़ोर Bitcoin कुंजी निर्माण का विश्लेषण और पुनरुत्पादन करने के लिए अनुसंधान उपकरण।
यह उपकरण सुरक्षा अनुसंधान के लिए डिज़ाइन किया गया है - यह समझने के लिए कि अतीत में कमज़ोर कुंजी कैसे उत्पन्न हुईं, जिससे आधुनिक वॉलेट सुरक्षा में सुधार होता है।
इस उपकरण द्वारा पुनरुत्पादित की जा सकने वाली ऐतिहासिक भेद्यताएँ:
| भेद्यता | वर्ष | प्रभाव |
|---|---|---|
| Brainwallets | 2011-2015 | SHA256(पासफ़्रेज़) आसानी से टूटा |
| Weak PRNGs | 2013-2023 | पूर्वानुमेय सीड्स (टाइमस्टैम्प, PIDs) |
| Milksad | 2023 | libbitcoin bx ने 32-बिट सीड्स के साथ MT19937 का उपयोग किया |
| MultiBit HD | 2014-2016 | 64-बाइट BIP39 सीड को एंट्रॉपी के रूप में उपयोग किया गया |
| Electrum pre-BIP39 | 2011-2014 | कमज़ोर स्ट्रेचिंग के साथ कस्टम नियतात्मक व्युत्पत्ति |
| Armory HD | 2012-2016 | Pre-BIP32 नियतात्मक व्युत्पत्ति |
| LCG PRNGs | 1990s-2010s | glibc rand(), MINSTD, MSVC - केवल 31-32 बिट स्टेट |
| Xorshift PRNGs | 2003-present | V8/SpiderMonkey Math.random() - 64-128 बिट स्टेट |
| SHA256 chains | 2010s-present | कमज़ोर सीड्स से नियतात्मक कुंजी व्युत्पत्ति |
cargo install vuke
### स्रोत से```bash
git clone https://github.com/oritwoen/vuke
cd vuke
cargo build --release
vuke single "correct horse battery staple" --transform sha256
आउटपुट:```
Passphrase: "correct horse battery staple"
Transform: sha256
Source: correct horse battery staple
---
Private Key (hex): c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a
WIF (compressed): L3p8oAcQTtuokSCRHQ7i4MhjWc9zornvpJLfmg62sYpLRJF9woSu
---
P2PKH (compressed): 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T
P2WPKH: bc1qfnpg7ceg02y64qrskgz0drwp3y6hma3q6wvnzr
vuke scan --transform=sha256 --targets known_addresses.txt wordlist --file passwords.txt
### डेटा प्रदाता
फ़ाइल पथों के बजाय, डायनामिक लक्ष्य लोडिंग के लिए प्रदाता संदर्भों का उपयोग करें:```bash
# Scan all unsolved b1000 puzzles
vuke scan --transform=milksad --targets boha:b1000:unsolved range --start 1 --end 1000000
# Scan specific collection with filter
vuke scan --transform=sha256 --targets boha:b1000:with-pubkey wordlist --file words.txt
# Available filters: all, unsolved, solved, with-pubkey
vuke scan --targets boha:hash_collision:unsolved wordlist --file words.txt
Provider syntax: provider:collection:filter or provider:collection:id
Available collections (boha provider):
b1000 - Bitcoin puzzle 1000 (256 puzzles, 1-256 bits)gsmg - GSMG puzzlebitaps - Bitaps puzzlehash_collision - Hash collision puzzleszden - Zden puzzlesbitimage - Bitimage puzzlesvuke generate --transform=milksad range --start 1 --end 1000000
### परीक्षण LCG-आधारित कुंजियाँ```bash
# Generate keys using glibc rand() (default big-endian)
vuke generate --transform=lcg:glibc range --start 1 --end 1000000
# Use MINSTD variant with big-endian byte order
vuke generate --transform=lcg:minstd:be range --start 1 --end 1000
# Test all LCG variants at once
vuke generate --transform=lcg range --start 1 --end 100
vuke generate --transform=xorshift range --start 1 --end 1000000
vuke generate --transform=xorshift:64 range --start 1 --end 1000 vuke generate --transform=xorshift:128 range --start 1 --end 1000 vuke generate --transform=xorshift:128plus range --start 1 --end 1000 vuke generate --transform=xorshift:xoroshiro range --start 1 --end 1000
### टाइमस्टैंप-आधारित कुंजियों का परीक्षण करें```bash
vuke scan --transform=sha256 --targets addresses.txt timestamps --start 2015-01-01 --end 2015-01-31
vuke generate --transform=bitimage files --file image.jpg
vuke generate --transform=bitimage files --dir ./images/
vuke generate --transform=bitimage --bitimage-path "m/44'/0'/0'/0/0" --bitimage-passphrase "secret" files --file photo.png
vuke generate --transform=bitimage --bitimage-derive-count 10 files --dir ./data/
vuke scan --transform=bitimage --bitimage-passphrase-wordlist passphrases.txt --targets addresses.txt files --dir ./images/
### एकाधिक रूपांतरण```bash
vuke scan --transform=sha256 --transform=double_sha256 --transform=md5 --targets addresses.txt wordlist --file words.txt
cat passwords.txt | vuke generate --transform=sha256 stdin
### परिणाम फ़ाइल में सहेजें```bash
vuke generate --output results.csv range --start 1 --end 1000000
vuke generate --output results.txt --verbose range --start 1 --end 1000
vuke scan --output hits.txt --targets addresses.txt wordlist --file passwords.txt
परिणामों को Parquet प्रारूप में टीबी-स्केल विश्लेषण के लिए संग्रहीत करें (storage सुविधा आवश्यक):```bash
cargo build --release --features storage
vuke generate --storage ./results --transform milksad range --start 1 --end 1000000
vuke generate --storage ./results --chunk-records 500000 --chunk-bytes 50M range --start 1 --end 10000000
vuke generate --storage ./results --compression zstd --compression-level 9 range --start 1 --end 1000000
vuke generate --storage ./results --compression none range --start 1 --end 1000000
### संग्रहीत परिणामों को क्वेरी करें (SQL)
SQL का उपयोग करके संग्रहीत Parquet फ़ाइलों को क्वेरी करें (`storage-query` सुविधा आवश्यक है):```bash
# Build with query support
cargo build --release --features storage-query
# Count results by transform
vuke query ./results "SELECT transform, COUNT(*) FROM results GROUP BY transform"
# Find matches
vuke query ./results "SELECT * FROM results WHERE matched_target IS NOT NULL LIMIT 10"
# Export to JSON
vuke query ./results --format json "SELECT source, wif_compressed FROM results LIMIT 100"