feat: add EtherType and IP Protocol enums for enhanced packet parsing and logging
All checks were successful
Build and Deploy MITM Webserver / build (push) Successful in 9s
All checks were successful
Build and Deploy MITM Webserver / build (push) Successful in 9s
This commit is contained in:
315
backend/src/Models/ip_protocol.py
Normal file
315
backend/src/Models/ip_protocol.py
Normal file
@@ -0,0 +1,315 @@
|
||||
from enum import Enum
|
||||
|
||||
"""
|
||||
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) -> IPProtocolEnum:
|
||||
return IP_PROTOCOL_MAP.get(n, IPProtocolEnum.UNKNOWN)
|
||||
|
||||
Reference in New Issue
Block a user