最终目标是翻转位置 X 处的最后一位字节。假设我们从网站上的字符串开始,然后对它进行 Base64 解码,以便我们可以使用它:
IV = "2RDs+xm/AxtYj+XViJmBPQ=="
IV = base64.b64decode(IV)
这给了我们一些看起来像 (����X���ψ��=) 的东西,它看起来像垃圾,但它是我们可以使用的东西。处理这个问题的最佳方法是将其放入列表中。
woop = list(IV)
假设在此示例中,我们希望翻转第二个字节的最后一位。 Python 从零开始计数,因此我们需要将计数器减 1。否则,我们会将程序指向第三个字节!要翻转任何内容,请将其异或乘以 1。现在这是我的问题...
CounterX = CounterX - 1
woop[CounterX] = chr(ord(IV[CounterX]) ^ 1)
woop = "".join(woop)
IV = woop
我很确定这会翻转整个字节。我怎样才能告诉它只翻转 IV[CounterX] 处字节的最后一位?
最佳答案
base64.decode
返回一个字符串- python2x 中的字符串始终是字节!
- 如果您使用的是 python3,您可能需要调用
bytes(IV)
以确保 8 位 block ...但我不确定我不太使用 python3
- 如果您使用的是 python3,您可能需要调用
- some_int XOR 1 只会翻转最低字节
- 如
print bin(0xff ^ 0x01)
所示
- 如
那么我们再次回到是什么让您认为这不是您所看到的行为?您能给我们举个例子来说明这个问题吗?
关于python - 翻转一个字节的最后一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22462538/