如何在python中遍历每个可能的字节值?

时间:2018-04-15 17:47:17

标签: python cryptography

我正在为我的信息安全课程进行Padding Oracle攻击。在没有深入了解攻击的细节的情况下,我需要一个for循环来循环遍历所有可能的1字节十六进制值。

我需要做的伪代码:

for x in range('\x00', '\xFF'):
    replace last byte of ciphertext with byte
    perform padding check

我无法弄清楚如何实现这一目标。有什么想法吗?

1 个答案:

答案 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