Skip to main content

Oscura

Python framework for hardware reverse engineering: signal analysis, protocol decoding, and automated dissector generation.

Unified workflows from oscilloscope captures to Wireshark dissectors. IEEE-compliant measurements, native protocol decoders, differential analysis, and CRC recovery—all in Python without tool juggling.

CI Code Quality codecov PyPI version Python 3.12+ License: MIT


What Oscura Provides

Unified Python framework for hardware reverse engineering workflows:

  • File Format Loading - Oscilloscopes (Tektronix, Rigol), logic analyzers (Sigrok, VCD), network captures (PCAP), automotive (BLF), scientific instruments (HDF5, TDMS, Touchstone)
  • Protocol Decoding - Serial (UART, SPI, I2C), automotive (CAN, LIN, FlexRay), debug (JTAG, SWD), industrial (Modbus, BACnet, EtherCAT, OPC UA, PROFINET), audio (I2S), wireless (BLE)
  • Signal Analysis - Waveform measurements (IEEE 181), spectral analysis (IEEE 1241), jitter analysis (IEEE 2414), power analysis (IEEE 1459), eye diagrams, signal integrity
  • Protocol Inference - CRC recovery, state machine extraction, field detection, format identification, magic byte discovery
  • Export Automation - Wireshark dissectors, Scapy layers, DBC files, Kaitai Struct, 010 Editor templates, HTML/JSON reports

Installation

pip install oscura

For development setup or detailed installation options, see Installation Guide.

Requirements: Python 3.12+ | Dependencies: numpy, scipy, matplotlib, scikit-learn, cantools (all peer-reviewed, industry-standard libraries)


Usage Approaches

Oscura provides 5 usage patterns. → Choose your approach

Quick summary:

  • Comprehensive Script - Immediate analysis (showcase)
  • Convenience API - Python applications (examples)
  • Expert API - Full control (API docs)
  • YAML Pipeline - Config-driven (guide)
  • CLI - Command-line (reference)

Example: Unknown Protocol Reverse Engineering

from oscura.sessions import BlackBoxSession

# Differential analysis to identify protocol structure
session = BlackBoxSession(name="Unknown Device")
session.add_recording("idle", "idle.bin")
session.add_recording("active", "active.bin")
diff = session.compare("idle", "active")

# Generate Wireshark dissector from inferred structure
session.export_results("dissector", "protocol.lua")

Capabilities Reference

File Format Support

Unified loader with automatic format detection via oscura.load(path):

  • Oscilloscopes: Tektronix WFM/TSS, Rigol WFM
  • Logic Analyzers: VCD, Sigrok .sr
  • Network: PCAP/PCAPNG
  • Scientific: HDF5, TDMS, Touchstone S-parameters
  • Generic: WAV, CSV, NumPy, binary dumps
  • Side-Channel: ChipWhisperer traces

Waveform Measurements (IEEE 181-2011)

Timing, amplitude, and quality measurements with sub-sample interpolation:

  • Timing: rise/fall time, period, frequency, pulse width, duty cycle, phase, delay, slew rate
  • Amplitude: peak-to-peak, RMS, mean, overshoot, undershoot, top, base
  • Advanced: area, burst width, extinction ratio, quality factor

Spectral Analysis (IEEE 1241-2010)

FFT, PSD, quality metrics:

  • Frequency Domain: FFT, PSD (Welch method), spectrogram, coherence
  • Quality Metrics: THD, SNR, SINAD, SFDR, ENOB
  • Advanced: Cepstrum, bispectrum, cross-spectrum, transfer function

Digital Signal Analysis

  • Conversion: Threshold detection with hysteresis, edge detection, clock extraction
  • Timing: Clock/baud rate detection, pulse width measurement, frame sync
  • Logic Levels: TTL, CMOS, LVCMOS, LVDS, ECL detection
  • Quality: Glitch detection, timing violations, signal quality metrics

Eye Diagram Analysis

Eye diagram generation and measurements: height, width, area, crossing percentage, Q-factor, BER estimation, mask testing.

Jitter Analysis (IEEE 2414-2020)

RJ/DJ decomposition using dual-Dirac model:

  • Components: Random jitter (RJ), deterministic jitter (DJ), periodic jitter (PJ), data-dependent jitter (DDJ)
  • Measurements: TIE, period jitter, cycle-to-cycle jitter
  • Visualization: Bathtub curves for BER extrapolation

Power Analysis (IEEE 1459-2010)

  • Basic: Instantaneous, average, peak, RMS power, energy
  • AC Power: Active, reactive, apparent power, power factor
  • Harmonics: THD, harmonic content, crest factor
  • Quality: Ripple, sag/swell detection, flicker, unbalance

Statistical Analysis

  • Descriptive: Mean, median, std dev, quartiles, percentiles
  • Distribution: Histograms, skewness, kurtosis, normality tests
  • Outliers: Z-score, IQR, MAD, isolation forest, DBSCAN
  • Correlation: Auto/cross-correlation, Pearson, Spearman
  • Time Series: Periodicity detection, trend analysis, change points

Pattern Recognition

  • Period Detection: FFT-based, autocorrelation, multi-method
  • Sequences: Repeating patterns, n-grams, Lempel-Ziv complexity
  • Entropy: Shannon entropy, byte frequency, encrypted/compressed region detection
  • Structure: Magic bytes, headers, delimiters, sync patterns, alignment

Protocol Decoders

Native state machine implementations:

  • Serial: UART, SPI, I2C, 1-Wire
  • Automotive: CAN, CAN-FD, LIN, FlexRay
  • Debug: JTAG (IEEE 1149.1), SWD (ARM CoreSight)
  • Industrial: Modbus, BACnet, EtherCAT, OPC UA, PROFINET, HDLC
  • Audio: I2S
  • Wireless: BLE advertising packets
  • Parallel: Centronics, GPIB (IEEE 488.2)

Protocol Inference

  • CRC Recovery: Brute-force parameter search, algorithm detection
  • Field Detection: Statistical boundary inference, type classification
  • Format Analysis: Magic bytes, framing, escaping detection
  • Protocol Detection: Multi-heuristic with confidence scoring
  • State Machines: RPNI algorithm for state extraction
  • Dissector Generation: Wireshark (Lua), Scapy (Python), Kaitai Struct, 010 Editor

Automotive Analysis

  • CAN: Frame decoding, ID identification, statistical analysis, differential analysis
  • DBC Generation: Signal inference, automatic naming, scaling detection
  • Diagnostics: OBD-II, UDS, J1939, DTC lookup
  • Security: Replay detection, fuzzing, anomaly detection

Signal Integrity

TDR analysis, S-parameters (Touchstone), insertion/return loss, VSWR, impedance calculation, crosstalk detection.

Machine Learning

  • Classification: Signal type, protocol identification, modulation detection (Random Forest/SVM)
  • Feature Extraction: Timing, spectral, statistical features
  • Clustering: K-means, DBSCAN, hierarchical
  • Anomaly Detection: Isolation Forest, One-Class SVM

Visualization

Waveforms, FFT/PSD spectra, spectrograms, histograms, logic analyzer views, eye diagrams, bathtub curves, constellation diagrams, Smith charts, Bode/Nyquist plots, protocol timelines.

Export Formats

JSON, CSV, HTML reports, Wireshark dissectors (Lua), Scapy dissectors (Python), Kaitai Struct (YAML), DBC (CAN database), 010 Editor templates, WAV, VCD, NumPy, HDF5, MATLAB.


When to Use Oscura

Best suited for:

  • End-to-end Python workflows (capture → analysis → documentation)
  • Unknown protocol reverse engineering with differential analysis
  • DBC generation from CAN captures (open-source CANalyzer alternative)
  • Automatic Wireshark dissector generation from inferred protocols
  • Unified API across 14 oscilloscope/logic analyzer formats
  • Reproducible research with hypothesis tracking
  • Scripted multi-tool RE pipelines

Oscura's strength: Workflow automation combining multiple RE steps with hypothesis-driven analysis.


Standards Compliance

Oscura implements measurements per IEEE specifications.

Standard Coverage Implementation
IEEE 181-2011 Pulse timing, rise/fall, overshoot, duty cycle Native algorithms
IEEE 1241-2010 SNR, SINAD, THD, SFDR, ENOB Native + scipy.signal
IEEE 1459-2010 Active/reactive power, harmonics, power factor Native + scipy.signal
IEEE 2414-2020 TIE, RJ/DJ decomposition, bathtub curves Native + scipy.stats

Validation: 475 test files with 80%+ code coverage, property-based testing via Hypothesis.


Quality Metrics

Testing: 475 test files, 80%+ coverage with branch coverage, property-based testing (Hypothesis), nightly stress tests

CI/CD: Pre-commit hooks (format, lint, type check), merge queue validation, security scanning (Bandit, Safety)

Type Safety: MyPy strict mode, comprehensive type hints

Documentation: Google-style docstrings, 95% documentation coverage

View metrics: CI Dashboard | Coverage


Demonstrations

Comprehensive working demonstrations covering all framework capabilities. See demos/README.md for complete catalog.

Categories: Waveform Analysis, File I/O, Custom DAQ, Serial Protocols, Protocol Decoding, UDP Analysis, Protocol Inference, Automotive, Timing, Mixed Signal, Spectral, Jitter, Power, Signal Integrity, EMC, Signal RE, Advanced Inference, Complete Workflows

Learning Paths:

  • Beginner (2-4 hours): File loading, basic measurements, export
  • Intermediate (6-10 hours): Protocol decoding (UART, SPI, I2C, PCAP)
  • Advanced (12-20 hours): CRC recovery, state machines, Wireshark dissectors
  • Expert (20-40 hours): Complete RE workflows with ML inference
./scripts/setup.sh
python demos/00_getting_started/00_hello_world.py

Documentation

User Guides:

API Reference: docs/api/ - Complete function reference

Development: Architecture | Testing | CHANGELOG


Contributing

git clone https://github.com/oscura-re/oscura.git
cd oscura
./scripts/setup.sh                    # Setup with hooks
./scripts/check.sh                    # Quality checks
./scripts/test.sh                     # Test suite
python3 .claude/hooks/validate_all.py # Must pass 5/5

Needed Contributions:

  • Workflow automation (new pipelines, export formats, integrations)
  • File format loaders (oscilloscope/LA formats not yet supported)
  • Inference algorithms (better state machine learning, field detection)
  • Protocol decoders (proprietary protocols you've reversed)
  • Hardware integration (DAQ systems, instrument drivers)
  • Real-world validation (test on your captures, report issues)

Contributing Guide | Architecture


Project Status

Version: 0.13.0 (2026-02-03)

Active Development: Hypothesis-driven RE workflows, automotive protocol analysis (CAN-FD, J1939, OBD-II, UDS), unknown protocol inference (state machines, field detection, CRC recovery), multi-format loading, export automation

Stability: Production-ready for security research, right-to-repair, academic use. API evolution documented in CHANGELOG.

Release History | Roadmap


Legal

License: MIT License - Permissive use, modification, distribution

Disclaimer: Intended for legitimate security research, right-to-repair, academic study, and authorized testing. Users responsible for compliance with applicable laws. Unauthorized access is illegal and unethical.

Dependencies: Python, NumPy, SciPy, Matplotlib, scikit-learn, cantools, Hypothesis. See pyproject.toml.


Citation

@software{oscura2026,
  title = {Oscura: Hardware Reverse Engineering Framework},
  author = {Oscura Contributors},
  year = {2026},
  url = {https://github.com/oscura-re/oscura},
  version = {0.13.0}
}

Machine-readable: CITATION.cff


Oscura - Hardware reverse engineering framework providing unified workflows from signal capture to protocol specification. Built for security research, right-to-repair, academic study, and defense applications.

Metadata

Release files for oscura 0.14.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oscura 0.14.0
File Size Uploaded Provenance Actions
oscura-0.14.0.tar.gz 2.4 MB With provenance Details for oscura-0.14.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for oscura 0.14.0
File Interpreter ABI Platform Actions
oscura-0.14.0-py3-none-any.whl Python 3 none any Details for oscura-0.14.0-py3-none-any.whl

Total release size: 4.5 MB

Release files / oscura-0.14.0.tar.gz

Download URL oscura-0.14.0.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
1799e9a24efadebc950aa87e15d890763a0671f92c4da4ddb9d33b3a85b02326
BLAKE2b-256 checksum
How to use checksums
0fd1bda5182059ff610e723aa993be54c50fbd0a41f04586828efc9ea3cec5a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 5, 2026.

Transparency log

Release files / oscura-0.14.0-py3-none-any.whl

Download URL oscura-0.14.0-py3-none-any.whl
Size 2.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
59a8fd4b7ad793d7c6ed39d73d86eedc83ca904e64b0b5bbfecde0a93b1b6636
BLAKE2b-256 checksum
How to use checksums
4892c55e34cbb07b93e0d540663f414e448b5758a9db6c63522bab0956dc6a21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 5, 2026.

Transparency log

Security for oscura 0.14.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for oscura-0.14.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page