
エクスプロイトやシェルコードを扱うなら、シェルコードが何であり、どう扱うかは既にご存知でしょう。時にはC、Perl、Pythonなどのエクスプロイトに付属しています。通常、次のようになります:
payload = (b"xbfxabxd0x9ax5bxdaxc7xd9x74x24xf4x5ax2bxc9" + "xb1x45x83xc2x04x31x7ax11x03x7ax11xe2x5ex2c" + "x72xd2xa0xcdx83x85x29x28xb2x97x4dx38xe7x27" + ...
しかし、時にはこのシェルコードをバイナリファイルとして表現する必要があります。ファイルに注入したり、デバッグしたり、その他の理由で。シェルコードを扱い、さまざまなタスクを実行するスクリプトはたくさんあります。バイナリからシェルコードへ、シェルコードからバイナリへ(bashのみ)… しかし、Windowsでそれを実現するシンプルなスクリプトが見つかりませんでした。"xxd"コマンド(hexdumpを作成)をWindowsに移植するのも可能ですが、簡単ではありません(Vim for Windowsにバンドルされているようですが、以前はunixtoolsで利用可能でした…)。
とにかく、ここにWindowsで動作し、仕事をこなすシンプルなPythonスクリプトがあります。これは汚れたシェルコード(スペース、改行、連結コマンド…)を許容し、16進文字のみを保持します。そして、"write"を"wb"モードで使用するため、バイナリファイルが得られます。迅速で粗削りです。