python - 随机翻转python二进制字符串中的位

标签 python bit-manipulation fuzz-testing

我正在 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/

相关文章:

c# - 一次对多个整数应用按位运算符

Java double 和 int 值之间的按位 AND 运算

testing - 随机测试与模糊测试的关系

python - 如何从 Nmap 输出扫描中省略某些行?

python - 在模型序列化器中获取当前用户

python - 尝试将列表中的整数插入日期时间对象

bit-manipulation - 如何在没有 while 循环的情况下获取 32 位整数中最重要的非零字节?

validation - 这些 tcl 错误是否表示代码不安全?

python - 将逗号处从文件读入的列表拆分为单独元素的列表