Scapy - 如何模拟大小小于最小值(20 字节)的 IP Header/Packet
Scapy - How to simulate IP Header/Packet with size less than minimum (20 bytes)
谁能帮帮我,如何使用 scapy 模拟大小小于最小值的 IP 数据包。
我想将大小减小到 10 以验证错误计数器。
从 scapy 中截取
>>> i=IP(src="20.1.1.2",dst="20.1.1.1")
>>> len(i)
20
我需要降低这个值
Scapy 不会让您更改 IP 中的字节数 header。您可以做的是将原始 IP 字节作为数据加载到 eth 有效载荷之上。
创建数据包
这里我们加载 IP header 作为字节。
>>> ip_data=IP(src="20.1.1.2",dst="20.1.1.1")
>>> raw(ip_data)
b'E\x00\x00\x14\x00\x01\x00\x00@\x00P\xe5\x14\x01\x01\x02\x14\x01\x01\x01'
>>> packet = Ether()/raw(ip_data)
检查数据包字节
我们可以将数据包中的原始字节视为一个数组,只查看 IP 的前 10 个(或全部)字节 header "payload":
>>> packet_bytes = raw(packet)
WARNING: Mac address to reach destination not found. Using broadcast.
>>> eth_boundary = 14
>>> packet_bytes[eth_boundary:] # All IP bytes
b'E\x00\x00\x14\x00\x01\x00\x00@\x00P\xe5\x14\x01\x01\x02\x14\x01\x01\x01'
>>> packet_bytes[eth_boundary:eth_boundary+10] # Only first 10 bytes
b'E\x00\x00\x14\x00\x01\x00\x00@\x00'
谁能帮帮我,如何使用 scapy 模拟大小小于最小值的 IP 数据包。
我想将大小减小到 10 以验证错误计数器。
从 scapy 中截取
>>> i=IP(src="20.1.1.2",dst="20.1.1.1")
>>> len(i)
20
我需要降低这个值
Scapy 不会让您更改 IP 中的字节数 header。您可以做的是将原始 IP 字节作为数据加载到 eth 有效载荷之上。
创建数据包
这里我们加载 IP header 作为字节。
>>> ip_data=IP(src="20.1.1.2",dst="20.1.1.1")
>>> raw(ip_data)
b'E\x00\x00\x14\x00\x01\x00\x00@\x00P\xe5\x14\x01\x01\x02\x14\x01\x01\x01'
>>> packet = Ether()/raw(ip_data)
检查数据包字节
我们可以将数据包中的原始字节视为一个数组,只查看 IP 的前 10 个(或全部)字节 header "payload":
>>> packet_bytes = raw(packet)
WARNING: Mac address to reach destination not found. Using broadcast.
>>> eth_boundary = 14
>>> packet_bytes[eth_boundary:] # All IP bytes
b'E\x00\x00\x14\x00\x01\x00\x00@\x00P\xe5\x14\x01\x01\x02\x14\x01\x01\x01'
>>> packet_bytes[eth_boundary:eth_boundary+10] # Only first 10 bytes
b'E\x00\x00\x14\x00\x01\x00\x00@\x00'