Files
StreamLens/README.md

6.3 KiB
Raw Blame History

StreamLens - Ethernet Traffic Analyzer

Advanced TUI-based network traffic analyzer for pcap files and live streams with specialized protocol dissection for aviation and industrial networks. Features sigma-based outlier identification and real-time statistical analysis.

Quick Start

# Install dependencies
pip install scapy numpy

# Analyze pcap file with TUI (flows sorted by largest sigma outliers)
python ethernet_analyzer_modular.py --pcap file.pcap

# Live capture with real-time statistics
python ethernet_analyzer_modular.py --live --interface eth0

# Console output with outlier reporting  
python ethernet_analyzer_modular.py --pcap file.pcap --no-tui

# Generate comprehensive outlier report
python ethernet_analyzer_modular.py --pcap file.pcap --report

# Get pcap file information
python ethernet_analyzer_modular.py --pcap file.pcap --info

# Adjust outlier threshold (default: 3.0 sigma)
python ethernet_analyzer_modular.py --pcap file.pcap --outlier-threshold 2.0

# With BPF filter for live capture
python ethernet_analyzer_modular.py --live --filter "port 319 or port 320"

Features

Enhanced TUI Interface

  • Three-Panel Layout: Flows list (top-left), flow details (top-right), timing visualization (bottom)
  • 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
  • Protocol-aware Display: Shows detected protocols in flow list and details
  • Smart Protocol Detection: Prioritizes specialized protocols (Chapter 10, PTP, IENA) over generic ones
  • Detailed Outlier Analysis: Individual rows showing frame numbers and exact time deltas for outlier packets
  • 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

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

# Clone or download the project
cd streamlens

# Install dependencies
pip install scapy numpy

# Run the analyzer
python ethernet_analyzer_modular.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.

TUI Controls

  • ↑↓: Navigate between flows in main view
  • 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/
├── ethernet_analyzer_modular.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
│   ├── tui/                        # Text User Interface
│   │   ├── interface.py           # Main TUI controller
│   │   ├── navigation.py          # Navigation handling
│   │   └── panels/                # UI 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
└── *.pcapng                        # Sample capture files