
जस्टिन सीट्ज़ द्वारा लिखित पुस्तक "Black Hat Python" का स्रोत कोड। कोड को पूरी तरह से Python 3 में परिवर्तित कर दिया गया है, PEP8 मानकों के अनुरूप पुनः स्वरूपित किया गया है, और पुरानी लाइब्रेरियों के कार्यान्वयन से संबंधित निर्भरता समस्याओं को समाप्त करने के लिए रिफैक्टर किया गया है।
जस्टिन सीट्ज़ (Justin Seitz) द्वारा लिखित पुस्तक "Black Hat Python" का सोर्स कोड। इस कोड को पूरी तरह से पायथन 3 में परिवर्तित कर दिया गया है, PEP8 मानकों के अनुरूप पुनः स्वरूपित किया गया है, और डिप्रेकेटेड लाइब्रेरीज़ के कार्यान्वयन से जुड़ी निर्भरता संबंधी समस्याओं को दूर करने के लिए रीफैक्टर किया गया है।
यद्यपि पुस्तक में प्रस्तुत सोर्स कोड में कई अनुकूलन लागू किए जा सकते थे, फिर भी कोड को यथासंभव अपरिवर्तित छोड़ दिया गया है ताकि पाठक अपनी सुविधानुसार ऐसे संशोधन स्वयं लागू कर सके। कोड को अपनी वर्तमान स्थिति में docstrings से लेकर type hinting और exception handling तक, साथ ही context managers जैसी वृद्धियों सहित, गंभीर रीफैक्टरिंग प्रयासों की आवश्यकता है, लेकिन ये समस्याएँ स्वयं पाठक के लिए लाभकारी हो सकती हैं यदि उसका उन्हें लागू करने का इरादा हो। इसमें इंडेंटेशन से उत्पन्न कई बग भी हैं, जिन्हें रनटाइम के दौरान घातक त्रुटियों से बचने के लिए सुधार दिया गया है।
इसी प्रकार का एक रूपांतरण मेरे द्वारा टीजे ओ'कॉनर (TJ O'Connor) की पुस्तक "Violent Python" के सोर्स कोड पर उपलब्ध कराया गया है। यदि आपने अभी तक नहीं देखा है तो इसे यहाँ देखें।
बस एक निर्देशिका (DIR) चुनें जिसमें git clone का उपयोग करके प्रोजेक्ट को क्लोन करना है, उसके लिए एक नया वर्चुअल एनवायरनमेंट या venv बनाएं (अनुशंसित) और pip install का उपयोग करके आवश्यकताएँ स्थापित करें।
user@host:~/DIR$ git clone https://github.com/EONRaider/blackhat-python3
user@host:~/DIR$ python3 -m venv venv
user@host:~/DIR$ source venv/bin/activate
(venv) user@host:~/DIR$ pip install -r requirements.txt
सोर्स कोड को सही ढंग से लागू करने और घातक त्रुटियों से बचने के लिए किए गए महत्वपूर्ण बग सुधार:
chapter02/bh_sshserver.py को test_rsa.key फ़ाइल में निहित RSA कुंजी की आवश्यकता थी, जिसे अब संबंधित निर्देशिका में शामिल किया गया है।chapter03/sniffer_ip_header_decode.py और sniffer_with_icmp.py और scanner.py सभी में struct के कार्यान्वयन में समस्याओं के कारण IP पैकेट आकारों की परिभाषा और 32/64-बिट आर्किटेक्चर के बीच पोर्टेबिलिटी में गंभीर समस्याएँ थीं। इन मुद्दों के बारे में अधिक जानकारी Stack Overflow पर इस थ्रेड में देखें।chapter03/scanner.py netaddr लाइब्रेरी का उपयोग करता था, जिसे अब बनाए नहीं रखा जाता और यह पायथन 3 के साथ कई असंगतियाँ प्रस्तुत करती है। इस कारण कोड को रीफैक्टर किया गया है और अब यह पायथन के stdlib से ipaddress मॉड्यूल का उपयोग करता है।chapter04/arper.py और mail_sniffer.py लाइब्रेरी का उपयोग करते थे, जो पायथन 3 के साथ संगत नहीं है। इस कारण कोड को रीफैक्टर किया गया है और अब यह लाइब्रेरी का उपयोग करता है।अन्य भाषाओं में योगदान यहाँ देखे जा सकते हैं:
सामान्य समझ की बात के रूप में, पहले एक issue के माध्यम से इस रिपॉजिटरी में किए जाने वाले परिवर्तन पर चर्चा करने का प्रयास करें।
scapykamenechapter04/pic_carver.py अब cv2 के स्थान पर opencv-python लाइब्रेरी का उपयोग करता है। "cv2.cv" मॉड्यूल डिप्रेकेटेड हो गया था और उसे प्रतिस्थापित कर दिया गया है। मूल कोड का पैरामीटर "cv2.cv.CV_HAAR_SCALE_IMAGE" को इस कमिट के कारण "cv2.CASCADE_SCALE_IMAGE" से प्रतिस्थापित किया गया था।chapter05/content_bruter.py को कार्य करने के लिए एक वर्डलिस्ट की आवश्यकता थी। इसे अध्याय में all.txt के रूप में जोड़ा गया है।chapter05/joomla_killer.py को कार्य करने के लिए एक वर्डलिस्ट की आवश्यकता थी। इसे अध्याय में cain.txt के रूप में जोड़ा गया है।chapter06/bhp_bing.py और bhp_fuzzer.py और bhp_wordlist.py को PEP8 के अनुरूप पुनः स्वरूपित किया गया है, हालाँकि Burp Suite पर इस विशिष्ट अनुप्रयोग में क्लास नामों को कैमल-केसिंग के अनुरूप बनाने की आवश्यकता के कारण कुछ चेतावनियाँ अभी भी ट्रिगर होंगी।chapter06/jython-standalone-2.7.2.jar पुस्तक में प्रस्तुत फ़ाइल की तुलना में एक अधिक अद्यतन संस्करण के रूप में उपलब्ध है।chapter07/git_trojan.py को imp लाइब्रेरी (अब डिप्रेकेटेड) के स्थान पर types का उपयोग करने के लिए रीफैक्टर किया गया था। पुस्तक में दिए गए निर्देशों के अनुसार आवश्यक कॉन्फ़िगरेशन फ़ाइलों के साथ एक उपनिर्देशिका संरचना लागू की गई है। "trojan_config" वेरिएबल में config उपनिर्देशिका का सापेक्ष पथ गायब था। मूल कोड द्वारा उत्पन्न AttributeError अपवाद से बचने के लिए पंक्ति 60 में "to_tree" विधि का एक कॉल जोड़ा गया था। 2FA उपयोग किए जाने की स्थिति में पासवर्ड का उपयोग करने के बजाय एक्सेस टोकन उत्पन्न करने के निर्देश टिप्पणियों के रूप में शामिल किए गए थे।chapter08/keylogger.py को कार्य करने के लिए PyHook लाइब्रेरी की आवश्यकता होती है। 1.6.2 संस्करण के साथ एक व्हील फ़ाइल शामिल की गई है। यदि आवश्यक हो, तो अन्य संस्करण यहाँ से डाउनलोड किए जा सकते हैं।