Search code examples
pythonpython-3.xhexshellcode

Outputting hex values in python3


I am writing shellcode exploits with python3. However, when I try and output some hex bytes. e.g. using the line - python3 -c 'print("\x8c")' | xxd

The value in xxd is c28c, rather than the expected 8c

This issue does not occur in python2.


Solution

  • Your issue arises because Python 3 handles strings as Unicode, and print expects Unicode to encode some output for your terminal. Try the following to bypass this:

    python3 -c "import sys; sys.stdout.buffer.write(b'\x8c')" | xxd