Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
violent-python3 — Исходный код книги "Violent Python" от TJ O'Connor. Код полностью переведён на Python 3, отформатирован в соответствии со стандартами PEP8 и реорганизован для устранения проблем с зависимостями, связанными с использованием устаревших библиотек. | Kitploit
Инструменты/GitHubGitHub/eonraider/violent-python3
OSINT (Разведка открытых источников)РазведкаБезопасность BluetoothАтаки на ПаролиЭксплуатацияФорензикаВеб-безопасностьСетевая безопасностьБезопасность беспроводных сетейТестирование на ПроникновениеОбучение и Образование
1.0k1799 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
eonraider/violent-python3

violent-python3

Исходный код книги "Violent Python" от TJ O'Connor. Код полностью переведён на Python 3, отформатирован в соответствии со стандартами PEP8 и реорганизован для устранения проблем с зависимостями, связанными с использованием устаревших библиотек.

Репозиторий

Исходный код Python 3 «Violent Python»

Исходный код книги «Violent Python» Ти Джей О'Коннора. Код полностью преобразован в Python 3, переформатирован в соответствии со стандартами PEP8 и реорганизован для устранения проблем с зависимостями, связанных с использованием устаревших библиотек.

Аналогичное преобразование было выполнено мною для исходного кода книги «Black Hat Python» Джастина Зейтца. Ознакомьтесь с ним здесь, если вы ещё этого не сделали.

Использование

Просто создайте новый каталог (DIR) для проекта, создайте новую виртуальную среду или venv (рекомендуется), клонируйте этот репозиторий с помощью git clone и установите зависимости с помощью pip install.

root@kitploit:~
user@host:~/DIR$ git clone https://github.com/EONRaider/violent-python3
user@host:~/DIR$ python3 -m venv venv
user@host:~/DIR$ source venv/bin/activate
(venv) user@host:~/DIR$ pip install -r requirements.txt

Примечания

  • Каталоги и файлы названы так, чтобы их можно было легко соотнести с содержанием, представленным в каждой главе.
  • Частое использование автором конкатенации строк заменено на интерполяцию строк для обеспечения большей читаемости и соответствия более современному стандарту.
  • Имена файлов, переменных, функций, классов и методов теперь соответствуют стандартам именования PEP 8.
  • Устаревшая библиотека optparse заменена на argparse во всём исходном коде. Весь разбор аргументов теперь находится в области выполнения __main__ для каждого файла. Все аргументы командной строки, которые были обязательны для выполнения скриптов, но в исходном коде рассматривались как необязательные, теперь реализованы как позиционные. Для всех скриптов, использующих argparse, теперь доступна подсказка usage при передаче аргумента -h в CLI. Передача обязанностей как boundary, так и controller объекта парсеру CLI, безусловно, не является лучшим выбором с точки зрения архитектуры программного обеспечения, но оставлено как есть из-за необходимости соответствия замыслу исходного автора.
  • Все нарушения PEP 8: E722 do not use bare except были переработаны с использованием более конкретных предложений исключений.
  • У автора есть привычка открывать файлы/базы данных и оставлять их в таком состоянии вместо вызова метода close() для открытых объектов файлов/баз данных. По этой причине все случаи манипуляций с файлами и базами данных были переработаны с использованием менеджеров контекста.
  • Использование комментариев со ссылкой на кодировку, используемую интерпретатором (а именно # -*- coding: utf-8 -*-), было исключено из-за стандартизации UTF-8 в качестве кодировки по умолчанию для Python 3 (заменяет ASCII из Python 2).

Рефакторинг

Файлы, не указанные ниже, можно считать переработанными в той или иной степени, как установлено в разделе «Примечания».

  • chapter01/vuln_scanner.py был структурирован таким образом, что несуществующий файл приводил к исключению OSError во время выполнения. По этой причине управление итерацией, вызывающее check_vulns(), было перемещено в условный оператор, определённый в основной функции.
  • chapter02/nmap_scan.py реализовывал основную функцию исключительно для вызова устаревшей библиотеки optparse, которая была заменена на argparse. Из-за этого основная функция была удалена. Структура управления итерацией, которая была частью вызова optparse в исходном коде, была реализована таким образом, что новый вызов nmap выполнялся для каждого сканируемого порта. Итерация была перемещена в функцию nmap_scan, чтобы избежать лишних циклов.
  • chapter02/ssh_command.py: код инициализации был перемещён в область выполнения __main__. Имена переменных, используемых во внешней области видимости, которые ранее конфликтовали с именами параметров функций, были изменены. Возвращаемая информация приглашения была изначально закодирована, а теперь декодирована для улучшения читаемости.
  • chapter02/ssh_brute.py импортировал как отдельную библиотеку, но на самом деле это библиотека внутри библиотеки . Ошибка приводила к и была исправлена. Сам код, представленный в книге, был переполнен ошибками отступов, что делало его непригодным для использования, и приведён в рабочее состояние.

Переводы

Вклад на других языках можно посмотреть здесь:

  • Перевод на турецкий от Bedirhan Budak

Содействие

Руководствуясь здравым смыслом, сначала попробуйте обсудить изменение, которое вы хотите внести в этот репозиторий, через issue.

  1. Убедитесь, что вносимые вами модификации действительно приводят к pull request. Изменение одной или двух строк следует запрашивать через issue вместо этого.
  2. При необходимости обновите файл README.md, указав сведения об изменениях структуры проекта.
  3. Убедитесь, что сообщения коммитов, содержащие модификации, соответствуют стандарту. Если вы не знаете, как это сделать, здесь отличный справочник.
  4. Ваш запрос будет рассмотрен как можно скорее (обычно в течение 48 часов).
Скачать инструмент
  • Хотя это совершенно неуместно с точки зрения лучших практик, использование глобальных переменных было оставлено нетронутым, чтобы не создавать серьёзных отклонений от логики исходного кода.
  • Код, включённый в Главу 5 книги, был переработан, хотя на практике он может быть, в лучшем случае, историческим интересом. Большая часть его функциональности зависит не только от очень конкретных случаев, описанных автором в качестве примеров, но и от эксплуатации уязвимостей, которые перестали быть актуальными в последние несколько лет (например, сниффинг трафика из беспроводных сетей 802.11, которые всё ещё полагаются на алгоритм безопасности WEP для шифрования трафика или, что ещё хуже, вообще не поддерживают никакой безопасности) или от абсурдного ожидания приобретения конкретной модели БПЛА читателем, если он намерен увидеть код в работе. Чтобы не заявлять сразу, что усилия, потраченные на чтение этой главы, почти бессмысленны, я могу добавить, что некоторую пользу можно извлечь из кода, связанного со сниффингом probing и beacon запросов.
  • Код в Главе 6, который касается Google и Twitter, оказался слишком устаревшим в том, как они обрабатывают текущие API, чтобы его переработка была оправдана. Если вы заинтересованы в работе с ними, выполните рефакторинг и отправьте pull request в этот репозиторий.
  • pxssh
    pexpect
    ModuleNotFoundError
  • chapter02/ssh_brutekey.py требовал ряда предварительно сгенерированных ключей для работы; более того, книга указывает читателю получить такие ключи по URL, который в настоящее время возвращает ответ 403. Из-за этого сжатый архив, содержащий ключи, был добавлен в подкаталог chapter02.
  • chapter02/ssh_botnet.py содержал неиспользуемый оператор импорта optparse, который был удалён. Похоже, это был фрагмент прерванной попытки реализации CLI для этого скрипта. Удивительно, но он был просто оставлен, даже в печатной версии книги. Код, который инициализирует ботнет и выдаёт его команды, был организован в области выполнения __main__ для стандартизации. Две команды, отправляемые ботам, были объединены, чтобы избежать ненужного количества операторов return.
  • chapter02/conficker.py удалён неиспользуемый вызов библиотеки sys.
  • chapter03/discover_networks.py пришлось перереализовать, а не просто переработать. Изначально он не только использовал устаревшую библиотеку mechanize, но и взаимодействовал с сервисом WiGLE способом, который больше не требуется, поскольку WiGLE теперь предоставляет API. По этой причине код был стандартизирован, а новая функция wigle_print была реализована с использованием библиотеки requests для отправки аутентифицированного HTTP GET-запроса к WiGLE. Ответ возвращает объект JSON, к которому можно обращаться напрямую, что также делает использование библиотеки re ненужным. Обработка исключений была добавлена, чтобы скрипт мог обрабатывать ответы об ошибках, отправляемые API. Обратите внимание, что этот скрипт зависит от winreg, который работает только в установках Python под ОС Microsoft Windows, и требует привилегий администратора во время выполнения для доступа к ключам реестра. Необходимо зарегистрировать учётную запись на https://wigle.net/account для доступа к API.
  • chapter03/pdf_read.py теперь использует библиотеку PyPDF4 вместо устаревшей PyPDF. В книге упоминается конкретный PDF-файл, и он был добавлен в подкаталог chapter03.
  • chapter03/exif_fetch.py требовал аргумента features="html.parser" при вызове конструктора объекта BeautifulSoup. Он был добавлен в строке 15 . Этот скрипт работает только с веб-приложениями, которые оборачивают изображения между HTML-тегами img (редкая практика в современных веб-приложениях, сильно зависящих от JavaScript).
  • chapter03/skype_parse.py использует файл main.db в качестве примера. Он был добавлен в подкаталог chapter03/skype_profile для удобства.
  • chapter03/firefox_parse.py использует несколько файлов .sqlite в качестве примеров. Они были добавлены в подкаталог chapter03/firefox_profile для удобства.
  • chapter03/iphone_messages.py ссылается на файлы резервных копий iPhone, которые не были предоставлены автором. Из-за этого код был переработан, но остаётся непроверенным.
  • chapter04/geo_ip.py использовал устаревшую библиотеку pygeoip. Как предложено её создателем, теперь следует использовать geoip2. Была предпринята попытка сохранить вновь реализованный код максимально похожим на исходную реализацию в книге, но некоторые изменения пришлось внести для соответствия новой структуре пакета geoip2 и его атрибутам. Необходимый для выполнения скрипта файл базы данных был загружен с MaxMind и сделан доступным в каталоге chapter04. Также был реализован CLI с использованием argparse.
  • chapter04/print_direction.py вызывал исключение UnicodeDecodeError при открытии файла в исходной реализации. Это было исправлено добавлением аргумента rb в менеджер контекста, обрабатывающий файл.
  • chapter04/find_ddos.py выводил исходный адрес атаки Hivemind как её назначение, делая вывод бесполезным. Теперь правильная переменная dst отображается в stdout. В книге упоминается файл traffic.pcap, который не был предоставлен автором, поэтому код был переработан, но остаётся непроверенным.
  • chapter04/test_domain_flux.py возвращает, что при анализе файла pcap, предоставленного автором, не было сделано ни одного неотвеченного запроса. По какой-то причине сами пакеты не имеют установленного значения поля DNS Resource Record, поэтому условие в функции dns_QR_test всегда оценивается как ложное. В связи с этим условие, оценивающее поле DNSRR, было удалено из условного оператора, и теперь анализируются все UDP-пакеты, источником которых является порт 53. Это приводит к менее эффективному коду, но, по крайней мере, выводятся результаты, как предполагалось в книге.
  • chapter05/blue_bug.py использует библиотеку PyBluez, которая, в свою очередь, требует библиотеку BlueZ и заголовочные файлы, как указано в её инструкции по установке. Эти зависимости должны быть установлены перед установкой PyBluez в качестве требования. В Linux это можно выполнить командой apt install bluetooth libbluetooth-dev. В исходном коде упоминается несуществующий объект client_sock, который был заменён на phone_sock.
  • chapter05/ftp_sniff.py содержал логическую ошибку, из-за которой отображался снифферный логин, но не пароль, из-за плохой реализации оператора if... else. Она была исправлена заменой условного оператора на вложенное предложение if.
  • chapter05/ninja_print.py требует для работы библиотеку obexftp. Эта библиотека была написана для Python 2 и до настоящего времени не портирована или заменена эквивалентной, поэтому код остаётся таким, как написан автором в его версии на Python 2.
  • chapter05/__init__.py и chapter06/__init__.py были добавлены для обеспечения возможности импорта модулей из chapter05/dup.py и chapter06/anon_browser.py, соответственно.
  • chapter06/anon_proxy.py был перереализован с использованием библиотеки MechanicalSoup для Python 3. В него интегрированы изменения, необходимые для proxy_test.py, useragent_test.py и print_cookies.py.
  • chapter06/anon_browser.py также был перереализован с помощью MechanicalSoup и прошёл некоторые модификации кода. Библиотека cookielib была заменена на http.cookiejar в методе-конструкторе для класса AnonBrowser, а параметр user_agents теперь принимает список строк вместо кортежа.
  • chapter06/link_parser.py был переработан с использованием новых способов обработки реализаций re и bs4.