working to analyze timing issues
This commit is contained in:
54
analyzer/protocols/base.py
Normal file
54
analyzer/protocols/base.py
Normal file
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
Base protocol dissector interface and common structures
|
||||
"""
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from dataclasses import dataclass
|
||||
from enum import IntEnum
|
||||
from typing import Dict, List, Optional, Any
|
||||
|
||||
try:
|
||||
from scapy.all import Packet
|
||||
except ImportError:
|
||||
print("Error: scapy library required. Install with: pip install scapy")
|
||||
import sys
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
class ProtocolType(IntEnum):
|
||||
"""Protocol type identifiers"""
|
||||
UNKNOWN = 0
|
||||
CHAPTER10 = 1
|
||||
PTP = 2
|
||||
IENA = 3
|
||||
|
||||
|
||||
@dataclass
|
||||
class DissectionResult:
|
||||
"""Container for dissection results"""
|
||||
protocol: ProtocolType
|
||||
fields: Dict[str, Any]
|
||||
payload: Optional[bytes] = None
|
||||
errors: List[str] = None
|
||||
|
||||
def __post_init__(self):
|
||||
if self.errors is None:
|
||||
self.errors = []
|
||||
|
||||
|
||||
class ProtocolDissector(ABC):
|
||||
"""Abstract base class for protocol dissectors"""
|
||||
|
||||
@abstractmethod
|
||||
def can_dissect(self, packet: Packet) -> bool:
|
||||
"""Check if this dissector can handle the given packet"""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def dissect(self, packet: Packet) -> Optional[DissectionResult]:
|
||||
"""Dissect the packet and return structured data"""
|
||||
pass
|
||||
|
||||
def get_protocol_type(self) -> ProtocolType:
|
||||
"""Get the protocol type this dissector handles"""
|
||||
return ProtocolType.UNKNOWN
|
||||
Reference in New Issue
Block a user