python - 如何在 Scapy 中正确修改数据包数据?

标签 python python-2.7 tcp dhcp scapy

我一直在使用 Scapy,并且一直在制作数据包。我遇到的一个问题是试图在数据包中指定某些数据/选项。例如,我想制作一个带有选项 60 的 DHCP 数据包,但我不知道为此使用的有效输入数据是什么。我知道数据包应该有一个 DHCP.options 列表,我可以将这样的选项添加到列表中,但我如何知道我实际可以使用的数据类型和范围?我也知道我可以在解释器中键入 DHCPOptions 来查看它是一个“供应商类 ID”,但我如何才能将它正确地添加到数据包中呢?

另一个例子:对于 TCP 时间戳选项,我发现我必须输入 ('Timestamp', (int,int)),换句话说,字符串 时间戳 和该元组中的两个整数元组,在我不知道的某种范围内。

所以最终,我的问题是我在哪里/如何找到如何将有效输入数据添加到 Scapy 中的数据包中?某处有列表或文档吗?我四处搜索,但即使在源代码中也找不到它,而且文档似乎根本没有帮助。非常感谢您的帮助!

示例代码:

p = Ether()/IP()/UDP()/BOOTP()/DHCP()

# ?:what goes in the list to correctly add any option?
p[DHCP].options = [(?,?)]

# Trying to add option 60 here, unsure how
p[DHCP].options.append( ('vendor_class_id', ?) )  

我仅将选项 60 用作示例,但我想知道如何添加任何有效选项。

最佳答案

好吧,这可能不是完整的答案,因为我也发现很难找到这样的信息,但是......

对于某些选项,您可以查看dhcp.py它们是如何在 DHCPOptions 字典中定义的 - 例如,您看到 renewal_time 根据其定义是 int 类型并且默认设置为 21600 - IntField("renewal_time ", 21600)

对于其他信息,我建议深入研究 RFC。例如,RFC 2132描述了 DHCP 选项和 BOOTP 供应商扩展
RFC 1497仅指供应商选项

关于python - 如何在 Scapy 中正确修改数据包数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24399236/

相关文章:

python - CX_freeze 与 ruamel.yaml

python - 使用 Inkscape 将 SVG 导出到 EPS 时出现奇怪的符号

python - Pandas 将列拆分为多级

python - 使用 python 更改文件权限的 Chmod 问题

c++ - 套接字发送调用被阻塞了这么久

Python:识别系统的状态空间模型

python - 在 Pandas Dataframe 中追加或添加行

objective-c - Objective-C 中的 TCP/IP?

python - WSGI- python : How to determine the ** OPENED ** file's image type?

c# - 尝试与 TcpClient 连接时出现 SocketException