
pyshell2bin
Se você trabalha com exploits e shellcode, já sabe o que é shellcode e como lidar com ele. Às vezes ele vem junto com exploits em C, Perl, Python… Normalmente parece com isto:
payload = (b"xbfxabxd0x9ax5bxdaxc7xd9x74x24xf4x5ax2bxc9" + "xb1x45x83xc2x04x31x7ax11x03x7ax11xe2x5ex2c" + "x72xd2xa0xcdx83x85x29x28xb2x97x4dx38xe7x27" + ...
Mas às vezes você precisa de uma representação em arquivo binário desse shellcode, para poder injetá-lo em algum arquivo, depurá-lo ou por qualquer outro motivo. Existem vários scripts por aí para lidar com shellcode e realizar diferentes tarefas. De binário para shellcode, de shellcode para binário (somente para bash)… Mas não consegui encontrar um script simples para fazer isso no Windows. Até encontrar o comando “xxd” (fazer um hexdump) portado para Windows é possível, mas não é fácil (parece que ele vem junto com o Vim para Windows, mas costumava estar disponível com unixtools…).
De qualquer forma, aqui está um script simples em Python que funciona no Windows e fará o trabalho. Ele tolera shellcode sujo (espaços, retornos, comandos de concatenação…) e manterá apenas caracteres hexadecimais. Depois ele usa “write” com “wb” para que você obtenha um arquivo binário. Rápido e sujo.