Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
python-haystack — प्रक्रिया हीप विश्लेषण ढांचा - विंडोज/लिनक्स - रिकॉर्ड प्रकार अनुमान और फोरेंसिक्स | Kitploit
उपकरण/GitHubGitHub/trolldbois/python-haystack
मेमोरी फोरेंसिकरिवर्स इंजीनियरिंगफोरेंसिकडिजिटल फोरेंसिकबाइनरी विश्लेषण
GitHubtrolldbois/python-haystack

python-haystack

प्रक्रिया हीप विश्लेषण ढांचा - विंडोज/लिनक्स - रिकॉर्ड प्रकार अनुमान और फोरेंसिक्स

रिपॉजिटरी देखें
9533189 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
वेबसाइट

python-haystack मेमोरी फोरेंसिक्स ################################

|travis| |coverage| |landscape| |pypi| |docs|

त्वरित प्रारंभ:

त्वरित उपयोग गाइड <docs/Haystack_basic_usage.ipynb>_ docs/ फ़ोल्डर में।

Haystack-reverse CLI <docs/Haystack_reverse_CLI.ipynb>_ docs/ फ़ोल्डर में।

अधिक दस्तावेज़ीकरण <http://python-haystack.readthedocs.io/en/latest/>_

परिचय:

python-haystack एक हीप विश्लेषण फ्रेमवर्क है, जो आवंटित मेमोरी में C संरचना की खोज और रिवर्सिंग पर केंद्रित है।

पहला फंक्शन/API SEARCH फंक्शन है। यह किसी प्रक्रिया मेमोरी डंप या लाइव प्रक्रिया की मेमोरी में ज्ञात रिकॉर्ड प्रकारों को खोजने की क्षमता प्रदान करता है।

दूसरा फंक्शन/API REVERSE फंक्शन है जो एक्सटेंशन python-haystack-reverse <https://github.com/trolldbois/python-haystack-reverse>_ में है। इसका उद्देश्य किसी विश्लेषक को प्रक्रिया हीप में मौजूद मेमोरी रिकॉर्ड प्रकारों को रिवर्स इंजीनियर करने में मदद करना है। यह मेमोरी से क्लासिक C संरचनाओं के पुनर्निर्माण और वर्गीकरण पर ध्यान केंद्रित करता है। यह प्रकार परिभाषाओं को फिर से बनाने का प्रयास करता है।

स्क्रिप्ट्स और मेमोरी हैंडलर प्रारूप:

आपके मेमोरी डंप प्रारूप को संभालने के लिए कुछ प्रवेश बिंदु मौजूद हैं।

haystack-live-dump द्वारा उत्पादित मेमोरी डंप फ़ोल्डर

  • haystack-find-heap विंडोज HEAP पर विवरण दिखाने की अनुमति देता है।
  • haystack-search खोज CLI
  • haystack-show किसी विशिष्ट पते पर विशिष्ट रिकॉर्ड प्रकार के लिए CLI दिखाएं

आप अपने मेमोरी हैंडलर/डंप को निर्दिष्ट करने के लिए निम्नलिखित URL का उपयोग कर सकते हैं:

  • dir:///path/to/my/haystack/fump/folder हेस्टैक डंप प्रारूप का उपयोग करने के लिए
  • dmp:///path/to/my/minidump/file मिनिडंप प्रारूप (माइक्रोसॉफ्ट?) का उपयोग करने के लिए
  • frida://name_or_pid_of_process_to_attach_to लाइव प्रक्रिया मेमोरी तक पहुँचने के लिए frida का उपयोग करें
  • live://name_or_pid_of_process_to_attach_to लाइव प्रक्रिया को ptrace करें
  • rekall:// rekall इमेज लोड करें
  • volatility:// volatility इमेज लोड करें
  • cuckoo:// Cuckoo द्वारा उत्पादित मेमोरी डंप लोड करें (बीटा, पैच की आवश्यकता हो सकती है)

मेमोरी डंप कैसे प्राप्त करें:

विंडोज पर, सबसे सीधा तरीका Minidump प्राप्त करना है। माइक्रोसॉफ्ट Sysinternals टूल का सूट CLI (procdump.exe) या GUI (Process explorer) प्रदान करता है। इनमें से किसी एक का उपयोग करके (पूर्ण मेमोरी डंप विकल्प के साथ) आप एक फ़ाइल तैयार करेंगे जिसका उपयोग haystack-minidump-xxx प्रवेश बिंदुओं की सूची के साथ किया जा सकता है।

जबकि तकनीकी रूप से आप कई तृतीय-पक्ष टूल का उपयोग कर सकते हैं, हेस्टैक को वास्तव में मेमोरी मैपिंग जानकारी की आवश्यकता होती है। इसलिए एक डंपिंग टूल शामिल है haystack-live-dump:

.. code-block:: bash

# haystack-live-dump <pid> myproc.dump

लाइव प्रक्रियाओं के लिए

  • haystack-live-dump एक प्रक्रिया मेमोरी डंप को एक फ़ोल्डर में कैप्चर करें (हेस्टैक प्रारूप)

Rekall मेमोरी डंप के लिए

  • haystack-rekall-dump एक विशिष्ट प्रक्रिया को हेस्टैक प्रक्रिया डंप में डंप करें

Volatility मेमोरी डंप के लिए

  • haystack-volatility-dump एक विशिष्ट प्रक्रिया को हेस्टैक प्रक्रिया डंप में डंप करें

आप आसानी से डंप के प्रारूप को पुन: उत्पन्न कर सकते हैं, यह एक फ़ोल्डर/आर्काइव है जिसमें प्रत्येक मेमोरी मैप एक अलग फ़ाइल में होता है:

  • मेमोरी सामग्री एक फ़ाइल में जिसका नाम इसके प्रारंभ/समाप्ति पतों के नाम पर रखा गया है ( 0x000700000-0x000800000 )
  • 'mappings' फ़ाइल जिसमें मेमोरी मैपिंग मेटाडेटा होता है। ( mappings )

या आप अपने पसंदीदा प्रारूप के लिए एक haystack.abc.IMemoryMapping कार्यान्वयन कोड कर सकते हैं।

अन्यथा, यदि आपके पास पहले से Volatility या Rekall से सिस्टम मेमोरी डंप है, तो आप किसी विशिष्ट प्रक्रिया मेमोरी को एक फ़ाइल में निकालने के लिए haystack-rekall-xxx या haystack-volatility-xxx परिवारों के प्रवेश बिंदुओं का उपयोग कर सकते हैं।

विंडोज हीप विशेषताओं को सत्यापित करना:

प्रवेश बिंदु haystack-find-heap विंडोज HEAP पर विवरण दिखाने की अनुमति देता है। इसे समर्थन करना चाहिए:

  • विंडोज XP 32 बिट
  • विंडोज XP 64 बिट
  • विंडोज 7 32 बिट
  • विंडोज 7 64 बिट

और लुक असाइड लिस्ट (LAL) और लो फ्रैग्मेंटेशन हीप (LFH) फ्रंटएंड का विवरण दिखाएँ।

आपको यह जानकर आश्चर्य हो सकता है कि कभी-कभी, एक एकल प्रक्रिया दो प्रकार के HEAP (32 और 64) को मिश्रित कर सकती है।

ज्ञात संरचनाओं की खोज करें:

किसी विशिष्ट रिकॉर्ड की खोज करने के लिए, आपको पहले उस रिकॉर्ड प्रकार को परिभाषित करना होगा। C हेडर फ़ाइल से Python ctypes परिभाषा तक जाने के बुनियादी चरणों के लिए एक [त्वरित उपयोग गाइड](docs/Haystack basic usage.ipynb) उपलब्ध है। या आप इसे पारंपरिक Python ctypes रिकॉर्ड के साथ स्वयं कर सकते हैं।

खोज api haystack-xxx-search स्क्रिप्ट्स के परिवार के माध्यम से उपलब्ध है लेकिन एक API में भी ताकि आप उस खोज को अपने कोड में एम्बेड कर सकें।

संक्षेप में, हेस्टैक खोज उस विशिष्ट रिकॉर्ड प्रकार के लिए 'मान्य' ऑफसेट खोजने के लिए प्रोग्राम की मेमोरी के प्रत्येक ऑफसेट पर पुनरावृति करेगा।

रिकॉर्ड की वैधता प्रकार बाधाओं द्वारा निर्धारित की जाती है जैसे:

  • पॉइंटर फ़ील्ड में मान्य पता स्थान मान होना चाहिए
  • उपयोगकर्ता-परिभाषित प्रकार बाधाएँ (नीचे 'बाधाएँ फ़ाइल' अनुभाग देखें)
  • आदि..

.. code-block:: bash

$ python haystack/cli.py dir:///home/user/project/python-haystack/test/src/test-ctypes6.32.dump ctypes6_gen32.struct_usual

बाधाएँ फ़ाइल:

निम्नलिखित बाधाएँ समर्थित हैं:

  • IgnoreMember: इस फ़ील्ड का मान अनदेखा किया जाएगा। पॉइंटर फ़ील्ड को अनदेखा करने के लिए उपयोगी।
  • NotNull: इस फ़ील्ड का मान 0 नहीं होना चाहिए।
  • RangeValue(x,y): फ़ील्ड का मान x और y के बीच होना चाहिए।
  • PerfectMatch('hello world'): फ़ील्ड (एक स्ट्रिंग) 'hello world' से मेल खाना चाहिए
  • [1,2,3]: मानों की एक सूची जो फ़ील्ड में होनी चाहिए
  • [1, RangeValue(12,16), 42]: फ़ील्ड का मान 1, 12-16 या 42 होना चाहिए।

उदाहरण:

.. code-block:: python

[struct_name]
myfield: [1,0xff]
ptr_field: NotNull

आप haystack/allocators/win32/winxpheap32.constraints पर एक नज़र डाल सकते हैं, जहाँ विंडोज XP HEAP x32 की बाधाएँ परिभाषित हैं।

जाहिर है, जितनी अधिक बाधाएँ होंगी, परिणाम उतने ही बेहतर होंगे।

गतिशील बाधा परिभाषा:

आप एक haystack.abc.interface.IRecordTypeDynamicConstraintsValidator वर्ग को लागू करके और इसे ModuleConstraints.set_dynamic_constraints को फीड करके Python कोड का उपयोग करके अधिक जटिल बाधाएँ भी बना सकते हैं।

कमांड लाइन उदाहरण:

sslsnoop रिपॉजिटरी को v0.30 से अधिक रिलीज़ के साथ संगत होने के लिए अद्यतन की आवश्यकता है - लंबित

उदाहरण के लिए, यह session_state संरचनाओं + संकेतित चाइल्ड संरचनाओं को एक Python ऑब्जेक्ट के रूप में डंप करेगा जिसके साथ हम खेल सकते हैं। मान लें कि हमारे पास pid 4042 के रूप में एक ssh क्लाइंट या सर्वर है:

.. code-block:: bash

$ sudo haystack-live-search --pickled 4042 sslsnoop.ctypes_openssh.session_state search > instance.pickled
$ sudo haystack-live-search --pickled 4042 sslsnoop.ctypes_openssh.session_state refresh 0xb8b70d18 > instance.pickled
$ sudo haystack-live-search --pickled <pid> <your ctypes Structure> search

ग्राफिकल यूजर इंटरफेस :

यह अभी काम नहीं कर रहा है

एक ग्राफिकल UI python-haystack-gui <https://github.com/trolldbois/python-haystack-gui>_ का प्रयास भी है

python API उदाहरण:

त्वरित उपयोग गाइड <docs/Haystack_basic_usage.ipynb>_ देखें

अपनी स्वयं की संरचनाओं को कैसे परिभाषित करें:

सबसे आसान तरीका ctypeslib का उपयोग करके C हेडर से ctypes रिकॉर्ड उत्पन्न करना है।

या अपने Python ctypes रिकॉर्ड को हाथ से परिभाषित करें।

एक्सटेंशन उदाहरण :

@ Pypi रिपो में sslsnoop देखें। openssl और nss संरचनाएँ उत्पन्न होती हैं।

@ मेरे github पर ctypes-kernel देखें। लिनक्स कर्नेल संरचनाएँ एक निर्मित कर्नेल ट्री से उत्पन्न होती हैं। (VMM मुश्किल है)

इतना FAQ नहीं:

यह क्या करता है ?:

मूल कार्यक्षमता किसी प्रक्रिया की मेमोरी में एक विशिष्ट C रिकॉर्ड की खोज करना है।

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