
Python module for running BOFs
PyBOFBOFs की मेमोरी में लोडिंग और निष्पादन
PyBOF Python3 को बाइट्स के माध्यम से Beacon Object Files लोड करने और Python इंटरप्रेटर में लक्षित BOF फ़ंक्शन को निष्पादित करने में सक्षम बनाता है।
data = open(r'c:\path\to\example.o', 'rb').read()
bof.run(data)
data = open(r'c:\path\to\example.o', 'rb').read()
bof.run(data, args=["foo"], raw=True)
# Raw cannot be used with function kwarg
data = open(r'c:\path\to\example.o', 'rb').read()
bof.run(data, args=[r"c:\users"], format="Z")
import bof
from urllib.request import urlopen
data = urlopen("https://github.com/trustedsec/CS-Situational-Awareness-BOF/raw/master/SA/dir/dir.x64.o").read()
bof.run(data, args=[r"c:\users"], format="Z")
PyBOF के साथ कई args का उपयोग किया जा सकता है, उनका विवरण नीचे और अधिक विस्तार से दिया गया है
अनिवार्य पहला पोजीशनल तर्क जो एक बाइट ऑब्जेक्ट होना चाहिए जिसमें BOF की रॉ सामग्री होती है।
वैकल्पिक कीवर्ड तर्क जो लक्षित BOF फ़ंक्शन में पास किए जाने वाले तर्कों की सूची है।
वैकल्पिक कीवर्ड तर्क जो आपूर्ति किए गए BOF से निष्पादित करने के लिए लक्षित फ़ंक्शन का स्ट्रिंग स्वरूपित नाम है, यह डिफ़ॉल्ट रूप से go होता है।
वैकल्पिक कीवर्ड तर्क एक स्ट्रिंग है, जो BOF आर्गुमेंट पैकर को बफर में पैक किए जाने पर तर्कों के प्रकार की जानकारी देता है। यह struct.pack के format तर्क के समान है। केवल मान्य format विकल्प इस प्रकार हैं:
i पूर्णांक के लिए
s short के लिए
z स्ट्रिंग के लिए
b बाइनरी के लिए
Z wide के लिए
args सूची में प्रत्येक arg के लिए कम से कम एक format प्रकार प्रदान किया जाना चाहिए। इस कीवर्ड तर्क का उपयोग raw के साथ नहीं किया जा सकता है।
वैकल्पिक कीवर्ड तर्क जो एक बूलियन है; यह BOF फ़ंक्शन के लिए फ़ॉर्मेट किए गए तर्कों को पैक करने का प्रयास करने के बजाय args को बिना पैक किए स्पेस-जॉइन्ड स्ट्रिंग के रूप में पास करता है। इस कीवर्ड तर्क का उपयोग format के साथ नहीं किया जा सकता है।
इस रिपॉजिटरी को क्लोन करें
git clone https://github.com/rkbennett/pybof.git
_bof c एक्सटेंशन बिल्ड करें
cd pybof\src
python .\setup.py build
परिणामी pyd फ़ाइल को bof निर्देशिका में कॉपी करें
copy build\lib.win-xxx-cpython-3xx\_bof.cp3xx-win_xxxx.pyd ..\bof\
bof निर्देशिका के मूल निर्देशिका पर जाएँ, import करें और मज़े करें
cd ..\
python
>>> import bof
>>> from urllib.request import urlopen
>>> data = urlopen("https://github.com/trustedsec/CS-Situational-Awareness-BOF/raw/master/SA/dir/dir.x64.o").read()
>>> bof.run(data, args=[r"c:\users"], format="Z")
यदि कोई BOF फ़ंक्शन मान नहीं लौटाता है, तो मैं उपयोगकर्ता को सचेत करने के लिए एक चेतावनी उठाता हूँ कि कुछ भी नहीं लौटाया गया। मुझे लगता है कि यह शायद निष्पादन का इच्छित परिणाम नहीं है, लेकिन मैं कठोर त्रुटियाँ नहीं फेंकना चाहता था। If you run a BOF function and receive the no output warning, keep in mind that your args formatting may need defined or may be defined incorrectly जो इस समस्या का कारण बन सकता है (विशेष रूप से wide के बजाय string का उपयोग करना)।