
pyshell2bin
Если вы работаете с эксплойтами и шеллкодом, вы уже знаете, что такое шеллкод и как с ним обращаться. Иногда он поставляется вместе с эксплойтами на C, Perl, Python… Обычно это выглядит так:
payload = (b"xbfxabxd0x9ax5bxdaxc7xd9x74x24xf4x5ax2bxc9" + "xb1x45x83xc2x04x31x7ax11x03x7ax11xe2x5ex2c" + "x72xd2xa0xcdx83x85x29x28xb2x97x4dx38xe7x27" + ...
Но иногда вам нужно бинарное файловое представление этого шеллкода, чтобы внедрить его в какой-либо файл, отладить или по любой другой причине. В сети полно всевозможных скриптов для работы с шеллкодом и решения разных задач. Из бинарного кода в шеллкод, из шеллкода в бинарный (только для bash)… Но мне не удалось найти простой скрипт, который работал бы под Windows. Даже найти команду «xxd» (создание hex-дампа), портированную на Windows, возможно, но непросто (похоже, она поставляется в комплекте с Vim для Windows, но раньше была доступна вместе с unixtools…).
В любом случае, вот простой скрипт на Python, который работает в Windows и справится с задачей. Он будет терпим к «грязному» шеллкоду (пробелы, возвраты каретки, команды конкатенации…) и оставит только шестнадцатеричные символы. Затем он использует «write» с «wb», чтобы вы получили бинарный файл. Быстро и просто.