A Python toolkit for encoding, modulating, and generating TPMS (Tire Pressure Monitoring System) signals for security research and protocol analysis.
- Multi-protocol support: Renault and Mazda/Abarth TPMS protocols
- Signal generation: Create WAV files for RF transmission
- Protocol fuzzing: Built-in fuzzing framework for security testing
- Modular architecture: Extensible encoder system for new protocols
This project uses uv for dependency management:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"Create WAV files for different TPMS protocols:
# Renault TPMS signal
python3 scripts/wavfile.py renault --sensor-id 0x123456 --pressure 220 --temperature 25
# Mazda/Abarth TPMS signal
python3 scripts/wavfile.py mazda --sensor-id 0x123456 --pressure 220 --temperature 25Run security fuzzing tests:
python3 scripts/fuzzer.py| Protocol | Frequency | Encoding | Status |
|---|---|---|---|
| Renault | 433.92 MHz | Manchester | ✅ Complete |
| Mazda/Abarth | 433.92 MHz | Manchester | ✅ Complete |
| Toyota | 433.92 MHz | Manchester | 🚧 In progress |
black src/ tests/ # Format code
ruff check src/ tests/ --fix # Lint and fix issues
pytest # Run tests- Encoders: Protocol-specific packet encoding (
src/tpms_tools/encoders/devices/) - Modulation: FSK modulation for RF transmission (
src/tpms_tools/modulation/) - Fuzzing: Security testing framework (
src/tpms_tools/fuzzing/) - Utils: Bit manipulation and CRC utilities (
src/tpms_tools/utils/)
- Create encoder in
src/tpms_tools/encoders/devices/ - Subclass
TPMSEncoderand implement required methods - The CLI tools will automatically detect your new protocol
This toolkit is designed for:
- TPMS protocol analysis and reverse engineering
- Security vulnerability research
- Educational purposes
Important: This tool is for defensive security research only. Use responsibly and in accordance with applicable laws.