Skip to main content

Reverse engineer ANY system from captured waveforms—analog or digital. Audio (THD/SNR), power (ripple/efficiency), RF, sensors, IoT protocols (UART/SPI/I2C/CAN), state machines, CRC recovery. IEEE-compliant (181/1241/1459/2414)

Project description

TraceKit

Version Python License IEEE

The open-source toolkit for reverse engineering ANY system from captured waveforms—analog or digital, simple or complex

TraceKit provides comprehensive signal analysis across analog and digital domains. Analyze audio amplifiers (THD, SNR), power supplies (ripple, efficiency), RF baseband, sensors, control systems, logic circuits, IoT protocols (UART, SPI, I2C, CAN + 16 more), and mixed-signal systems. Features include IEEE-compliant measurements (181, 1241, 1459, 2414), spectral analysis (FFT, PSD, wavelets), power analysis (AC/DC, efficiency), protocol decoding and reverse engineering (state machine inference, CRC recovery), and compliance validation (EMC, power quality).


Why TraceKit?

Challenge TraceKit Solution
Analyzing audio amplifier distortion THD, SNR, SINAD with IEEE 1241 compliance
Characterizing power supply ripple AC/DC power analysis, efficiency, ripple metrics
Unknown protocol on captured waveform Protocol inference with automatic parameter detection
Analyzing proprietary bus protocols State machine learning from captured traffic
Validating signal integrity IEEE-compliant measurements (181, 1241, 2414)
Debugging embedded systems 16+ protocol decoders (UART, SPI, I2C, CAN, JTAG...)
EMC pre-compliance testing CISPR/FCC limit mask testing with reports
RF baseband spectral analysis FFT, PSD, spectrograms with windowing options

Key Capabilities

Analog Signal Analysis

  • Audio Analysis - THD, SNR, SINAD, ENOB, harmonic distortion (IEEE 1241-2010)
  • Power Analysis - AC/DC power, efficiency, ripple, power factor (IEEE 1459), SOA testing
  • RF/Spectral - FFT, PSD, spectrograms, wavelets, frequency-domain characterization
  • Waveform Measurements - Rise/fall time, frequency, duty cycle, overshoot (IEEE 181-2011)

Digital Signal Analysis

  • Protocol Decoders - UART, SPI, I2C, CAN, CAN-FD, 1-Wire, LIN, JTAG, SWD, I2S, USB, HDLC, Manchester, FlexRay
  • Protocol Inference - CRC reverse engineering, L* active learning, state machine learning, field boundary detection
  • Signal Integrity - Jitter decomposition, eye diagrams, S-parameter analysis, TDR (IEEE 2414-2020)

Automotive Protocols

  • CAN Bus Reverse Engineering - Message discovery, signal extraction, DBC generation, checksum detection
  • Automotive Decoders - OBD-II (54 PIDs), J1939 (154 PGNs), UDS (17 services), DTC database (210 codes)

Compliance & Validation

  • EMC Compliance - CISPR/FCC/CE limit mask testing with automated reporting
  • File Format Support - Tektronix WFM, Rigol, Sigrok, VCD, PCAP, TDMS, WAV, CSV, HDF5, Touchstone, BLF, ASC, MDF

Quick Start

Installation

# Using pip
pip install tracekit

# From source
git clone https://github.com/lair-click-bats/tracekit.git
cd tracekit
pip install -e ".[dev]"

30-Second Example

import tracekit as tk

# Load waveform (auto-detects format)
trace = tk.load("capture.wfm")

# Make measurements
print(f"Rise time: {tk.rise_time(trace):.2e} s")
print(f"Frequency: {tk.frequency(trace):.2f} Hz")

# Decode protocol
uart = tk.decode_uart(trace, baudrate=115200)
for frame in uart:
    print(f"UART: {frame.data.hex()}")

→ See docs/getting-started.md for complete introduction

→ See examples/ for 50+ working code examples


Documentation

For Users

For Developers


Core Features

Signal Analysis

IEEE-compliant measurements for characterization and validation. TraceKit implements standards IEEE 181-2011 (pulse), IEEE 1241-2010 (ADC), IEEE 2414-2020 (jitter).

→ See docs/api/analysis.md for full measurement API

Protocol Decoding

Decode embedded protocols directly from waveforms. Supports 16+ protocols including serial (UART, SPI, I2C), automotive (CAN, LIN, FlexRay), and debug (JTAG, SWD).

→ See docs/reference/protocol-decoders.md for protocol list

→ See examples/04_protocol_decoding/ for examples

Spectral Analysis

Frequency-domain analysis with IEEE 1241-2010 compliance. FFT, PSD, ADC quality metrics (SNR, THD, SINAD, ENOB, SFDR), time-frequency analysis.

→ See docs/tutorials/04-spectral-analysis.md

Signal Integrity

High-speed digital validation: jitter measurements (IEEE 2414-2020), eye diagrams, S-parameters, TDR, channel equalization.

→ See docs/guides/signal-integrity.md

Protocol Reverse Engineering

Analyze unknown protocols with:

  • CRC Polynomial Reverse Engineering - Recover CRC parameters from samples
  • L* Active Learning - Infer protocol state machines from traffic
  • Field Boundary Detection - Automatically detect binary field boundaries
  • Wireshark Dissector Export - Generate Wireshark dissectors from definitions

→ See CHANGELOG.md [Unreleased] section for latest features

→ See examples/05_export/ for Wireshark export examples


File Formats

Format Extensions Description
Tektronix WFM .wfm Tektronix oscilloscopes
Rigol WFM .wfm Rigol oscilloscopes
Sigrok .sr Sigrok/PulseView captures
VCD .vcd Value Change Dump (digital)
PCAP .pcap, .pcapng Network packet captures
TDMS .tdms NI LabVIEW
Touchstone .s1p, .s2p, etc. S-parameter data
WAV .wav Audio waveforms
CSV .csv Generic time-series
HDF5 .h5, .hdf5 Scientific data
NumPy .npz NumPy arrays

→ See docs/guides/loading-waveforms.md for format details


IEEE Standards Compliance

TraceKit implements measurements according to industry standards:

Standard Domain Measurements
IEEE 181-2011 Pulse measurements Rise/fall time, slew rate
IEEE 1057-2017 Digitizer characterization Timing analysis
IEEE 1241-2010 ADC testing SNR, SINAD, ENOB, THD, SFDR
IEEE 2414-2020 Jitter measurements TIE, period jitter, RJ/DJ
IEEE 1459 Power measurements Power quality analysis
IEC 61000-4-7 Power quality Harmonics analysis

→ See docs/reference/standards-compliance.md


Development

Quick Start

# Install with development dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/unit -v

# Quality checks
ruff check src/ tests/
ruff format src/ tests/
mypy src/

→ See CONTRIBUTING.md for complete development guide

→ See docs/testing/index.md for testing strategy


Project Structure

tracekit/
├── src/tracekit/       # Source code
│   ├── loaders/        # File format parsers
│   ├── analyzers/      # Signal analysis (waveform, digital, spectral, jitter, protocols)
│   ├── inference/      # Protocol reverse engineering
│   ├── export/         # Wireshark dissectors, data export
│   └── reporting/      # Report generation
├── tests/              # Test suite (17,000+ tests)
│   ├── unit/           # Unit tests
│   ├── integration/    # Integration tests
│   └── compliance/     # Standards compliance tests
├── docs/               # Documentation
├── examples/           # 50+ working code examples
└── scripts/            # Development utilities

→ See docs/index.md for documentation structure


Links


Citation

If you use TraceKit in your research, please cite:

@software{tracekit2026,
  title = {TraceKit: Analog and Digital Signal Reverse Engineering Toolkit},
  author = {TraceKit Contributors},
  year = {2026},
  url = {https://github.com/lair-click-bats/tracekit}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tracekit-0.3.1.tar.gz (35.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tracekit-0.3.1-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file tracekit-0.3.1.tar.gz.

File metadata

  • Download URL: tracekit-0.3.1.tar.gz
  • Upload date:
  • Size: 35.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for tracekit-0.3.1.tar.gz
Algorithm Hash digest
SHA256 1a92952895a54d37cbd7b8f0a9fdc6240fd20a3ad1ca0c05ef76b09a7ddb22df
MD5 b38a26b77b1ded7d69efc689dda9b864
BLAKE2b-256 576224c1cab8977dd802b9ab9936501deb9b58499fe1c3c661b197bf1237e3ad

See more details on using hashes here.

File details

Details for the file tracekit-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: tracekit-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for tracekit-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cd0bf769c1d8608d2791e4de98eb5af5309baafeccae0ea06120d916efd63b88
MD5 66fb44f56bba0ceea16e277440723958
BLAKE2b-256 0402d9b5261bc508277bb6c8beea07df6b58797a863e6f9792b060d5f4414845

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page