我正在为我的信息安全课程进行Padding Oracle攻击。在没有深入了解攻击的细节的情况下,我需要一个for循环来循环遍历所有可能的1字节十六进制值。
我需要做的伪代码:
for x in range('\x00', '\xFF'):
replace last byte of ciphertext with byte
perform padding check
我无法弄清楚如何实现这一目标。有什么想法吗?
答案 0 :(得分:2)
字节实际上只是0-255(含)范围内的整数,或者是十六进制,0到FF。生成整数,然后从中创建字节值。 bytes()
类型采用整数列表,因此创建长度为1的列表:
for i in range(0xff):
b = bytes([i])
如果将密文存储在bytearray()
object中,您甚至可以直接使用整数替换最后一个字节:
ciphertext_mutable = bytearray(ciphertext)
for i in range(0xff):
ciphertext_mutable[-1] = i # replace last byte