Decompile compiled python binaries (exe, elf) - Retreive from .pyc
Bug bounty tip: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है! आज ही हमारे साथ शामिल हों https://go.intigriti.com/hacktricks और शुरू करें बाउंटी कमाना तक $100,000 तक!
From Compiled Binary to .pyc
From an ELF compiled binary you can get the .pyc with:
Python exe binary में कंपाइल किए गए फ़ाइल में आप .pyc प्राप्त कर सकते हैं द्वारा चलाने:
.pyc से पायथन कोड तक
.pyc डेटा ("कॉम्पाइल्ड" पायथन) के लिए आपको मूल पायथन कोड को निकालने की कोशिश करनी चाहिए:
सुनिश्चित करें कि बाइनरी का एक्सटेंशन ".pyc" है (अगर नहीं है, तो uncompyle6 काम नहीं करेगा)
uncompyle6 को निष्पादित करते समय आपको निम्नलिखित त्रुटियाँ मिल सकती हैं:
त्रुटि: अज्ञात मैजिक नंबर 227
इसे ठीक करने के लिए आपको उत्पन्न फ़ाइल की शुरुआत में सही मैजिक नंबर जोड़ने की आवश्यकता है।
मैजिक नंबर पायथन संस्करण के साथ भिन्न होते हैं, पायथन 3.8 का मैजिक नंबर प्राप्त करने के लिए आपको पायथन 3.8 टर्मिनल खोलने और निम्नलिखित को निष्पादित करने की आवश्यकता है:
इस मामले में पायथन3.8 के लिए मैजिक नंबर है 0x550d0d0a
, तो, इस त्रुटि को ठीक करने के लिए आपको .pyc फ़ाइल की शुरुआत में निम्नलिखित बाइट्स जोड़ने की आवश्यकता होगी: 0x0d550a0d000000000000000000000000
एक बार जब आपने उस मैजिक हेडर को जोड़ दिया होगा, तो त्रुटि ठीक हो जानी चाहिए।
यह है कि कैसे एक सही ढंग से जोड़ा गया .pyc पायथन3.8 मैजिक हेडर दिखेगा:
त्रुटि: सामान्य त्रुटियाँ डिकॉम्पाइलिंग
अन्य त्रुटियाँ जैसे: class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>
प्रकट हो सकती हैं।
यह संभावना है कि आपने सही रूप से मैजिक नंबर नहीं जोड़ा है या आपने सही मैजिक नंबर का उपयोग नहीं किया है, इसलिए सुनिश्चित करें कि आप सही उपयोग कर रहे हैं (या एक नया प्रयास करें)।
पिछली त्रुटि संदर्भ की जाँच करें।
स्वचालित उपकरण
python-exe-unpacker उपकरण कई सामुदायिक उपलब्ध उपकरणों का संयोजन के रूप में काम करता है जो शोधकों को सहायता प्रदान करने के लिए डिज़ाइन किए गए हैं जो पाइथन में लिखे गए क्रियाशील औपचारिकों को अनपैक और डिकॉम्पाइल करने में मदद करते हैं, विशेष रूप से जिन्हें py2exe और pyinstaller के साथ बनाया गया है। यह यारा नियमों को शामिल करता है ताकि पता लगाया जा सके कि क्या एक क्रियाशील पाइथन आधारित है और निर्माण उपकरण की पुष्टि करता है।
आयात त्रुटि: फ़ाइल नाम: 'unpacked/malware_3.exe/pycache/archive.cpython-35.pyc' मौजूद नहीं है
एक सामान्य समस्या जिसका सामना किया जाता है, वह एक अधूरी पाइथन बाइटकोड फ़ाइल से होता है जो unpy2exe या pyinstxtractor के साथ अनपैकिंग प्रक्रिया से परिणामित होता है, जिसके बाद uncompyle6 द्वारा पहचाना नहीं जा सकता है क्योंकि एक अभावित पाइथन बाइटकोड संस्करण संख्या होती है। इस समस्या का समाधान करने के लिए, एक प्रीपेंड विकल्प जोड़ा गया है, जो आवश्यक पाइथन बाइटकोड संस्करण संख्या को जोड़ता है, जिससे डिकॉम्पाइलिंग प्रक्रिया सुविधाजनक हो।
समस्या का उदाहरण:
अनुलोम पायथन विधानसभा का विश्लेषण
यदि आप पिछले कदमों का पालन करके पायथन "मूल" कोड निकालने में सक्षम नहीं थे, तो आप असेंबली को निकालने का प्रयास कर सकते हैं (लेकिन यह विवरणात्मक नहीं है, इसलिए पुनः मूल कोड निकालने का प्रयास करें)। यहाँ इसमें मैंने एक बहुत ही सरल कोड पाया है जिससे .pyc बाइनरी को डिसएसेम्बल किया जा सकता है (कोड फ्लो को समझने के लिए शुभकामनाएं)। यदि .pyc पायथन2 से है, तो पायथन2 का उपयोग करें:
Python से Executable तक
शुरुआत के लिए, हम आपको दिखाएंगे कि payloads कैसे py2exe और PyInstaller में कॉम्पाइल किए जा सकते हैं।
py2exe का उपयोग करके payload बनाने के लिए:
http://www.py2exe.org/ से py2exe पैकेज को इंस्टॉल करें।
Payload के लिए (इस मामले में, हम इसे hello.py नाम देंगे), Figure 1 में दिए गए स्क्रिप्ट का उपयोग करें। विकल्प "bundle_files" जिसका मान 1 है, सभी चीजों को एक exe में बंडल करेगा, जिसमें Python interpreter भी शामिल होगा।
एक बार स्क्रिप्ट तैयार हो जाए, हमें कमांड "python setup.py py2exe" जारी करनी होगी। यह executable बनाएगा, जैसे Figure 2 में दिखाया गया है।
PyInstaller का उपयोग करके payload बनाने के लिए:
Pip का उपयोग करके PyInstaller को इंस्टॉल करें (pip install pyinstaller)।
इसके बाद, हमें आदेश जारी करना होगा "pyinstaller --onefile hello.py" (ध्यान दें कि 'hello.py' हमारा payload है)। इससे सब कुछ एक executable में बंडल हो जाएगा।
संदर्भ
बग बाउंटी टिप: Intigriti में साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है! आज ही हमारे साथ जुड़ें https://go.intigriti.com/hacktricks और शुरू करें बाउंटी अप तक $100,000 तक कमाने की!
Last updated