All checks were successful
Build and Deploy MITM Webserver / build (push) Successful in 8s
317 lines
10 KiB
Python
317 lines
10 KiB
Python
from enum import Enum
|
|
from typing import Literal
|
|
|
|
"""
|
|
This module defines an enumeration for IP protocol types and provides a mapping
|
|
from numeric IP protocol values to their corresponding enum representation.
|
|
Source: https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers (01/12/2025)
|
|
"""
|
|
|
|
|
|
class IPProtocolEnum(str, Enum):
|
|
HOPOPT = "IPv6 Hop-by-Hop Option"
|
|
ICMP = "Internet Control Message Protocol"
|
|
IGMP = "Internet Group Management Protocol"
|
|
GGP = "Gateway-to-Gateway Protocol"
|
|
IP_IN_IP = "IP in IP Encapsulation"
|
|
ST = "Internet Stream Protocol"
|
|
TCP = "Transmission Control Protocol"
|
|
CBT = "Core-based Trees"
|
|
EGP = "Exterior Gateway Protocol"
|
|
IGP = "Interior Gateway Protocol"
|
|
BBN_RCC_MON = "BBN RCC Monitoring"
|
|
NVP_II = "Network Voice Protocol"
|
|
PUP = "Xerox PUP"
|
|
ARGUS = "ARGUS"
|
|
EMCON = "EMCON"
|
|
XNET = "Cross Net Debugger"
|
|
CHAOS = "Chaos Protocol"
|
|
UDP = "User Datagram Protocol"
|
|
MUX = "Multiplexing"
|
|
DCN_MEAS = "DCN Measurement Subsystems"
|
|
HMP = "Host Monitoring Protocol"
|
|
PRM = "Packet Radio Measurement"
|
|
XNS_IDP = "XEROX NS IDP"
|
|
TRUNK_1 = "Trunk 1"
|
|
TRUNK_2 = "Trunk 2"
|
|
LEAF_1 = "Leaf 1"
|
|
LEAF_2 = "Leaf 2"
|
|
RDP = "Reliable Data Protocol"
|
|
IRTP = "Internet Reliable Transaction Protocol"
|
|
ISO_TP4 = "ISO Transport Protocol Class 4"
|
|
NETBLT = "Bulk Data Transfer Protocol"
|
|
MFE_NSP = "MFE Network Services Protocol"
|
|
MERIT_INP = "MERIT Internodal Protocol"
|
|
DCCP = "Datagram Congestion Control Protocol"
|
|
THREE_PC = "Third Party Connect Protocol"
|
|
IDPR = "Inter-Domain Policy Routing"
|
|
XTP = "Xpress Transport Protocol"
|
|
DDP = "Datagram Delivery Protocol"
|
|
IDPR_CMTP = "IDPR Control Message Transport Protocol"
|
|
TP_PP = "TP++ Transport Protocol"
|
|
IL = "IL Transport Protocol"
|
|
IPV6 = "IPv6 Encapsulation"
|
|
SDRP = "Source Demand Routing Protocol"
|
|
IPV6_ROUTE = "IPv6 Routing Header"
|
|
IPV6_FRAG = "IPv6 Fragment Header"
|
|
IDRP = "Inter-Domain Routing Protocol"
|
|
RSVP = "Resource Reservation Protocol"
|
|
GRE = "Generic Routing Encapsulation"
|
|
DSR = "Dynamic Source Routing"
|
|
BNA = "Burroughs Network Architecture"
|
|
ESP = "Encapsulating Security Payload"
|
|
AH = "Authentication Header"
|
|
I_NLSP = "Integrated Net Layer Security Protocol"
|
|
SWIPE = "SwIPe"
|
|
NARP = "NBMA Address Resolution Protocol"
|
|
MOBILE = "IP Mobility"
|
|
TLSP = "Transport Layer Security Protocol"
|
|
SKIP = "Simple Key-Management for IP"
|
|
IPV6_ICMP = "ICMP for IPv6"
|
|
IPV6_NONXT = "No Next Header for IPv6"
|
|
IPV6_OPTS = "Destination Options for IPv6"
|
|
PROTO_61 = "Any host internal protocol"
|
|
CFTP = "CFTP"
|
|
PROTO_63 = "Any local network"
|
|
SAT_EXPAK = "SATNET and Backroom EXPAK"
|
|
KRYPTOLAN = "Kryptolan"
|
|
RVD = "MIT Remote Virtual Disk Protocol"
|
|
IPPC = "Internet Pluribus Packet Core"
|
|
PROTO_68 = "Any distributed file system"
|
|
SAT_MON = "SATNET Monitoring"
|
|
VISA = "VISA Protocol"
|
|
IPCU = "Internet Packet Core Utility"
|
|
CPNX = "Computer Protocol Network Executive"
|
|
CPHB = "Computer Protocol Heart Beat"
|
|
WSN = "Wang Span Network"
|
|
PVP = "Packet Video Protocol"
|
|
BR_SAT_MON = "Backroom SATNET Monitoring"
|
|
SUN_ND = "SUN ND Protocol (temporary)"
|
|
WB_MON = "Wideband Monitoring"
|
|
WB_EXPAK = "Wideband EXPAK"
|
|
ISO_IP = "International Organization for Standardization Internet Protocol"
|
|
VMTP = "Versatile Message Transaction Protocol"
|
|
SECURE_VMTP = "Secure VMTP"
|
|
VINES = "VINES"
|
|
TTP = "TTP (Transaction Transport Protocol / IPTM)"
|
|
NSFNET_IGP = "NSFNET-IGP"
|
|
DGP = "Dissimilar Gateway Protocol"
|
|
TCF = "TCF"
|
|
EIGRP = "EIGRP"
|
|
OSPF = "Open Shortest Path First"
|
|
SPRITE_RPC = "Sprite RPC Protocol"
|
|
LARP = "Locus Address Resolution Protocol"
|
|
MTP = "Multicast Transport Protocol"
|
|
AX25 = "AX.25 Packet Radio"
|
|
OS = "KA9Q NOS compatible IP over IP tunneling"
|
|
MICP = "Mobile Internetworking Control Protocol"
|
|
SCC_SP = "Semaphore Communications Security Protocol"
|
|
ETHERIP = "Ethernet-within-IP Encapsulation"
|
|
ENCAP = "Encapsulation Header"
|
|
PROTO_99 = "Any private encryption scheme"
|
|
GMTP = "GMTP"
|
|
IFMP = "Ipsilon Flow Management Protocol"
|
|
PNNI = "PNNI over IP"
|
|
PIM = "Protocol Independent Multicast"
|
|
ARIS = "IBM ARIS"
|
|
SCPS = "Space Communications Protocol Standards"
|
|
QNX = "QNX"
|
|
AN = "Active Networks"
|
|
IPCOMP = "IP Payload Compression Protocol"
|
|
SNP = "Sitara Networks Protocol"
|
|
COMPAQ_PEER = "Compaq Peer Protocol"
|
|
IPX_IN_IP = "IPX in IP"
|
|
VRRP = "Virtual Router Redundancy Protocol"
|
|
PGM = "PGM Reliable Transport Protocol"
|
|
PROTO_114 = "Any 0-hop protocol"
|
|
L2TP = "Layer Two Tunneling Protocol Version 3"
|
|
DDX = "D-II Data Exchange"
|
|
IATP = "Interactive Agent Transfer Protocol"
|
|
STP = "Schedule Transfer Protocol"
|
|
SRP = "SpectraLink Radio Protocol"
|
|
UTI = "Universal Transport Interface Protocol"
|
|
SMP = "Simple Message Protocol"
|
|
SM = "Simple Multicast Protocol"
|
|
PTP = "Performance Transparency Protocol"
|
|
ISIS = "IS-IS over IPv4"
|
|
FIRE = "Flexible Intra-AS Routing Environment"
|
|
CRTP = "Combat Radio Transport Protocol"
|
|
CRUDP = "Combat Radio User Datagram"
|
|
SSCOPMCE = "Service-Specific Connection-Oriented Protocol"
|
|
IPLT = "IPLT"
|
|
SPS = "Secure Packet Shield"
|
|
PIPE = "Private IP Encapsulation within IP"
|
|
SCTP = "Stream Control Transmission Protocol"
|
|
FC = "Fibre Channel"
|
|
RSVP_E2E_IGNORE = "RSVP End-to-End Ignore"
|
|
MOBILITY_HEADER = "Mobility Extension Header for IPv6"
|
|
UDPLITE = "UDPLite"
|
|
MPLS_IN_IP = "MPLS-in-IP"
|
|
MANET = "MANET Protocols"
|
|
HIP = "Host Identity Protocol"
|
|
SHIM6 = "Shim6"
|
|
WESP = "Wrapped Encapsulating Security Payload"
|
|
ROHC = "Robust Header Compression"
|
|
SRV6 = "Segment Routing over IPv6"
|
|
AGGFRAG = "AGGFRAG Encapsulation Payload for ESP"
|
|
NSH = "Network Service Header"
|
|
HOMA = "Homa transport protocol"
|
|
BIT_EMU = "Bit-stream Emulation"
|
|
EXPERIMENTAL_253 = "Use for experimentation (RFC 3692)"
|
|
EXPERIMENTAL_254 = "Use for experimentation (RFC 3692)"
|
|
RESERVED = "Reserved"
|
|
UNKNOWN = "Unknown"
|
|
|
|
IP_PROTOCOL_MAP = {
|
|
0: IPProtocolEnum.HOPOPT,
|
|
1: IPProtocolEnum.ICMP,
|
|
2: IPProtocolEnum.IGMP,
|
|
3: IPProtocolEnum.GGP,
|
|
4: IPProtocolEnum.IP_IN_IP,
|
|
5: IPProtocolEnum.ST,
|
|
6: IPProtocolEnum.TCP,
|
|
7: IPProtocolEnum.CBT,
|
|
8: IPProtocolEnum.EGP,
|
|
9: IPProtocolEnum.IGP,
|
|
10: IPProtocolEnum.BBN_RCC_MON,
|
|
11: IPProtocolEnum.NVP_II,
|
|
12: IPProtocolEnum.PUP,
|
|
13: IPProtocolEnum.ARGUS,
|
|
14: IPProtocolEnum.EMCON,
|
|
15: IPProtocolEnum.XNET,
|
|
16: IPProtocolEnum.CHAOS,
|
|
17: IPProtocolEnum.UDP,
|
|
18: IPProtocolEnum.MUX,
|
|
19: IPProtocolEnum.DCN_MEAS,
|
|
20: IPProtocolEnum.HMP,
|
|
21: IPProtocolEnum.PRM,
|
|
22: IPProtocolEnum.XNS_IDP,
|
|
23: IPProtocolEnum.TRUNK_1,
|
|
24: IPProtocolEnum.TRUNK_2,
|
|
25: IPProtocolEnum.LEAF_1,
|
|
26: IPProtocolEnum.LEAF_2,
|
|
27: IPProtocolEnum.RDP,
|
|
28: IPProtocolEnum.IRTP,
|
|
29: IPProtocolEnum.ISO_TP4,
|
|
30: IPProtocolEnum.NETBLT,
|
|
31: IPProtocolEnum.MFE_NSP,
|
|
32: IPProtocolEnum.MERIT_INP,
|
|
33: IPProtocolEnum.DCCP,
|
|
34: IPProtocolEnum.THREE_PC,
|
|
35: IPProtocolEnum.IDPR,
|
|
36: IPProtocolEnum.XTP,
|
|
37: IPProtocolEnum.DDP,
|
|
38: IPProtocolEnum.IDPR_CMTP,
|
|
39: IPProtocolEnum.TP_PP,
|
|
40: IPProtocolEnum.IL,
|
|
41: IPProtocolEnum.IPV6,
|
|
42: IPProtocolEnum.SDRP,
|
|
43: IPProtocolEnum.IPV6_ROUTE,
|
|
44: IPProtocolEnum.IPV6_FRAG,
|
|
45: IPProtocolEnum.IDRP,
|
|
46: IPProtocolEnum.RSVP,
|
|
47: IPProtocolEnum.GRE,
|
|
48: IPProtocolEnum.DSR,
|
|
49: IPProtocolEnum.BNA,
|
|
50: IPProtocolEnum.ESP,
|
|
51: IPProtocolEnum.AH,
|
|
52: IPProtocolEnum.I_NLSP,
|
|
53: IPProtocolEnum.SWIPE,
|
|
54: IPProtocolEnum.NARP,
|
|
55: IPProtocolEnum.MOBILE,
|
|
56: IPProtocolEnum.TLSP,
|
|
57: IPProtocolEnum.SKIP,
|
|
58: IPProtocolEnum.IPV6_ICMP,
|
|
59: IPProtocolEnum.IPV6_NONXT,
|
|
60: IPProtocolEnum.IPV6_OPTS,
|
|
62: IPProtocolEnum.CFTP,
|
|
64: IPProtocolEnum.SAT_EXPAK,
|
|
65: IPProtocolEnum.KRYPTOLAN,
|
|
66: IPProtocolEnum.RVD,
|
|
67: IPProtocolEnum.IPPC,
|
|
69: IPProtocolEnum.SAT_MON,
|
|
70: IPProtocolEnum.VISA,
|
|
71: IPProtocolEnum.IPCU,
|
|
72: IPProtocolEnum.CPNX,
|
|
73: IPProtocolEnum.CPHB,
|
|
74: IPProtocolEnum.WSN,
|
|
75: IPProtocolEnum.PVP,
|
|
76: IPProtocolEnum.BR_SAT_MON,
|
|
77: IPProtocolEnum.SUN_ND,
|
|
78: IPProtocolEnum.WB_MON,
|
|
79: IPProtocolEnum.WB_EXPAK,
|
|
80: IPProtocolEnum.ISO_IP,
|
|
81: IPProtocolEnum.VMTP,
|
|
82: IPProtocolEnum.SECURE_VMTP,
|
|
83: IPProtocolEnum.VINES,
|
|
84: IPProtocolEnum.TTP,
|
|
85: IPProtocolEnum.NSFNET_IGP,
|
|
86: IPProtocolEnum.DGP,
|
|
87: IPProtocolEnum.TCF,
|
|
88: IPProtocolEnum.EIGRP,
|
|
89: IPProtocolEnum.OSPF,
|
|
90: IPProtocolEnum.SPRITE_RPC,
|
|
91: IPProtocolEnum.LARP,
|
|
92: IPProtocolEnum.MTP,
|
|
93: IPProtocolEnum.AX25,
|
|
94: IPProtocolEnum.OS,
|
|
95: IPProtocolEnum.MICP,
|
|
96: IPProtocolEnum.SCC_SP,
|
|
97: IPProtocolEnum.ETHERIP,
|
|
98: IPProtocolEnum.ENCAP,
|
|
100: IPProtocolEnum.GMTP,
|
|
101: IPProtocolEnum.IFMP,
|
|
102: IPProtocolEnum.PNNI,
|
|
103: IPProtocolEnum.PIM,
|
|
104: IPProtocolEnum.ARIS,
|
|
105: IPProtocolEnum.SCPS,
|
|
106: IPProtocolEnum.QNX,
|
|
107: IPProtocolEnum.AN,
|
|
108: IPProtocolEnum.IPCOMP,
|
|
109: IPProtocolEnum.SNP,
|
|
110: IPProtocolEnum.COMPAQ_PEER,
|
|
111: IPProtocolEnum.IPX_IN_IP,
|
|
112: IPProtocolEnum.VRRP,
|
|
113: IPProtocolEnum.PGM,
|
|
115: IPProtocolEnum.L2TP,
|
|
116: IPProtocolEnum.DDX,
|
|
117: IPProtocolEnum.IATP,
|
|
118: IPProtocolEnum.STP,
|
|
119: IPProtocolEnum.SRP,
|
|
120: IPProtocolEnum.UTI,
|
|
121: IPProtocolEnum.SMP,
|
|
122: IPProtocolEnum.SM,
|
|
123: IPProtocolEnum.PTP,
|
|
124: IPProtocolEnum.ISIS,
|
|
125: IPProtocolEnum.FIRE,
|
|
126: IPProtocolEnum.CRTP,
|
|
127: IPProtocolEnum.CRUDP,
|
|
128: IPProtocolEnum.SSCOPMCE,
|
|
129: IPProtocolEnum.IPLT,
|
|
130: IPProtocolEnum.SPS,
|
|
131: IPProtocolEnum.PIPE,
|
|
132: IPProtocolEnum.SCTP,
|
|
133: IPProtocolEnum.FC,
|
|
134: IPProtocolEnum.RSVP_E2E_IGNORE,
|
|
135: IPProtocolEnum.MOBILITY_HEADER,
|
|
136: IPProtocolEnum.UDPLITE,
|
|
137: IPProtocolEnum.MPLS_IN_IP,
|
|
138: IPProtocolEnum.MANET,
|
|
139: IPProtocolEnum.HIP,
|
|
140: IPProtocolEnum.SHIM6,
|
|
141: IPProtocolEnum.WESP,
|
|
142: IPProtocolEnum.ROHC,
|
|
143: IPProtocolEnum.SRV6,
|
|
144: IPProtocolEnum.AGGFRAG,
|
|
145: IPProtocolEnum.NSH,
|
|
146: IPProtocolEnum.HOMA,
|
|
147: IPProtocolEnum.BIT_EMU,
|
|
253: IPProtocolEnum.EXPERIMENTAL_253,
|
|
254: IPProtocolEnum.EXPERIMENTAL_254,
|
|
255: IPProtocolEnum.RESERVED,
|
|
}
|
|
|
|
def protocol_from_number(n: int) -> str:
|
|
return IP_PROTOCOL_MAP.get(n, IPProtocolEnum.UNKNOWN).name
|
|
|