14. Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project uses Calendar Versioning.
14.1. Known Issues¶
peat parsemay have odd results when run with empty files (0 bytes)ControlLogix: IP, MAC, services, and other data from multiple communication modules on a single ControlLogix PLC aren’t being added to
host.moduleproperly when de-duplication and merging occurs. Additionally, the module that gets selected as the “primary” to represent the device isn’t fully deterministic and relies on whatever gets checked first. This issue occurs if a device has 2 or more communication modules that are queried by PEAT. For example, if a device has a EWEB at192.168.0.10and a EN2TR at192.168.0.11and both are interrogated by PEAT, then some data from the two modules may not be merged properly during the de-duplication process.
14.1.1. Resolved issues¶
None yet after open-sourcing!
14.2. Releases¶
14.3. v2026.9.2 (2026-09-02)¶
14.3.1. Features¶
Add MySQL/MariaDB protocol class (
peat/protocols/mysql.py) with unauthenticated server fingerprinting via TCP greeting packet, PyMySQL-backed query helpers, andon_connected/enumeratesubclass hooks for device-specific extensions. (#62)Added support for encrypting and decrypting PEAT result archives. (#67)
Added a new built-in PEAT module for the OpenPLC Runtime v4. This natively integrated module enables discovery, fingerprinting, data collection, and program deployment on OpenPLC v4 instances via its REST API. The implementation features optimized API session caching, respects global HTTPS port configurations, and includes dedicated configuration templates (examples/openplc-config.yaml). Additionally, a comprehensive live-testing suite has been included, accessible via the new --run-container Pytest flag, which tests the module against a live OpenPLC Docker container. (#72)
14.3.2. Bugfixes¶
Fixed a bug in the core scanning API that caused default port state pollution. The scanner now strictly maps open services by (protocol, port) pairs and safely reverts transient configuration changes, ensuring modules with custom port assignments do not overwrite or pollute global port states during fingerprinting. (#72)
fix: Added missing encrypt/decrypt examples to CLI and fixed exception when an invalid example is requested (#83)
14.3.3. Misc¶
14.4. v2026.6.25 (2026-06-25)¶
14.4.1. Features¶
Added devcontainer to enable quick and reproducible creation of a consistent developer experience regardless of host platform
Added command for passive forensic analysis of artifacts without touching live devices
Added minified device-data-full where whitespace is removed from output by default
Split data models into jsonl files
Added towncrier to manage CHANGELOG.rst
Added
peat pull --skip-scanflag to bypass the scan phase and pull directly from hosts defined in a config file. Per-hostpeat_modulemappings in thehostslist are respected; a single-ddevice type can be used as a fallback. The-i/-fargument is no longer required when a config file with ahostslist is supplied. (#60)