《Black Hat Python》一书(作者Justin Seitz)的源代码。代码已完全转换为Python 3,按照PEP8标准重新格式化,并重构以消除涉及已弃用库实现的依赖问题。
Justin Seitz 所著《Black Hat Python》一书的源代码。代码已完全转换为 Python 3,并按照 PEP8 标准重新格式化,同时进行了重构,以消除因实现已弃用库而导致的依赖问题。
尽管本书呈现的源代码中本可以实施许多优化,但代码尽可能保持原样,以便读者自行决定应用这些修改。当前代码需要进行一些重大的重构工作,包括文档字符串、类型提示和异常处理,更不用说上下文管理器等增强功能,但这些问题的存在本身可能对打算实现它们的读者有益。代码中还包含许多源自缩进问题导致的错误,这些错误已得到修正,以避免运行时出现致命错误。
本人已对 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 均在 IP 数据包大小定义以及 32/64 位架构间的可移植性方面存在严重问题,原因是 struct 的实现存在问题。更多关于这些问题的信息,请参阅 Stack Overflow 上的这个帖子。chapter03/scanner.py 使用了 netaddr 库,该库已不再维护,且与 Python 3 存在许多不兼容问题。因此代码已进行重构,现在使用 Python stdlib 中的 ipaddress 模块。chapter04/arper.py 和 mail_sniffer.py 使用了 scapy 库,该库不兼容 Python 3。因此代码已重构,现在使用 库。其他语言的贡献可在此处查看:
按照常识,首先尝试通过 issue 讨论您想要对此仓库进行的更改。
README.md 文件,包含与项目结构更改相关的详细信息。kamenechapter04/pic_carver.py 现在使用 opencv-python 库替代 cv2。已弃用的 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 已重构,使用 types 替代已弃用的 imp 库。已按照书中指示实现了一个包含必要配置文件的子目录结构。trojan_config 变量缺少到 config 子目录的相对路径。已在第 60 行添加了对 to_tree 方法的调用,以避免原始代码引发的 AttributeError 异常。已包含关于在使用双因素认证时如何生成访问令牌(而非使用密码)的注释。chapter08/keylogger.py 需要 PyHook 库才能工作。已包含一个 1.6.2 版本的 wheel 文件。如果需要,其他版本可从此处下载。