
regipy v6.3.0
Regipy एक os स्वतंत्र पायथन लाइब्रेरी है जो ऑफलाइन रजिस्ट्री हाइव्स को पार्स करने के लिए है।
regipy
⚠️ v6.0.0 में ब्रेकिंग बदलाव
संस्करण 6.0.0 में महत्वपूर्ण आधुनिकीकरण परिवर्तन शामिल हैं:
- Python 3.9+ आवश्यक - Python 3.6, 3.7, और 3.8 के लिए समर्थन हटा दिया गया
attrsलाइब्रेरी हटा दी गई - डेटा क्लासेस अब Python के अंतर्निहितdataclassesमॉड्यूल का उपयोग करते हैं- यदि आपका कोड आंतरिक क्लासेस (
Cell,VKRecord,Value,Subkey) आयात करता है औरattr.asdict()जैसेattrsफ़ंक्शन का उपयोग करता है, तोdataclasses.asdict()पर स्विच करेंपूर्ण विवरण के लिए CHANGELOG देखें।
Regipy ऑफ़लाइन रजिस्ट्री हाइव्स (REGF हेडर वाली Hive फ़ाइलें) को पार्स करने के लिए एक Python लाइब्रेरी है। regipy में बहुत सारी क्षमताएँ हैं:
- लाइब्रेरी के रूप में उपयोग करें:
- रजिस्ट्री हाइव पर पुनरावृत्ति करें, रूट या किसी दिए गए पथ से, और सभी सबकीज़ और मान प्राप्त करें
- विशिष्ट सबकीज़ और मान पढ़ें
- रजिस्ट्री हाइव पर ट्रांज़ैक्शन लॉग लागू करें
- कमांड लाइन टूल्स
- पूरी रजिस्ट्री हाइव को json में डंप करें
- रजिस्ट्री हाइव पर ट्रांज़ैक्शन लॉग लागू करें
- रजिस्ट्री हाइव्स की तुलना करें
- एक मजबूत प्लगइन सिस्टम से प्लगइन्स निष्पादित करें (जैसे: amcache, shimcache, कंप्यूटर नाम निकालें...)
Python 3.9 या उच्चतर आवश्यक है।
इंस्टॉलेशन
Regipy का नवीनतम संस्करण pypi से इंस्टॉल किया जा सकता है:
pip install regipy[full]
नोट: regipy[full] उन निर्भरताओं को इंस्टॉल करता है जिनके लिए कंपाइलेशन टूल्स की आवश्यकता होती है और इसमें कुछ समय लग सकता है।
[full] को छोड़कर, शिथिल निर्भरताओं वाला संस्करण इंस्टॉल करना भी संभव है।
साथ ही, रिपॉजिटरी को क्लोन करके और निम्नलिखित निष्पादित करके स्रोत से इंस्टॉल करना संभव है:
pip install --editable .[full]
Rust-accelerated बैकएंड (alpha)
कोर REGF पार्सर का एक वैकल्पिक Rust कार्यान्वयन एक opt-in बैकएंड के रूप में उपलब्ध है, जो PyPI पर अलग से
regipy-rs के रूप में प्रकाशित है:
pip install regipy[rust]
from regipy.registry_rs import RegistryHive # instead of regipy.registry
reg = RegistryHive("/tmp/NTUSER.dat")
# Same API: get_key, iter_values, recurse_subkeys, plugins — everything
# works unchanged, including all regipy plugins.
यह एक drop-in प्रतिस्थापन है जिसे पूरे test-hive कॉर्पस पर शुद्ध-Python पार्सर के विरुद्ध 1:1 सत्यापित किया गया है — प्रत्येक key path, timestamp, value और plugin output, मेल खाते SHA-256 traversal digests द्वारा प्रमाणित (देखें
regipy_tests/comparison_test.py और regipy-rs/BENCHMARKS.md का Forensic parity evidence अनुभाग)।
मानों के साथ पूर्ण traversal (recurse_subkeys), 3 रनों में से सर्वश्रेष्ठ:
| Hive | Keys | Python | Rust | Speedup |
|---|---|---|---|---|
| NTUSER.DAT | 1,812 | 173 ms | 5 ms | 38x |
| UsrClass.dat | 6,205 | 948 ms | 17 ms | 55x |
| amcache.hve | 2,105 | 837 ms | 12 ms | 67x |
| SYSTEM | 30,756 | 23.1 s | 91 ms | 253x |
| SYSTEM (Win10 1709) | 43,211 | 118.7 s | 111 ms | 1,068x |
| SOFTWARE | 117,488 | 745.6 s | 292 ms | 2,550x |
cProfile दिखाता है क्यों: Python बैकएंड में, traversal समय प्रति-रिकॉर्ड construct struct पार्सिंग और value डिकोडिंग द्वारा प्रभुत्व रखता है; Rust बैकएंड के साथ, पार्सर प्रोफ़ाइल से पूरी तरह गायब हो जाता है और एकमात्र शेष Python लागत लौटाए गए Subkey dataclasses का निर्माण है।
पूर्ण प्रोफ़ाइल, प्रति-hive digests और कुछ जानबूझकर किए गए विचलनों (दूषित hives पर exception प्रकार, cycle-guard व्यवहार) का दस्तावेज़ीकरण करने वाला एक अस्वीकरण regipy-rs/BENCHMARKS.md में है;
python regipy-rs/benchmark.py पूरी रिपोर्ट को पुनः उत्पन्न करता है।
शुद्ध-Python पार्सर डिफ़ॉल्ट बना हुआ है और जब Rust बैकएंड इंस्टॉल नहीं है तो अप्रभावित रहता है।
CLI
हेडर पार्स करें
regipy-parse-header ~/Documents/TestEvidence/Registry/SYSTEM
उदाहरण आउटपुट:
╒════════════════════════╤══════════╕
│ signature │ b'regf' │
├────────────────────────┼──────────┤
│ primary_sequence_num │ 11639 │
├────────────────────────┼──────────┤
│ secondary_sequence_num │ 11638 │
├────────────────────────┼──────────┤
│ last_modification_time │ 0 │
├────────────────────────┼──────────┤
│ major_version │ 1 │
├────────────────────────┼──────────┤
│ minor_version │ 5 │
├────────────────────────┼──────────┤
│ file_type │ 0 │
├────────────────────────┼──────────┤
│ file_format │ 1 │
├────────────────────────┼──────────┤
│ root_key_offset │ 32 │
├────────────────────────┼──────────┤
│ hive_bins_data_size │ 10534912 │
├────────────────────────┼──────────┤
│ clustering_factor │ 1 │
├────────────────────────┼──────────┤
│ file_name │ SYSTEM │
├────────────────────────┼──────────┤
│ checksum │ 0 │
╘════════════════════════╧══════════╛
[2019-02-09 13:46:12.111654] WARNING: regipy.cli: Hive is not clean! You should apply transaction logs
- किसी hive के हेडर को पार्स करते समय, checksum सत्यापन और transaction सत्यापन भी किए जाते हैं
पूरी hive को डिस्क पर डंप करें (इसमें कुछ समय लग सकता है)
regipy-dump ~/Documents/TestEvidence/Registry/NTUSER-CCLEANER.DAT -o /tmp/output.json
regipy-dump उपयोगिता JSON के बजाय timeline भी आउटपुट कर सकती है, -t फ़्लैग जोड़कर
Hive पर प्रासंगिक प्लगइन्स चलाएँ
regipy-plugins-run ~/Documents/TestEvidence/Registry/SYSTEM -o /tmp/plugins_output.json
hive प्रकार स्वचालित रूप से पहचाना जाएगा और प्रासंगिक प्लगइन्स निष्पादित किए जाएंगे। अधिक जानकारी के लिए प्लगइन्स अनुभाग देखें
रजिस्ट्री हाइव्स की तुलना करें
एक ही प्रकार की रजिस्ट्री हाइव्स की तुलना करें और CSV में आउटपुट करें (यदि -o निर्दिष्ट नहीं है तो आउटपुट स्क्रीन पर प्रिंट होगा)
regipy-diff NTUSER.dat NTUSER_modified.dat -o /tmp/diff.csv
उदाहरण आउटपुट:
[2019-02-11 19:49:18.824245] INFO: regipy.cli: Comparing NTUSER.DAT vs NTUSER_modified.DAT
╒══════════════╤══════════════╤════════════════════════════════════════════════════════════════════════════════╤════════════════════════════════════════════════╕
│ difference │ first_hive │ second_hive │ description │
╞══════════════╪══════════════╪════════════════════════════════════════════════════════════════════════════════╪════════════════════════════════════════════════╡
│ new_subkey │ │ 2019-02-11T19:46:31.832134+00:00 │ \Software\Microsoft\legitimate_subkey │
├──────────────┼──────────────┼────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────┤
│ new_value │ │ not_a_malware: c:\temp\legitimate_binary.exe @ 2019-02-11 19:45:25.516346+00:00 │ \Software\Microsoft\Windows\CurrentVersion\Run │
╘══════════════╧══════════════╧════════════════════════════════════════════════════════════════════════════════╧════════════════════════════════════════════════╛
[2019-02-11 19:49:18.825328] INFO: regipy.cli: Detected 2 differences
ट्रांज़ैक्शन लॉग का उपयोग करके रजिस्ट्री हाइव रिकवर करें
regipy-process-transaction-logs NTUSER.DAT -p ntuser.dat.log1 -s ntuser.dat.log2 -o recovered_NTUSER.dat
रिकवर करने के बाद, क्या बदला यह देखने के लिए registry-diff के साथ hives की तुलना करें
लाइब्रेरी के रूप में उपयोग करना
रजिस्ट्री hive ऑब्जेक्ट आरंभ करें
from regipy.registry import RegistryHive
reg = RegistryHive("/Users/martinkorman/Documents/TestEvidence/Registry/Vibranium-NTUSER.DAT")