scapy构造IP分片包

本文详细比较了IPv6和IPv4在网络分片方面的区别,并通过使用Scapy库进行实际操作,展示了IPv6 Fragment Header和UDP包处理的实例。实验涵盖了不同ID和分片偏移的UDP数据包发送,同时涉及IPv4的分片处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

difference between IPv6 and IPv4 fragment:

Fragment Extheader长度8, Udp payload length1440

Udp payload(1440) + udp header(8) + fragment Exthdr(8) = 1456 = IP payload length
Payload length 1456 + 40 (ipv6 header) + 14 = 1510 (Ethernet frame length)

the last fragment udp payload can be 1448 bytes, otherwise udp payload should be 1440 in udp fragment packet.

mac=Ether(src="00:50:56:95:0d:c2",dst="00:50:56:95:16:d9")
ipv6=IPv6(version=6, tc=0, fl=0, src="3001::2", dst="3001::3",plen=1456, nh="Fragment Header",hlim=64 )

v6exthdr=IPv6ExtHdrFragment(m=0, id=4004085281,offset=185,nh="UDP", res1=0, res2=0)
udp=UDP(sport=1025, dport=999, len=1448, chksum=0xb9dc)/('x'*1440)
u=mac/ipv6/v6exthdr/udp
srp(u,iface="ens192")


v6exthdr=IPv6ExtHdrFragment(m=1, id=4004085281,offset=185,nh="UDP", res1=0, res2=0)
udp=UDP(sport=1025, dport=999, len=1448, chksum=0xb9dc)/('x'*1440)
u=mac/ipv6/v6exthdr/udp
srp(u,iface="ens192")


for i in range (4096):
    v6exthdr=IPv6ExtHdrFragment(m=1, id=i,offset=185,nh="UDP", res1=0, res2=0)
udp=UDP(sport=1025, dport=999, len=1448, chksum=0xb9dc)/('x'*1440)
u=mac/ipv6/v6exthdr/udp
    sendp(u,iface="ens192")

ipv4=IP(src="192.168.1.2", dst="192.168.1.3",flags=0, frag=185)
srp(mac/ipv4/UDP()/('x'*1472),iface="ens192")

#!/usr/bin/python

from scapy.all import *

mac=Ether(src="00:50:56:95:0d:c2",dst="00:50:56:95:16:d9")
ipv6=IPv6(version=6, tc=0, fl=0, src="3001::2", dst="3001::3",plen=1456, nh="Fragment Header",hlim=64 )


for i in range (4096):
v6exthdr=IPv6ExtHdrFragment(m=1, id=i+4096,offset=185,nh="UDP", res1=0, res2=0)
udp=UDP(sport=1025, dport=999, len=1448, chksum=0xb9dc)/('x'*1440)
u=mac/ipv6/v6exthdr/udp
sendp(u,iface="ens192")


while i >=0:

sp = 1025 + i 
if i == 65534 - 1025:
    i = 0 

v6exthdr=IPv6ExtHdrFragment(m=1, id=i+1025,offset=185,nh="UDP", res1=0, res2=0)
udp6=UDP(sport=sp, dport=999, len=1448, chksum=0xb9dc)/('x'*1440)

u6=mac/ipv6/v6exthdr/udp6

ipv4 = IP(src="192.168.1.2", dst="192.168.1.3",id = i + 1025, flags=0, frag=185)
u4=mac/ipv4/UDP(sport=sp, dport=999)/('x'*1472)

sendp(u6,iface="ens192")
sendp(u4,iface="ens192")

i += 1
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值