2016-09-10 2 views
1

私はpython3でシェルコードを利用しています。しかし、私はいくつかの16進バイトを試して出力します。例えばライン使用 - xxdpython3 -c 'print("\x8c")' | xxdpython3で16進数値を出力する

値は予想8c

この問題はpython2で発生していないのではなく、c28cです。

答えて

3

あなたの問題は、Python 3が文字列をUnicodeとして扱い、printがユニコードで端末用にいくつかの出力をエンコードすることが予想されるため問題が発生します。これはバイパスする、次の試してみてください!そうに働い

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

だけで、さらに理解するために、 '2c'の添加は'プリント() 'バイト形式にUnicode文字列を変換しようとするとどうなりますか? –

関連する問題