我在这里要求提供远程缓冲区溢出提示。我目前正在解决战争游戏,这是我第一次尝试这些新类型的编码。
目前我正在尝试制作这样的代码:
假装我有一个地址变量,其范围为0xbfffff00和0xbfffffff。我想暴力破解这个返回地址,我将通过一些套接字编程来解决socket.send。问题是,我用来学习的os是little-endian格式,所以我想向后发送我的返回地址(按字节)。
示例)addr = 0xb1234567 #我想发送674523b1。
我已经搜索过这样的功能,我发现打印('某些' [:: - 1])。encode(" hex")可以完成工作,但这似乎适用于字符串,而不是数字本身。有没有办法在python中向后发送地址?
感谢。
答案 0 :(得分:1)
struct.pack
会将数值转换为适合通过网络发送的字节序列。根据{{3}}:
In [7]: addr=0x30313233
In [8]: struct.pack("@I", addr) # native
Out[8]: '3210'
In [9]: struct.pack("<I", addr) # little-endian
Out[9]: '3210'
In [10]: struct.pack(">I", addr) # big-endian
Out[10]: '0123'
但请注意,在网络编程的正常过程中,您永远不会使用上述格式。相反,您将始终发送“网络字节顺序”:
In [11]: struct.pack("!I", addr) # network byte order
Out[11]: '0123'