Scapy не позволит вам изменить количество байтов в заголовке IP. Вместо этого вы можете загрузить необработанные байты IP в качестве данных поверх полезной нагрузки eth.
Создать пакет
Здесь мы загружаем заголовок IP в виде байтов.
>>> 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)
Проверка байтов пакета
Мы можем рассматривать необработанные байты в пакете как массив, чтобы смотреть только первые 10 (или все) байтов заголовка IP«полезная нагрузка»:
>>> 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'