我有点用骗人的东西,一直在做包裹。我遇到的一个问题是在包中指定某些数据/选项。例如,我想用选项60生成一个DHCP数据包,但我不知道用于此目的的有效输入数据是什么。我知道包应该有一个DHCP.options列表,我可以在列表中添加这样的选项,但是我如何知道我实际可以使用的数据类型和范围?我也知道我可以在解释器中输入DHCPOptions来查看它是一个“供应商类id”,但是我如何才能将它正确地添加到数据包中呢?
另一个例子:对于tcp timestamp选项,我发现必须将其输入为(‘Timestamp’, (int,int)),换句话说,字符串的元组Timestamp和两个整数的元组内的元组,在某种我不知道的范围内。
所以,最终,我的问题是,我在哪里/如何找到如何将有效的输入数据添加到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/

10-09 01:19
查看更多