====== Tester des codes hexadécimaux pour les chaînes de noms de fonctiond'api pour shell ====== :!: Vra c de travaux en cours de progrès boréalique :!: **DOIT ÊTRE COMPLÉTÉ** Sources de départ : * Windows Shellcoding x86 – Calling Functions in Kernel32.dll – Part 2 * https://0xdarkvortex.dev/index.php/2019/04/01/windows-shellcoding-x86-calling-functions-in-kernel32-dll-part-2 * Puis "quick interactive python way to get hex codes for api function name strings for shellcoding purposes" (tweet https://twitter.com/h0mbre_/status/1183800666449469440) : https://0xdarkvortex.dev/wp-content/uploads/2019/05/string_conv.png ===== En python ===== `--> python3 Python 3.6.8 (default, Oct 7 2019, 12:59:55) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import textwrap >>> import binascii >>> textwrap.wrap((binascii.hexlify(b'blabla'[::1]).decode()), 8) ['626c6162', '6c61'] Avec : * ''textwrap'' : Encapsulation et remplissage de texte https://docs.python.org/fr/3.7/library/textwrap.html * '' binascii.hexlify(data)'' : Renvoie la représentation hexadécimale du binaire ''data''. Chaque octet de ''data'' est converti en la représentation 2 chiffres correspondante. L’objet octets renvoyé est donc deux fois plus long que la longueur de ''data''. ===== Bash ===== `--> printf blabla | rev | xxd -p | fold -w8 616c6261 6c62 Avec - ''printf'' : format and print data - ''rev'' : reverse lines of a file or files - ''xxd'' : make a hexdump or do the reverse et ''-p'' output in postscript continuous hexdump style. Also known as plain hexdump style. - ''fold'' : wrap each input line to fit in specified width eet ''-w8'' use WIDTH columns instead of 80 Nous avons besoin de les situer (timestamp) en ''0x'' pour les rendre utilisbales si compilations `--> printf blabla | rev | xxd -p | fold -w8 | ts 0x 0x 616c6261 0x 6c62 Utilisions ''ts'' présent dans [[https://joeyh.name/code/moreutils|moreutils]] ? et ''tr'' qui permet de convertir une chaîne de caractères, un utilitaire ''UNIX'' pour traduire, supprimer ou presser des caractères répétés. Il lira à partir de ''STDIN'' et écrira à ''STDOUT''. * http://www.linux-france.org/article/memo/node10.html * https://www.thegeekstuff.com/2012/12/linux-tr-command/ printf blabla | rev | xxd -p | fold -w8 | ts 0x | tr -d ' ' 0x616c6261 0x6c62 ====== Cas pratiques ====== ====== Vrac ====== * Linux kernel api documenation https://www.kernel.org/doc/htmldocs/kernel-api/