如何使用IP长度> 20和IP选项0的Scapy

时间:2018-08-28 14:26:03

标签: scapy

如何使用Scapy发送一个IP长度> 20并且IP选项的首字节== 0的数据包

1 个答案:

答案 0 :(得分:1)

以下是制作包装盒的方法:

>>> 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会自动适当地设置其他字段(以太网源,目标,IP源)。