Scapy - Как смоделировать заголовок / пакет IP с размером меньше минимального (20 байт) - PullRequest
0 голосов
/ 30 сентября 2019

Может кто-нибудь мне помочь, как имитировать IP-пакет с размером меньше минимального с помощью scapy.

Я хотел уменьшить размер до 10, чтобы проверить счетчик ошибок.

Snip fromscapy

>>> i=IP(src="20.1.1.2",dst="20.1.1.1")

>>> len(i)
20 

Мне нужно уменьшить это значение

1 Ответ

0 голосов
/ 30 сентября 2019

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'
...