MCPcopy Index your code
hub / github.com/secdev/scapy / fragment

Function fragment

scapy/layers/inet.py:1393–1419  ·  view source on GitHub ↗

Fragment a big IP datagram

(pkt, fragsize=1480)

Source from the content-addressed store, hash-verified

1391
1392@conf.commands.register
1393def fragment(pkt, fragsize=1480):
1394 """Fragment a big IP datagram"""
1395 if fragsize < 8:
1396 warning("fragsize cannot be lower than 8")
1397 fragsize = max(fragsize, 8)
1398 lastfragsz = fragsize
1399 fragsize -= fragsize % 8
1400 lst = []
1401 for p in pkt:
1402 s = raw(p[IP].payload)
1403 nb = (len(s) - lastfragsz + fragsize - 1) // fragsize + 1
1404 for i in range(nb):
1405 q = p.copy()
1406 del q[IP].payload
1407 del q[IP].chksum
1408 del q[IP].len
1409 if i != nb - 1:
1410 q[IP].flags |= 1
1411 fragend = (i + 1) * fragsize
1412 else:
1413 fragend = i * fragsize + lastfragsz
1414 q[IP].frag += i * fragsize // 8
1415 r = conf.raw_layer(load=s[i * fragsize:fragend])
1416 r.overload_fields = p[IP].payload.overload_fields.copy()
1417 q.add_payload(r)
1418 lst.append(q)
1419 return lst
1420
1421
1422@conf.commands.register

Callers 2

fragmentMethod · 0.85
overlap_fragFunction · 0.85

Calls 5

warningFunction · 0.90
rawFunction · 0.90
copyMethod · 0.45
add_payloadMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected