# StreamLens - Ethernet Traffic Analyzer Advanced network traffic analyzer for pcap files and live streams with specialized protocol dissection for aviation and industrial networks. Features sigma-based outlier identification, real-time statistical analysis, and both TUI and modern GUI interfaces with interactive signal visualization. ## Quick Start ```bash # Install dependencies pip install scapy numpy matplotlib # For GUI mode (optional but recommended): pip install PySide6 # For macOS users - install tkinter support for TUI visualization: brew install python-tk@3.13 # Launch modern GUI with interactive plots python streamlens.py --gui --pcap file.pcap # GUI mode only (then open file via File menu) python streamlens.py --gui # Analyze pcap file with modern TUI (Flow Analysis, Packet Decoder, Statistical Analysis views) python streamlens.py --pcap file.pcap # Use classic TUI interface instead of modern (preserves original layout) python streamlens.py --pcap file.pcap --classic # Live capture with real-time statistics python streamlens.py --live --interface eth0 # Console output with outlier reporting python streamlens.py --pcap file.pcap --no-tui # Generate comprehensive outlier report python streamlens.py --pcap file.pcap --report # Get pcap file information python streamlens.py --pcap file.pcap --info # Adjust outlier threshold (default: 3.0 sigma) python streamlens.py --pcap file.pcap --outlier-threshold 2.0 # With BPF filter for live capture python streamlens.py --live --filter "port 319 or port 320" ``` ## Features ### ๐Ÿ–ฅ๏ธ Modern Dark-Themed GUI Interface with Optimized Layout - **Professional Dark Theme**: Modern color palette with #1e1e1e backgrounds and optimized contrast - **Content-Fitted Columns**: Headers automatically resize to fit content, not wider than necessary - **Full-Width Utilization**: Grid view uses entire screen width with prioritized wide signal plots - **Optimized Row Height**: 25% taller rows (30px) for better visual balance and plot visibility - **Wide Embedded Plots**: 8x2.5 figure size with minimal horizontal margins for maximum signal detail - **Intelligent Column Sizing**: Auto-resizes to content with smart minimums and plot column priority - **Professional Qt Interface**: Cross-platform GUI built with PySide6 with native look and feel - **Embedded Signal Plots**: Chapter 10 signal plots rendered directly in the flow table cells - **Synchronous Plot Rendering**: Plots appear immediately when table loads, no background threads - **Chapter 10 Flow Highlighting**: Flows with Chapter 10 data are highlighted in modern blue and bold - **Smart Signal Caching**: Avoids repeated processing of the same flow's signal data - **Flow Detail Panel**: Dockable bottom panel with dark theme styling - **Background PCAP Loading**: Progress bar with non-blocking file processing - **Outlier Threshold Control**: Real-time adjustment of sigma-based outlier detection - **Threading Safety**: Main-thread plot creation eliminates Qt threading violations - **No Floating Windows**: All plots stay embedded in the grid interface ### ๐Ÿ–ฅ๏ธ Modern TUI Interface (Default) with Three Focused Views - **1: Flow Analysis View**: Enhanced multi-column flow overview with protocol hierarchy - **Source | Proto | Destination | Extended | Frame Type | Metrics** layout - Transport protocols (TCP, UDP, ICMP, IGMP) clearly separated from extended protocols - Extended protocol column for specialized protocols (CH10, PTP, IENA, NTP) - Frame type column showing most common frame type per flow (CH10-Data, TMATS, PTP Sync) - Left-aligned text columns with IP:port format for precise endpoint identification - Performance rankings by packet count, outliers, and enhanced decoder availability - **2: Packet Decoder View**: Deep protocol inspection and field extraction - Three-panel layout: Enhanced Flows | Frame Analysis | Field Inspector - Real-time decoded field display with tree-view navigation - Tab-based interface switching with comprehensive field value inspection - **3: Statistical Analysis View**: Timing analysis, outliers, and quality metrics - Four analysis modes: Overview, Outlier Analysis, Quality Metrics, Timing Analysis - Performance ranking with health metrics and network consistency indicators - Detailed outlier breakdown with sigma deviation calculations - **Modern Navigation**: 1/2/3 view switching with context-sensitive help and status bars - **Enhanced Protocol Support**: Specialized views for Chapter 10, PTP, IENA with quality indicators - **Cross-View Communication**: Selected flows persist across view switches for comprehensive analysis ### ๐Ÿ“Š Classic TUI Interface (--classic flag) with Professional Table Layout - **Optimized Three-Panel Layout**: Flows list (70% width), flow details (30% width), optional timeline (bottom) - **Professional Table Formatting**: Right-aligned numeric columns (#Frames, Bytes, ฮ”T Avg) with proper spacing - **Comprehensive Flow Display**: Shows Src:Port, Dst:Port, Transport Protocol, Traffic Classification, and Encoding - **Transport Layer Analysis**: Displays TCP, UDP, ICMP, IGMP protocols with port information - **Traffic Classification**: Identifies Unicast, Multicast, and Broadcast traffic patterns - **Hierarchical Frame Types**: Expandable tree view showing packet type breakdowns with aligned sub-rows - **Magnitude Indicators**: Consistent byte formatting (1.2M, 428K, 1234B) with right alignment - **Sigma-Based Flow Sorting**: Flows automatically sorted by largest outlier sigma deviation - **Real-time Navigation**: Arrow keys to navigate between flows with instant detail updates - **Smart Protocol Detection**: Prioritizes specialized protocols (Chapter 10, PTP, IENA) over generic ones - **Visual Timeline**: ASCII timeline showing frame timing deviations with outlier highlighting - **Live Statistics**: Real-time running averages and outlier detection during capture ### Core Analysis Engine - **Flow-based Analysis**: Groups packets by source-destination IP pairs with timing statistics - **Configurable Outlier Detection**: Adjustable sigma threshold (default: 3.0ฯƒ) - **Multi-layer Protocol Analysis**: Ethernet, IP, UDP, TCP with specialized dissectors - **Real-time Statistical Updates**: Running statistics for live capture mode - **High Jitter Flow Identification**: Coefficient of variation analysis ### Specialized Protocol Dissectors - **Chapter 10 (IRIG 106-17)**: Complete packet dissection including data types, timestamps, and payload analysis - **PTP (IEEE 1588-2019)**: Precision Time Protocol message parsing with sync, delay, and announce messages - **IENA (Airbus)**: Industrial Ethernet Network Architecture with P/D/N/M/Q message types ### ๐Ÿ“Š Chapter 10 Signal Visualization with Dark Theme Integration - **Wide Embedded GUI Plots**: Chapter 10 flows display matplotlib plots directly in flow table with 8x2.5 sizing - **Dark Theme Plot Integration**: Plots use #1e1e1e backgrounds with white text and modern #0078d4 signal colors - **Optimized Plot Margins**: Minimal horizontal margins (8% left, 98% right) for maximum signal visualization area - **TUI Signal Plots**: Press `v` in the TUI to generate signal files (threading-safe) - **Signal Consolidation**: Automatically combines multiple packets from the same channel into continuous signals - **TMATS Integration**: Automatically extracts channel metadata from TMATS frames for proper signal scaling - **Multi-channel Support**: Displays multiple channels with proper engineering units and scaling - **Threading Safety**: GUI uses main-thread plot creation, TUI saves plots to files to avoid segfaults - **No Floating Windows**: All GUI plots stay embedded in the table interface - **Both Modes**: Works for both PCAP analysis and live capture - **Enhanced Visual Quality**: 150px plot height with professional styling and grid overlays ### Protocol Detection & Fallbacks - Automatic protocol identification based on port numbers and packet structure - Fallback to common protocols: HTTP, HTTPS, SSH, DNS, DHCP, NTP, SNMP, IGMP, ICMP - Multicast detection for aviation/industrial networks - Enhanced error handling and validation ## Installation ```bash # Clone or download the project cd streamlens # Install dependencies pip install scapy numpy matplotlib PySide6 # Run the analyzer python streamlens.py --help ``` ## Key Features Highlights ### ๐ŸŽฏ Sigma-Based Flow Prioritization Flows are automatically sorted by their largest outlier sigma deviation, putting the most problematic flows at the top of the list for immediate attention. ### ๐Ÿ“Š Real-time Statistics Live capture mode provides running averages and outlier detection as packets arrive, with TUI updates every 500ms. ### ๐Ÿ” Configurable Analysis Adjust outlier detection sensitivity with `--outlier-threshold` (default: 3.0ฯƒ) to fine-tune analysis for your specific network conditions. ### ๐Ÿ“ˆ Comprehensive Reporting Generate detailed outlier reports with `--report` flag showing frame-by-frame sigma deviations and timing analysis. ## GUI Usage ### Main Interface - **Menu Bar**: File operations (Open PCAP, Monitor NIC), View controls, Help system - **Toolbar**: File operations and outlier threshold adjustment - **Central Flow Table**: Full-width table with file info, flow data, and integrated signal plots - **Flow Detail Panel**: Dockable bottom panel showing comprehensive flow information - **Status Bar**: Loading progress and operation feedback ### Workflow #### GUI Mode (Recommended) 1. **Launch GUI with PCAP**: `python streamlens.py --gui --pcap file.pcap` 2. **Immediate Analysis**: Flow table displays instantly with all flow data and wide embedded plots 3. **Optimized Display**: Content-fitted columns, 25% taller rows, and full-width utilization 4. **Wide Plot Visualization**: Chapter 10 flows show detailed signal plots with minimal margins 5. **Browse Flows**: View flows in the dark-themed table (Chapter 10 flows highlighted in modern blue) 6. **Analyze Details**: Select flows to view detailed information in the dark-themed bottom panel 7. **Adjust Threshold**: Use toolbar spinner to change outlier detection sensitivity #### Modern TUI Mode (Default) 1. **Launch Modern TUI**: `python streamlens.py --pcap file.pcap` 2. **Flow Analysis View (1)**: Visual flow overview with protocol detection and performance ranking 3. **Packet Decoder View (2)**: Deep packet inspection with three-panel layout for field analysis 4. **Statistical Analysis View (3)**: Comprehensive timing analysis and outlier detection 5. **View Navigation**: Use 1/2/3 to switch between analysis perspectives 6. **Context-Sensitive Help**: Press H for detailed help overlay with all controls 7. **Enhanced Protocol Analysis**: Specialized displays for Chapter 10, PTP, IENA protocols #### Classic TUI Mode (--classic flag) 1. **Launch Classic TUI**: `python streamlens.py --pcap file.pcap --classic` 2. **Professional Table View**: Right-aligned numeric columns with transport protocol and classification 3. **Navigate Flows**: Use โ†‘โ†“ to browse flows sorted by sigma deviation 4. **Expand Details**: Use โ†’ to show frame type breakdowns with hierarchical display 5. **Signal Visualization**: Press 'v' on Chapter 10 flows to generate signal plot files 6. **Timeline Analysis**: Press 't' to toggle timing visualization panel 7. **Live Monitoring**: Real-time statistics updates during network capture ## TUI Controls ### Modern TUI Controls (Default) - **1**: Switch to Flow Analysis View (enhanced multi-column layout) - **2**: Switch to Packet Decoder View (three-panel inspection) - **3**: Switch to Statistical Analysis View (timing and quality analysis) - **H**: Toggle comprehensive help overlay - **โ†‘โ†“**: Navigate items in current view - **Enter**: Select flow/packet for detailed analysis - **Tab**: Switch panels (when available) - **V**: Visualize signals (Flow Analysis) - **D**: Deep decode selected flow - **E**: Export decoded data - **R**: Refresh statistics - **O**: Show outlier details - **Q**: Quit application ### Classic TUI Controls (--classic flag) - **โ†‘โ†“**: Navigate between flows and frame types in main view - **โ†’**: Expand flow to show frame type breakdowns - **โ†**: Collapse flow details - **v**: Visualize Chapter 10 signals for selected flow (saves plot files) - **t**: Toggle timeline panel on/off - **d**: Switch to frame dissection view - **m** or **ESC**: Return to main view - **q**: Quit application ## Timeline Visualization The bottom panel displays a visual timeline of the selected flow's timing behavior: - **Horizontal axis**: Progression through packet sequence - **Vertical axis**: Deviation from average inter-arrival time (centered on average) - **Characters**: `ยท` = normal timing, `โ€ข`/`โ—‹` = moderate deviation, `โ–ˆ`/`โ–„` = outliers - **Scale**: Automatically adjusts to show full range of deviations - **Info bar**: Shows total frames, deviation range, and outlier count ## Project Structure ``` streamlens/ โ”œโ”€โ”€ streamlens.py # Main entry point โ”œโ”€โ”€ analyzer/ # Core analysis package โ”‚ โ”œโ”€โ”€ main.py # CLI argument handling and main logic โ”‚ โ”œโ”€โ”€ analysis/ # Analysis engine โ”‚ โ”‚ โ”œโ”€โ”€ core.py # Main analyzer class โ”‚ โ”‚ โ”œโ”€โ”€ flow_manager.py # Flow tracking and management โ”‚ โ”‚ โ””โ”€โ”€ statistics.py # Statistical analysis and outlier detection โ”‚ โ”œโ”€โ”€ models/ # Data structures โ”‚ โ”‚ โ”œโ”€โ”€ flow_stats.py # Flow and frame type statistics โ”‚ โ”‚ โ””โ”€โ”€ analysis_results.py # Analysis result containers โ”‚ โ”œโ”€โ”€ protocols/ # Protocol dissectors โ”‚ โ”‚ โ”œโ”€โ”€ base.py # Base dissector interface โ”‚ โ”‚ โ”œโ”€โ”€ chapter10.py # IRIG106 telemetry protocol โ”‚ โ”‚ โ”œโ”€โ”€ ptp.py # IEEE 1588 Precision Time Protocol โ”‚ โ”‚ โ”œโ”€โ”€ iena.py # Airbus IENA protocol โ”‚ โ”‚ โ””โ”€โ”€ standard.py # Standard protocol detection โ”‚ โ”œโ”€โ”€ gui/ # Modern GUI Interface with Docking Panels โ”‚ โ”‚ โ”œโ”€โ”€ __init__.py # GUI package initialization โ”‚ โ”‚ โ”œโ”€โ”€ main_window.py # PySide6 main window with docking system โ”‚ โ”‚ โ””โ”€โ”€ dock_panels.py # Dockable panel implementations (flow list, plots, details) โ”‚ โ”œโ”€โ”€ tui/ # Text User Interface โ”‚ โ”‚ โ”œโ”€โ”€ interface.py # Classic TUI controller โ”‚ โ”‚ โ”œโ”€โ”€ modern_interface.py # Modern TUI with three-view interface โ”‚ โ”‚ โ”œโ”€โ”€ navigation.py # Navigation handling โ”‚ โ”‚ โ”œโ”€โ”€ modern_views/ # Modern TUI view controllers โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ flow_analysis.py # Flow Analysis View (F1) โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ packet_decoder.py # Packet Decoder View (F2) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ statistical_analysis.py # Statistical Analysis View (F3) โ”‚ โ”‚ โ””โ”€โ”€ panels/ # Classic TUI panel components โ”‚ โ”‚ โ”œโ”€โ”€ flow_list.py # Flow list panel โ”‚ โ”‚ โ”œโ”€โ”€ detail_panel.py # Flow details panel โ”‚ โ”‚ โ””โ”€โ”€ timeline.py # Timeline visualization panel โ”‚ โ””โ”€โ”€ utils/ # Utility modules โ”‚ โ”œโ”€โ”€ pcap_loader.py # PCAP file handling โ”‚ โ”œโ”€โ”€ live_capture.py # Live network capture โ”‚ โ””โ”€โ”€ signal_visualizer.py # Chapter 10 signal visualization (thread-safe) โ””โ”€โ”€ *.pcapng # Sample capture files ```