首页 > 解决方案 > 在 Scapy 参数中分配的值

问题描述

如何找出在 IP 协议或任何其他协议的任何参数中分配给特定值的数字?

如果我设置一个值:

a=IP(proto=73)

我得到:

 version= 4
 ihl= None
 tos= 0x0
 len= None
 id= 1
 flags= 
 frag= 0
 ttl= 64
**proto= rspf**
 chksum= None
 src= 127.0.0.1
 dst= 127.0.0.1
\options\

如果我设置另一个值:

a=IP(proto=12)

我得到:

  version= 4
  ihl= None
  tos= 0x0
  len= None
  id= 1
  flags= 
  frag= 0
  ttl= 64
  proto= pup
  chksum= None
  src= 127.0.0.1
  dst= 127.0.0.1
  \options\

等等。

某些数字被分配给包的某些参数中的值。目前,我列出了从 1 到 100 的每个数字,以查看其中隐藏的内容,但这是一个非常漫长而痛苦的过程。

如何查看哪些数字分配给了值?

谢谢。

标签: pythonlinuxscapy

解决方案


scapy 从你的系统加载协议列表

scapy 中 proto 字段的定义: https ://github.com/secdev/scapy/blob/master/scapy/layers/inet.py#L466

它被定义为:

ByteEnumField("proto", 0, IP_PROTOS),

IP_PROTOS 的定义: https ://github.com/secdev/scapy/blob/bfd9c52af61978ac872d3c0bf5eef81168d88ca9/scapy/data.py#L476

为了胜利:

IP_PROTOS = load_protocols(os.environ["SystemRoot"] + "\\system32\\drivers\\etc\\protocol")  # noqa: E501

对于 Linux:

IP_PROTOS = load_protocols("/etc/protocols")

现在,我有 linux 系统,所以对我来说它看起来像这样:

cat /etc/protocols
# Internet (IP) protocols
#
# Updated from http://www.iana.org/assignments/protocol-numbers and other
# sources.
# New protocols will be added on request if they have been officially
# assigned by IANA and are not historical.
# If you need a huge list of used numbers please install the nmap package.

ip  0   IP      # internet protocol, pseudo protocol number
hopopt  0   HOPOPT      # IPv6 Hop-by-Hop Option [RFC1883]
icmp    1   ICMP        # internet control message protocol
igmp    2   IGMP        # Internet Group Management
ggp 3   GGP     # gateway-gateway protocol
ipencap 4   IP-ENCAP    # IP encapsulated in IP (officially ``IP'')
st  5   ST      # ST datagram mode
tcp 6   TCP     # transmission control protocol
egp 8   EGP     # exterior gateway protocol
igp 9   IGP     # any private interior gateway (Cisco)
pup 12  PUP     # PARC universal packet protocol
udp 17  UDP     # user datagram protocol
hmp 20  HMP     # host monitoring protocol
xns-idp 22  XNS-IDP     # Xerox NS IDP
rdp 27  RDP     # "reliable datagram" protocol
iso-tp4 29  ISO-TP4     # ISO Transport Protocol class 4 [RFC905]
dccp    33  DCCP        # Datagram Congestion Control Prot. [RFC4340]
xtp 36  XTP     # Xpress Transfer Protocol
ddp 37  DDP     # Datagram Delivery Protocol
idpr-cmtp 38    IDPR-CMTP   # IDPR Control Message Transport
ipv6    41  IPv6        # Internet Protocol, version 6
ipv6-route 43   IPv6-Route  # Routing Header for IPv6
ipv6-frag 44    IPv6-Frag   # Fragment Header for IPv6
idrp    45  IDRP        # Inter-Domain Routing Protocol
rsvp    46  RSVP        # Reservation Protocol
gre 47  GRE     # General Routing Encapsulation
esp 50  IPSEC-ESP   # Encap Security Payload [RFC2406]
ah  51  IPSEC-AH    # Authentication Header [RFC2402]
skip    57  SKIP        # SKIP
ipv6-icmp 58    IPv6-ICMP   # ICMP for IPv6
ipv6-nonxt 59   IPv6-NoNxt  # No Next Header for IPv6
ipv6-opts 60    IPv6-Opts   # Destination Options for IPv6
rspf    73  RSPF CPHB   # Radio Shortest Path First (officially CPHB)
vmtp    81  VMTP        # Versatile Message Transport
eigrp   88  EIGRP       # Enhanced Interior Routing Protocol (Cisco)
ospf    89  OSPFIGP     # Open Shortest Path First IGP
ax.25   93  AX.25       # AX.25 frames
ipip    94  IPIP        # IP-within-IP Encapsulation Protocol
etherip 97  ETHERIP     # Ethernet-within-IP Encapsulation [RFC3378]
encap   98  ENCAP       # Yet Another IP encapsulation [RFC1241]
#   99          # any private encryption scheme
pim 103 PIM     # Protocol Independent Multicast
ipcomp  108 IPCOMP      # IP Payload Compression Protocol
vrrp    112 VRRP        # Virtual Router Redundancy Protocol [RFC5798]
l2tp    115 L2TP        # Layer Two Tunneling Protocol [RFC2661]
isis    124 ISIS        # IS-IS over IPv4
sctp    132 SCTP        # Stream Control Transmission Protocol
fc  133 FC      # Fibre Channel
mobility-header 135 Mobility-Header # Mobility Support for IPv6 [RFC3775]
udplite 136 UDPLite     # UDP-Lite [RFC3828]
mpls-in-ip 137  MPLS-in-IP  # MPLS-in-IP [RFC4023]
manet   138         # MANET Protocols [RFC5498]
hip 139 HIP     # Host Identity Protocol
shim6   140 Shim6       # Shim6 Protocol [RFC5533]
wesp    141 WESP        # Wrapped Encapsulating Security Payload
rohc    142 ROHC        # Robust Header Compression

这些协议定义明确且标准,我希望 Windows 系统具有非常相似的列表。

这有点匹配那个:https ://en.wikipedia.org/wiki/List_of_IP_protocol_numbers


推荐阅读