Вот как создать пакет:
>>> packet = Ether() / IP(options='\x00')
Обратите внимание, что длина заголовка IP (IHL) увеличивается кратно 4 байтам, поэтому длина теперь составляет 24 байта:
>>> packet.show2()
###[ Ethernet ]###
dst= ff:ff:ff:ff:ff:ff
src= 00:00:00:00:00:00
type= 0x800
###[ IP ]###
version= 4
ihl= 6
tos= 0x0
len= 24
id= 1
flags=
frag= 0
ttl= 64
proto= hopopt
chksum= 0x7be3
src= 127.0.0.1
dst= 127.0.0.1
\options\
|###[ IP Option End of Options List ]###
| copy_flag= 0
| optclass= control
| option= end_of_list
|###[ IP Option End of Options List ]###
| copy_flag= 0
| optclass= control
| option= end_of_list
|###[ IP Option End of Options List ]###
| copy_flag= 0
| optclass= control
| option= end_of_list
|###[ IP Option End of Options List ]###
| copy_flag= 0
| optclass= control
| option= end_of_list
Если вы хотите отправить его, вы можете использовать функцию sendp:
>>> sendp(packet)
.
Sent 1 packets.
Если вы хотите адресовать его другому хосту, установите dst='192.168.1.1'
или аналогично IP-уровню пакета. Scapy автоматически установит другие поля (источник Ethernet, пункт назначения, источник IP) соответствующим образом.