gpt4 book ai didi

Python - 以十六进制计数

转载 作者:太空狗 更新时间:2023-10-30 00:44:32 24 4
gpt4 key购买 nike

以十六进制计数并将结果附加到更大的十六进制字符串末尾的好方法是什么?我正在尝试格式化要在填充 oracle 攻击中使用的字符串。这些字符串将连接在一起形成一个 HTTP 请求。

我有两个 32 个字符的十六进制字符串。 'g' 是一个猜测,pad 是填充 oracle。基本上我需要做的是让 g 的最后一个字节从 0x00 到 0xff 以十六进制计数。到目前为止我的代码是:

split = [value[x:x+32] for x in range (0, len(value), 32)]  #Split the CT into 16 byte chunks
IV = unhexlify(split[0])
c0 = unhexlify(split[1])
c1 = unhexlify(split[2])
c2 = unhexlify(split[3])


g = unhexlify("00000000000000000000000000000000")
pad = unhexlify("00000000000000000000000000000001")

pad_xor_guess = xorb(g, pad)
c1_prime = xorb(pad_xor_guess, c1)

attack = str(hexlify(c1_prime + c2).decode())

'attack' 将被传递到将攻击字符串附加到网址的查询方法中。现在我坚持的部分是我基本上必须发送最多 256 个 HTTP 请求来猜测明文的一个字节。我如何使用 for 循环从 00 到 ff“向上计数”,将结果附加到 g,以便它可以与 pad 和选定的密文 block 进行异或运算?到目前为止,我一直沿着这条路走下去,但我一直在研究如何使用十六进制字符串来实现这一点。

for i in range(0, 20):
#g = bytes([i])
print(bytes([i]),end=' ')
#print(g, end=' ')

最佳答案

对于给定的 int 值,hex 函数将为您提供以 0x 开头的十六进制字符串,因此 hex(i)[2:] 为您提供十六进制数本身,zfill 将确保您获得两位数字的个位数

for i in range(256):
print(hex(i)[2:].zfill(2))

您可能还想考虑将其全部大写,因为某些解析器依赖于以大写字母书写的十六进制,因此示例将是:

for i in range(256):
print(hex(i)[2:].zfill(2).upper())

如果你只需要完整的字符串,你不需要一个一个地附加它们,你可以一次性创建字符串:

hex_str = "".join([hex(i)[2:].zfill(2).upper() for i in range(256)])

关于Python - 以十六进制计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28432854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com