infosecプロジェクトでは、文字列をバイト配列の一種として使用しています。これは一般に脆弱性テストで行われます。バイト配列を構築する際に、印刷可能な文字と印刷できない文字を連結したい。バイナリをPythonの文字列にキャストする方法
これは変換の問題ではなく、実際にその型をキャストしたいと考えています。私は関数やメソッドをchr()の周りに書くことができますが、より良い方法が必要です。
>>> print "A"*10 + chr(0x20) + "B"*10
AAAAAAAAAA BBBBBBBBBB
たとえば、大きなバイナリ配列を挿入するとどうなりますか?私は、私も文字列が8ビットバイトを持っていることを保証していないよというかなり確信しているので
>>> print "A"*10 + 0xBEEF + "B"*10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
>>> print "A"*10 + 0xBEEFBEEFBEEFBEEFBEEFBEEF + "B"*10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'long' objects
私はここで間違ったデータ型を使用しても良いです。
のために、私が望んでいるだろうものの例:それは、文字列にエスケープ進数を入力する雑用を少しだ場合は、binascii.unhexlify
を使用することができます
>>> print "A"*10 + 0xBEEFBEEFBEEFBEEFBEEFBEEF + "B"*10
AAAAAAAAAA������������BBBBBBBBBB
出力はどのようになっていますか? –
最後の2つの例では、人間が読めるものではありません。 – mgjk
これは問題ではありません...あなたの最初の例、あるいはA + 0xBEEF + Bが何を想定しているのでしょうか?それはあなたが望むバイト列、または16進文字列か... –