我正在尝试用python生成一个十六进制代码生成器,用于学校的一个任务。你知道吗
我想强制使用地址空间,但是,我不能用python构建真正的十六进制代码。你知道吗
我的剧本:
for j in range(0, 100):
var = "\\x%x" % j
newpath = "\xa0\xf4\xff"+var
print newpath
字节码“\xa0\xf4\xff”被正确打印-作为正确的十六进制码。但是,我的bruteforce不能生成真正的十六进制代码,只能生成字符串“\xab”等。如何生成真正的十六进制代码:本质上,我想生成32位机器的整个地址空间。你知道吗
编辑: 更具体地说,通过查看一些任意输出,您可以看到最后一个“hexcode”不是一个hexcode,而是一个字符串:
���\x5d
���\x5e
���\x5f
���\x60
���\x61
���\x62
���\x63
十六进制只是一个数字的不同表示形式。它使用的是16进制,而不是我们通常使用的10进制。你知道吗
记住这一点,任何数字都可以表示为十六进制数:
输出为
通过在print语句中使用
%X
,我们称之为“explorateasbase16”。您还可以在十六进制表示中指定一个数字,就像我在range(0, 0x20)
语句中所做的那样。你知道吗之所以看到
"\xa0\xf4\xff"
的打印输出,是因为python无法将该字符串中的值替换为字符,并打印出下一个最佳值,即数字的字符串表示。不要把一个由四个字节组成的数组与它的32位字表示法或四个字符串表示法混为一谈,这是同一回事!我建议您使用内置函数
ord()
、hex()
和chr()
来了解事物是如何工作的。示例:输出:
我认为您需要编写一个函数来获得所需的输出:
输出:
相关问题 更多 >
编程相关推荐