0%

Crypto·Py3编码

CTF特训营 · 编码

Py3 解决历史遗留问题

1. 字符串

  • 初级
1
2
a = 'flag'
hex_a = a.encode().hex() # encode转字节型后再转十六进制
  • 中等
1
2
import binascii
a = binascii.hexlify(b'flag') # 字符串转字节转十六进制
1
2
3
4
import binascii
num = 584734024210391580014049650557280915516226103165
a = hex(num)[2:] # 十六进制,去0x
a = binascii.unhexlify(a) # 十六进制转字节型
  • 高级
1
2
3
4
from Crypto.Util.number import *
num = 584734024210391580014049650557280915516226103165
print(long_to_bytes(num))
print(bytes_to_long(b'flag(123)'))

2. 字符

1
2
a = ord('a')  # ‘a’的十进制的ascii码 
a = b'a'.hex() # 'a'的十六进制adcii码

3.整数

1
2
3
4
a = hex(123)
b = bin(789)
c = oct(101)
d = int('666c', 16)

Base 转码

1
2
3
import base64
print(base64.b32encode(b'flag'))
print(base64.b64decode('QVNU'))