Craton Shield
vs-bacnet-monitor
vs-bacnet-monitor
BACnet intrusion detection for Craton Shield (IEC 62443).
Overview
Monitors BACnet traffic for security anomalies in industrial control systems. Designed for industrial gateways and PLCs.
MSRV: 1.82 | Environment: #![no_std], zero heap allocation
Features
- Service choice allowlist — per-rule allowlist of permitted BACnet service choices with wildcard support
- Write/dangerous operation protection — block writeProperty, writePropertyMultiple, createObject, deleteObject, and reinitializeDevice services
- Read-only enforcement — restrict rules to read-only operations
Stack Budget
~300 bytes
Usage
use vs_bacnet_monitor::BacnetMonitor;
use vs_types_ind::BacnetFrame;
let mut monitor = BacnetMonitor::new();
// Allow service choice 12 (ReadProperty), read-only
monitor.add_service_rule(12, true).unwrap();
// Inspect a frame
let result = monitor.inspect(&frame);
if !result.allowed {
// frame was blocked
}
License
Apache-2.0. See LICENSE.