CTFに使いそうな小技[Python]

よく使うのに忘れがちなのでメモしておく。

実験

>>> print 'AAAA'.encode('hex') #Ascciiを16進数表記にする
41414141
>>> int('41414141',16) # 16進数を10進数に変換
1094795585

Ascii文字列を16進表記

>>> import binascii
>>> binascii.hexlify('hoge')
'686f6765'

Asccii文字列と16進表記の相互変換

※import binasciiしなくても使える

>>> print 'hoge'.encode('hex')
686f6765
>>> print '686f6765'.decode('hex')
hoge

10進数と16進数の相互変換

# 10進数を16進数に変換
>>> hex(10)
'0xa'

# 先頭に0xを付けて出力
>>> '%#x' % 10
'0x1d'

# 先頭に0xを付けずに出力
>>> '%x' % 29
'1d'

# 16進数を10進数に変換

>>> int('41414141',16)
1094795585
>>> int('0x41414141',16) # [0x]を付けても付けなくても結果は同じだった
1094795585