我正在 python 中创建一些模糊测试,如果能够给定一个二进制字符串,随机翻转一些位并确保正确引发异常,或者正确显示结果以进行轻微改动,这对我来说将是无价的给定有效的二进制文件。有谁知道我如何在 Python 中解决这个问题?我意识到这在低级语言中是非常微不足道的,但出于工作原因,我被告知要在 Python 中执行此操作,但我不确定如何开始它,或获取 python 中某些内容的二进制表示。关于如何在 Python 中执行这些模糊测试有什么想法吗?
最佳答案
字符串是不可变的,因此要进行更改,首先要做的可能是将其转换为列表。同时,您可以将数字转换为整数,以便于操作。
hexstring = "1234567890deadbeef"
values = [int(digit, 16) for digit in hexstring]
然后您可以翻转任何十六进制数字中的单个位。
digitindex = 2
bitindex = 3
values[digitindex] ^= 1 << bitindex
如果需要,您可以转换回十六进制。
result = "".join("0123456789abcdef"[val] for val in values)
关于python - 随机翻转python二进制字符串中的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17368479/