https://github.com/syax89/ddd-tachograph-reader
Professional digital tachograph (.ddd) file analyzer — full decoding, signature verification, and tree-structured data exploration (G1/G2/G2.2)
https://github.com/syax89/ddd-tachograph-reader
compliance customtkinter ddd digital-tachograph eu-regulation fleet-management gui python tachograph
Last synced: 15 days ago
JSON representation
Professional digital tachograph (.ddd) file analyzer — full decoding, signature verification, and tree-structured data exploration (G1/G2/G2.2)
- Host: GitHub
- URL: https://github.com/syax89/ddd-tachograph-reader
- Owner: Syax89
- License: mit
- Created: 2026-02-11T19:21:53.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2026-06-09T11:47:17.000Z (15 days ago)
- Last Synced: 2026-06-09T12:03:50.856Z (15 days ago)
- Topics: compliance, customtkinter, ddd, digital-tachograph, eu-regulation, fleet-management, gui, python, tachograph
- Language: Python
- Homepage:
- Size: 548 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DDD Tachograph Reader
> Open Source `.ddd` digital tachograph file analyzer — full decoding with tree-structured data exploration.
[](https://github.com/Syax89/ddd-tachograph-reader/actions/workflows/build.yml)
[](https://github.com/Syax89/ddd-tachograph-reader/releases/latest)
[](LICENSE)

---
## Features
### File Decoding
- **Multi-generation**: G1 (Annex 1B), G2 Smart (Annex 1C), **Gen 2.2 Smart V2** (Reg. EU 2023/980)
- **Driver data**: Surname, first name, date of birth, card number, expiry, issuing nation
- **Daily activities**: Driving, work, availability, rest/break
- **Vehicle data**: VIN, plate, registration nation, odometer
- **GNSS positions**: Coordinates, border crossings, places
- **VU records**: Card insertions/withdrawals, calibrations, sensors, events/faults
### Integrity
- Cryptographic signature verification (ERCA → MSCA → Card/VU chain)
- Recursive BER-TLV and STAP parsing (nested containers)
- 100% byte coverage on all tested files
- Tree structure for data exploration
### Export
- JSON, Excel, CSV export
- Interactive GUI with tree navigation
---
## Download & Usage
### Pre-built Executable (recommended)
Download from the **[Releases](https://github.com/Syax89/ddd-tachograph-reader/releases/latest)** page:
| Platform | File |
|----------|------|
| Windows | `TachoReader-Windows.zip` |
| macOS | `TachoReader-Mac.zip` |
Extract and run `TachoReader` — no installation required.
### From Source (developers)
```bash
git clone https://github.com/Syax89/ddd-tachograph-reader.git
cd ddd-tachograph-reader
pip install -r requirements.txt
# GUI
python gui_tree.py
# CLI
python tacho_cli.py path/to/file.ddd
```
---
## Project Structure
```
ddd-tachograph-reader/
├── gui_tree.py # GUI (tree + table, tkinter)
├── tacho_cli.py # Main CLI
├── ddd_parser.py # Core parser entry point
├── signature_validator.py # Certificate chain validation
├── export_manager.py # Excel/CSV export
├── core/
│ ├── tag_navigator.py # Recursive BER-TLV / STAP navigation
│ ├── decoders.py # Tag decoders (G1, G2, G2.2)
│ ├── decoder_registry.py # Centralized tag→decoder registry
│ ├── deterministic_parser.py # Schema-driven two-pass parser
│ ├── g2_decoders.py # G2/G2.2 VU RecordArray decoders
│ ├── record_array.py # RecordArray parser (Annex 1C)
│ ├── vu_record_dispatcher.py # VU stream dispatcher
│ ├── vu_signature_verifier.py # ECDSA signature verification
│ ├── models.py # Data models (TachoResult)
│ ├── tag_definitions.py # Tag ID → name mappings
│ ├── constants.py # Shared constants
│ └── logger.py # Centralized logging
├── src/ # Domain/infrastructure layer
├── certs/ # ERCA root certificates
├── tests/ # Test suite (118 tests)
├── specs/ # Specifications and audits
├── docs/ # Documentation
└── .github/workflows/ # CI/CD (Windows/macOS builds)
```
---
## Supported Formats
| Generation | Standard | Header | Notes |
|------------|----------|--------|-------|
| G1 Digital | Annex 1B (Reg. 3821/85) | variable | Legacy tachographs |
| G2 Smart | Annex 1C (Reg. 2016/799) | `0x7621` | Smart Tachograph V1 |
| **G2.2 Smart V2** | Annex 1C (Reg. 2023/980) | `0x7631` | Smart Tachograph V2 |
---
## Testing
```bash
pip install pytest
pytest tests/ -v
```
118 tests: multi-generation detection, G1/G2/G2.2 parsing, byte coverage, fuzzing, digital signatures.
---
## Building from Source
```bash
pip install pyinstaller
pyinstaller build.spec
# Output: dist/TachoReader (macOS) / dist/TachoReader.exe (Windows)
```
---
## License
MIT © [Syax89](https://github.com/Syax89)