Как использовать scapy с длиной ip> 20 и опцией ip 0 - PullRequest
0 голосов
/ 28 августа 2018

Как мне отправить пакет с Scapy, у которого длина ip> 20 и первый байт опции ip == 0

1 Ответ

0 голосов
/ 29 августа 2018

Вот как создать пакет:

>>> 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) соответствующим образом.

...