Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
bitcoin-security — बिटकॉइन कुंजी एंट्रॉपी का शैक्षिक अध्ययन: कमज़ोर-RNG वॉलेट गणना (Milk Sad / CVE-2023-39910 श्रेणी) बनाम एक अच्छी कुंजी को ब्रूट-फोर्स करने की असंभवता। | Kitploit
उपकरण/GitHubGitHub/xaxis/bitcoin-security
भेद्यता विश्लेषणक्रिप्टोग्राफीलर्निंग और शिक्षा
GitHubxaxis/bitcoin-security

bitcoin-security

बिटकॉइन कुंजी एंट्रॉपी का शैक्षिक अध्ययन: कमज़ोर-RNG वॉलेट गणना (Milk Sad / CVE-2023-39910 श्रेणी) बनाम एक अच्छी कुंजी को ब्रूट-फोर्स करने की असंभवता।

रिपॉजिटरी देखें
6 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

bitcoin-security

बिटकॉइन कुंजी सुरक्षा वास्तव में कहाँ से आती है — और कहाँ से नहीं आती — इसका एक शैक्षिक अध्ययन। यह वास्तविक BIP39/BIP32 व्युत्पत्ति के इर्द-गिर्द निर्मित है, जिसमें दो प्रयोग हैं जो एक ही विचार के विपरीत छोरों पर स्थित हैं:

प्रयोगखोज स्थानसंभव?यह क्या सिखाता है
weak_entropy — कमजोर-RNG वॉलेट स्थान की गणना2³² (एक खराब RNG)हाँ, दिनों मेंएक वॉलेट उतना ही मज़बूत है जितनी उसके पीछे की एन्ट्रॉपी।
blind_search — एक अच्छे कुंजी स्थान पर ब्रूट-फोर्स2¹⁶⁰ (एक अच्छा RNG)नहीं, कभी नहींवास्तविक एन्ट्रॉपी के साथ, कुंजी स्थान भौतिक रूप से अखोजनीय है।

पूरा मुद्दा इस विरोधाभास का है: कुंजियाँ खराब रैंडमनेस पर हमला करके चुराई जाती हैं, अच्छी रैंडमनेस की गणना को पीछे छोड़कर कभी नहीं। दोनों प्रयोग एक ही तरह के वास्तविक मेननेट पते व्युत्पन्न करते हैं, इसलिए एकमात्र चर एन्ट्रॉपी है।


⚠️ दायरा और आशय

यह रिपॉज़िटरी रक्षात्मक शिक्षा और सुरक्षा अनुसंधान के लिए है: यह समझने के लिए कि कमजोर-RNG वॉलेट बग (Milk Sad / CVE-2023-39910, 2018 का Trust Wallet एक्सटेंशन बग, और उनके जैसे अन्य) विनाशकारी क्यों थे, और एक सही ढंग से जनरेट की गई कुंजी पर ब्रूट-फोर्स करना क्यों नहीं है।

  • weak_entropy एक स्व-निहित सिंथेटिक स्थान की गणना करता है। इसका weak_entropy() भेद्यता वर्ग का एक जानबूझकर बनाया गया मॉडल है — एक 32-bit PRNG जो BIP39 को फीड करता है — न कि किसी वास्तविक वॉलेट के RNG की बाइट-सटीक प्रतिकृति। यह जो पते उत्पन्न करता है वे किसी के भी वास्तविक वॉलेट के अनुरूप नहीं हैं।
  • blind_search आपके अपने नोड के विरुद्ध एक केवल-पठन शेषराशि जाँच है। यह कोई कुंजी व्युत्पन्न नहीं करता और कुछ खर्च नहीं कर सकता; इसका मुख्य मोड अंधी खोज की निरर्थकता को मापता है।
  • यह परियोजना जानबूझकर नहीं प्रदान करती है, और प्रदान करने के लिए विस्तारित नहीं की जाएगी, ऐसा पाइपलाइन जो वास्तविक पीड़ितों के धन को लक्षित करे (जैसे किसी वास्तविक वॉलेट के RNG का पुनरुत्पादन, या वित्तपोषित पतों के हिट्स को पुनर्प्राप्त कुंजियों से जोड़ना)। यही भेद्यता का अध्ययन करने और उसे हथियार बनाने के बीच की रेखा है।

इसे उन वॉलेट्स पर उपयोग करें जिन्हें आप नियंत्रित करते हैं, testnet पर, या सैंडबॉक्स के रूप में। इसे दूसरे लोगों के पैसे पर न लगाएँ।

कानूनी और उत्तरदायी उपयोग

केवल शिक्षा और अधिकृत सुरक्षा अनुसंधान के लिए। इसे केवल उन कुंजियों, वॉलेट्स और प्रणालियों पर उपयोग करें जिनके स्वामी आप हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। दूसरों के वॉलेट्स या प्रणालियों तक अनधिकृत पहुँच और डिजिटल परिसंपत्तियों की चोरी, तकनीकी साधनों की परवाह किए बिना, US CFAA (18 U.S.C. § 1030), UK Computer Misuse Act 1990, और EU Directive 2013/40/EU जैसे कानूनों के तहत अवैध है। "जैसा है" (as is), बिना वारंटी के प्रदान किया गया; लेखक दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करते। यह कानूनी सलाह नहीं है। पूर्ण शर्तें और उत्तरदायी प्रकटीकरण मार्गदर्शन: DISCLAIMER.md।


मुख्य सबक

एक वॉलेट की सुरक्षा उस एन्ट्रॉपी से सीमित होती है जो उसके सीड में डाली गई थी, न कि आगे के चरणों में उपयोग होने वाले SHA-256 / PBKDF2 / secp256k1 की मज़बूती से।

BIP39 एन्ट्रॉपी को म्नेमोनिक में बदलता है, PBKDF2 इसे एक सीड में विस्तारित करता है, और BIP32 कुंजियों का एक वृक्ष व्युत्पन्न करता है। यह सब मज़बूत है। लेकिन इनमें से कोई भी एन्ट्रॉपी जोड़ता नहीं है — यदि सीड एक छोटे समुच्चय से लिया गया था, तो वॉलेट जो भी पता उत्पन्न कर सकता है वह गणनीय है, और कोई भी हैशिंग इसे छिपा नहीं सकती।


रिपॉज़िटरी संरचना

root@kitploit:~
bitcoin-security/
├── bitcoin_security/            # the package
│   ├── derivation.py            #   shared core: BIP39 + BIP32 + P2PKH/WIF
│   ├── data/english.txt         #   BIP39 English wordlist (2048 words)
│   ├── weak_entropy/            #   Experiment 1 — enumerable weak space
│   │   ├── enumerate.py         #     recovery demo + full-space dump
│   │   └── README.md
│   └── blind_search/            #   Experiment 2 — futile brute-force search
│       ├── scan.py              #     UTXO-set balance scanner + odds
│       └── README.md
├── tests/                       # offline test suites (no node/network)
│   ├── test_blind_search_addresses.py
│   └── test_blind_search_pipeline.py
├── docs/FINDINGS.md             # benchmarks + exact full-space size derivation
├── pyproject.toml
├── requirements.txt
└── LICENSE

यह संरचना विचार को दर्शाती है: एक साझा derivation कोर, दो प्रयोग जो एक ही पता स्थान के बारे में विपरीत निष्कर्षों तक पहुँचने के लिए इसका उपयोग करते हैं।

स्थापना

root@kitploit:~
pip install -r requirements.txt          # runtime deps
# optional — installs the package + `bsec-enumerate` / `bsec-scan` commands:
pip install -e .

coincurve (native libsecp256k1) व्युत्पत्ति को ~5× तेज़ बनाता है लेकिन वैकल्पिक है — derivation.py समान आउटपुट के साथ pure-Python ecdsa पर वापस आ जाता है। यहाँ कुछ भी नेटवर्क को स्पर्श नहीं करता, सिवाय ऑप्ट-इन --check-balance फ्लैग और blind_search के (जिसे एक स्थानीय Bitcoin नोड चाहिए)।

सब कुछ रिपॉज़िटरी रूट से एक मॉड्यूल के रूप में चलता है; किसी स्थापना की आवश्यकता नहीं:

root@kitploit:~
python3 -m bitcoin_security.weak_entropy --help
python3 -m bitcoin_security.blind_search --help

प्रयोग 1 — weak_entropy: कमजोर एन्ट्रॉपी गणनीय है

वॉलेट की BIP39 एन्ट्रॉपी के "यादृच्छिक" 16 बाइट्स वास्तव में एक 32-bit सीड से आते हैं। पूरी व्युत्पत्ति वास्तविक है और स्पेक वेक्टर्स के विरुद्ध सत्यापित है।

root@kitploit:~
seed32 ──MT19937──▶ 16-byte entropy ──BIP39──▶ mnemonic ──PBKDF2(2048)──▶ 64-byte seed
                                                                              │
                            address ◀──hash160──── pubkey ◀──BIP32 m/44'/0'/0'/0/0
root@kitploit:~
# Recovery: derive a victim wallet from a weak seed, then recover its full
# mnemonic + private key knowing only the public address.
python3 -m bitcoin_security.weak_entropy

# Expand one seed into every form.
python3 -m bitcoin_security.weak_entropy --show 3571

# Materialize the whole 2**32 space to sharded, resumable files.
python3 -m bitcoin_security.weak_entropy --dump-all --out-dir space_dump --max-file-mb 1000

पंक्तियाँ न्यूनतम हैं (address <TAB> seed32) क्योंकि हर अन्य रूप seed32 का एक नियतात्मक फलन है, जिसे --show के साथ माँग पर पुनर्जनित किया जाता है। डंप शार्ड स्तर पर फिर से शुरू करने योग्य हैं (सत्यापित किया गया है कि वे सतत, अंतराल-रहित, डुप्लिकेट-रहित कवरेज पुनरुत्पादित करते हैं)। पूर्ण फ्लैग संदर्भ weak_entropy/README.md में।

पैमाने की चेतावनी। पूर्ण 2³² डंप ~196 GB (न्यूनतम) या ~1.05 TB (--full) है और native बैकएंड के साथ भी दिनों का समय लेता है — देखें docs/FINDINGS.md। आपको लगभग कभी भी पूरी चीज़ की आवश्यकता नहीं होती; निरीक्षण के लिए एक सीमित हिस्सा ही डंप करें।


प्रयोग 2 — blind_search: आप एक अच्छी कुंजी पर ब्रूट-फोर्स नहीं कर सकते

scantxoutset के माध्यम से एक स्थानीय (pruning-OK) नोड के UTXO सेट पर एक वास्तविक, कार्यशील शेषराशि स्कैनर। इसका उद्देश्य शून्य परिणाम है: पता स्थान को आँख बंद करके खोजें, मापें कि आपको कुछ नहीं मिलता, और वह अंकगणित प्रिंट करें जो दिखाता है कि आपको हमेशा कुछ नहीं मिलेगा।

root@kitploit:~
python3 -m bitcoin_security.blind_search --odds-only            # just the math, no node
python3 -m bitcoin_security.blind_search --random 200000 --odds # search 200k random addrs, then the math
python3 -m bitcoin_security.blind_search --control             # verify the pipeline finds known-funded addrs

परिणाम: स्थान 2¹⁶⁰ ≈ 1.46×10⁴⁸ है; ~55M पतों में शेषराशि है; इसलिए एक यादृच्छिक पते के वित्तपोषित होने की प्रायिकता ~3.8×10⁻⁴¹ है। एक अरब पते/सेकंड की गति पर भी आपको ~8×10²³ वर्ष प्रतीक्षा करनी पड़ेगी — ब्रह्मांड की आयु का ~61 ट्रिलियन गुना। यह हार्डवेयर की समस्या नहीं है: Landauer की सीमा के अनुसार, केवल 2¹⁶⁰ तक गिनती करना भी सूर्य की शेष ऊर्जा उत्पादन से अधिक है। नोड सेटअप blind_search/README.md में।


संश्लेषण

दोनों प्रयोग एक ही तरह का पता व्युत्पन्न करते हैं। एकमात्र अंतर उस समुच्चय का आकार है जिससे सीड लिया गया था:

  • अच्छी एन्ट्रॉपी → 2¹⁶⁰, भौतिकी द्वारा अखोजनीय। (प्रयोग 2)
  • कमजोर एन्ट्रॉपी → 2³², एक लैपटॉप पर दिनों में समाप्त करने योग्य। (प्रयोग 1)

वह अंतर — 128 बिट — पूरी बाज़ी है। इस वर्ग की हर वास्तविक चोरी उसी अंतराल में हुई थी।


परीक्षण

root@kitploit:~
python3 tests/test_blind_search_addresses.py     # BIP-173/350/380 address vectors
python3 tests/test_blind_search_pipeline.py       # scan pipeline, RPC stubbed
python3 -m bitcoin_security.derivation            # derivation self-test (spec vectors)

प्रयोगात्मक निष्कर्ष (सारांश)

पूर्ण विवरण, विधियाँ और मशीन विनिर्देश docs/FINDINGS.md में।

  • शुद्धता: व्युत्पत्ति BIP39/BIP32/BIP-173/350/380 स्पेक वेक्टर्स के विरुद्ध सत्यापित; स्कैनर ऑफ़लाइन परीक्षण सुइट्स और प्रत्येक रन में एक अनिवार्य ज्ञात-वित्तपोषित नियंत्रण पते के साथ आता है।
  • प्रदर्शन: pure-Python ecdsa को coincurve (libsecp256k1) से बदलने पर Apple M3 Max पर प्रति-वॉलेट व्युत्पत्ति 3.02 ms → 0.591 ms (~5.1×) हो गई; शेष निचली सीमा 0.463 ms/वॉलेट पर PBKDF2-HMAC-SHA512 ×2048 है।
  • पूर्ण-स्थान आकार (सटीक): 196.3 GB न्यूनतम / ~1.05 TB --full, seed32 अंकों के लिए एक सटीक बंद रूप और मापी गई औसत पता लंबाई से।
  • पूर्ण-स्थान समय: ~29 CPU-दिन सिंगल-कोर; M3 Max के प्रदर्शन कोर पर ~2–3 दिन; कठोर PBKDF2 निचली सीमा ~1.6 दिन। "घंटे" के लिए GPU की आवश्यकता होगी।

संदर्भ

  • CVE-2023-39910 — "Milk Sad", libbitcoin-explorer bx seed (समय से सीड किया गया 32-bit MT19937)। वास्तविक धन चोरी हुआ। https://milksad.info/
  • Trust Wallet ब्राउज़र-एक्सटेंशन कमजोर एन्ट्रॉपी (2018)।
  • BIPs: 39 (म्नेमोनिक्स), 32 (HD वॉलेट्स), 44 (पथ), 173/350 (bech32/bech32m), 380 (डिस्क्रिप्टर)।

लाइसेंस

MIT — देखें LICENSE। उपयोग शर्तें और उत्तरदायी प्रकटीकरण मार्गदर्शन: DISCLAIMER.md। रिपोर्टिंग: SECURITY.md।

टूल डाउनलोड करें