Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scapy-如何模拟大小小于最小值(20字节)的IP报头/数据包_Python_Scapy - Fatal编程技术网

Python Scapy-如何模拟大小小于最小值(20字节)的IP报头/数据包

Python Scapy-如何模拟大小小于最小值(20字节)的IP报头/数据包,python,scapy,Python,Scapy,有人能帮我吗,如何使用scapy模拟大小小于最小值的IP数据包 我想将大小减少到10以验证错误计数器 从scapy剪下 i=IP(src=“20.1.1.2”,dst=“20.1.1.1”) >>>莱恩(一) 20 我需要减少此值Scapy不允许您更改IP头中的字节数。相反,您可以将原始IP字节作为数据加载到eth负载之上 创建数据包 这里我们以字节的形式加载IP报头 ip_data=ip(src=“20.1.1.2”,dst=“20.1.1.1”) >>>原始(ip_数据) b'E\x00\

有人能帮我吗,如何使用scapy模拟大小小于最小值的IP数据包

我想将大小减少到10以验证错误计数器

从scapy剪下

i=IP(src=“20.1.1.2”,dst=“20.1.1.1”) >>>莱恩(一) 20
我需要减少此值

Scapy不允许您更改IP头中的字节数。相反,您可以将原始IP字节作为数据加载到eth负载之上

创建数据包 这里我们以字节的形式加载IP报头

ip_data=ip(src=“20.1.1.2”,dst=“20.1.1.1”) >>>原始(ip_数据) b'E\x00\x00\x14\x00\x01\x00\x00@\x00P\xe5\x14\x01\x01\x02\x14\x01\x01\x01' >>>数据包=以太()/raw(ip_数据) 检查数据包字节 我们可以将数据包中的原始字节视为一个数组,以仅查看IP头“有效负载”的前10个(或全部)字节:

>>数据包\u字节=原始(数据包)
警告:找不到到达目标的Mac地址。使用广播。
>>>eth_边界=14
>>>数据包字节[eth_边界:]#所有IP字节
b'E\x00\x00\x14\x00\x01\x00\x00@\x00P\xe5\x14\x01\x01\x02\x14\x01\x01\x01'
>>>数据包_字节[eth_边界:eth_边界+10]#仅前10个字节
b'E\x00\x00\x14\x00\x01\x00\x00@\x00'

我不熟悉scapy,但是
len
IP包的长度是否包含以字节为单位的IP头?如果是这样的话,您将无法减少它,因为20字节是头本身可以拥有的最小大小。谢谢。是的,我需要将标题大小调整到小于最小值,因为默认情况下Ixia/Spirent不允许,我想检查是否有任何方法可以使用ScapyTanks调整它!,你能帮我找出我在设置边界时遗漏了什么吗?>>eth_boundary=14>>>>pkt=e/i>>>len(e)14>>>len(i)20>>>>>>pkt1[eth_boundary:]回溯(最近一次调用):文件“/usr/lib/python3.5/code.py”,第91行,在runcode exec(code,self.locals)文件“”中,第1行,在getitem Rase Indexer(“层[%s]中未找到“%lname”)的文件“/home/regress/scapy/scapy/packet/packet.py”中,第1171行索引器:未找到层[14]询问另一个堆栈溢出问题:)完成:)