
Исходный код книги "Black Hat Python" от Джастина Сейтца. Код полностью конвертирован в Python 3, переформатирован в соответствии со стандартами PEP8 и подвергнут рефакторингу для устранения проблем с зависимостями, связанными с использованием устаревших библиотек.
Исходный код для книги «Black Hat Python» Джастина Зайтца. Код полностью конвертирован в Python 3, переформатирован в соответствии со стандартами PEP8 и реорганизован для устранения проблем с зависимостями, связанных с использованием устаревших библиотек.
Хотя в исходном коде, представленном в книге, можно было бы реализовать множество оптимизаций, код был оставлен максимально неизменным, чтобы читатель мог применить такие изменения по своему усмотрению. Код в его нынешнем виде требует серьезных усилий по рефакторингу: от docstrings до подсказок типов и обработки исключений, не говоря уже об улучшениях вроде контекстных менеджеров, но эти проблемы сами по себе могут принести пользу читателю, если он намерен их реализовать. В нем также присутствует множество ошибок, возникших из-за отступов, которые были исправлены, чтобы избежать фатальных ошибок во время выполнения.
Похожая конвертация была выполнена мной для исходного кода книги «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 требовался RSA-ключ, содержащийся в файле test_rsa.key, который теперь включен в соответствующий каталог.chapter03/sniffer_ip_header_decode.py, sniffer_with_icmp.py и scanner.py — все имели серьезные проблемы в определении размеров IP-пакетов и переносимости между 32- и 64-битными архитектурами из-за проблем в реализации struct. Подробнее об этих проблемах в этой теме на Stack Overflow.chapter03/scanner.py использовал библиотеку netaddr, которая больше не поддерживается и имеет множество несовместимостей с Python 3. По этой причине код был переработан и теперь использует модуль ipaddress из стандартной библиотеки Python.chapter04/arper.py и mail_sniffer.py использовали библиотеку , которая несовместима с Python 3. По этой причине код был переработан и теперь использует библиотеку .Вклады на других языках можно посмотреть здесь:
По здравому смыслу, сначала попробуйте обсудить изменение, которое вы хотите внести в этот репозиторий, через issue.
scapykamenechapter04/pic_carver.py теперь использует библиотеку opencv-python вместо cv2. Модуль cv2.cv был объявлен устаревшим и заменен. Параметр cv2.cv.CV_HAAR_SCALE_IMAGE из исходного кода был заменен на cv2.CASCADE_SCALE_IMAGE из-за этого коммита.chapter05/content_bruter.py требовался словарь. Он был добавлен в главу под именем all.txtchapter05/joomla_killer.py требовался словарь. Он был добавлен в главу под именем cain.txtchapter06/bhp_bing.py, bhp_fuzzer.py и bhp_wordlist.py были переформатированы в соответствии с PEP8, хотя некоторые предупреждения все равно будут возникать из-за необходимости приведения имен классов к camelCase в этом конкретном приложении на Burp Suite.chapter06/jython-standalone-2.7.2.jar доступен как более обновленная версия файла по сравнению с представленной в книге.chapter07/git_trojan.py был переработан для замены библиотеки imp (теперь устаревшей) на types. В соответствии с инструкциями в книге была реализована структура подкаталогов с необходимыми конфигурационными файлами. В переменной trojan_config отсутствовал относительный путь к подкаталогу config. В строку 60 был добавлен вызов метода to_tree, чтобы избежать исключения AttributeError, возникавшего в исходном коде. В комментарии были включены инструкции по созданию токена доступа вместо использования пароля в случае использования двухфакторной аутентификации.chapter08/keylogger.py требует библиотеку PyHook для работы. Включён wheel-файл версии 1.6.2. При необходимости другие версии можно загрузить здесь.chapter09/ie_exfil.py выдавал ошибки из-за обработки переменной plaintext (которая может быть строкой или бинарной строкой) при передаче в функцию encrypt_string. Кроме того, было исправлено использование библиотеки base64. Вклад от Enraged в этом коммите.