
「Black Hat Python」(ジャスティン・サイツ著)のソースコード。コードは完全にPython 3に変換され、PEP8標準に準拠するように再フォーマットされ、非推奨ライブラリの実装に伴う依存関係の問題を排除するためにリファクタリングされています。
ジャスティン・サイツ著『Black Hat Python』のソースコードです。コードは完全にPython 3に変換され、PEP8標準に準拠するよう再フォーマットされ、非推奨ライブラリの実装に伴う依存関係の問題を排除するためにリファクタリングされています。
本書全体で提示されているソースコードには多くの最適化を実装できた可能性がありますが、読者が適宜修正を加えられるよう、コードは可能な限りそのままにしています。現状のコードは、docstringから型ヒント、例外処理に至るまで深刻なリファクタリングの努力を要し、コンテキストマネージャのような改善は言うに及ばずですが、これらの問題自体が、実装を意図する読者にとって有益となるかもしれません。また、インデントに起因する多くのバグが存在しますが、ランタイム中に致命的なエラーを避けるために修正されています。
同様の変換は、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 はメンテナンスされておらず、Python 3との非互換性が多い netaddr ライブラリを使用していました。そのため、コードはリファクタリングされ、現在はPythonのstdlibのipaddressモジュールを使用しています。chapter04/arper.py と mail_sniffer.py は、Python 3と互換性のないscapyライブラリを使用していました。そのため、コードはリファクタリングされ、現在はライブラリを使用しています。他の言語での貢献はこちらで確認できます:
常識として、このリポジトリに行いたい変更はまず issue で議論してください。
kamenechapter04/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バージョンのwheelファイルが含まれています。必要に応じて、他のバージョンをこちらからダウンロードできます。