Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import json | |
| import datetime | |
| # OPA/Rego-style policy rules for IoT anomaly detection | |
| RULES = { | |
| "NIGHTSPIKE": lambda v: v > 90, | |
| "SENSOROFFLINE": lambda v: v == 0, | |
| "UNAUTHORIZEDCONFIGCHANGE": lambda v: v < 0, | |
| "HIGHTEMP": lambda v: v > 75, | |
| "CRITICALTHRESHOLD": lambda v: v > 95, | |
| } | |
| def check_policy(sensor_id: str, value: float, sensor_type: str) -> dict: | |
| """Evaluate IoT sensor reading against policy rules.""" | |
| violations = [r for r, fn in RULES.items() if fn(value)] | |
| severity = "CRITICAL" if any(r in violations for r in ["CRITICALTHRESHOLD", "UNAUTHORIZEDCONFIGCHANGE"]) \ | |
| else "HIGH" if violations else "OK" | |
| result = { | |
| "sensor_id": sensor_id, | |
| "sensor_type": sensor_type, | |
| "value": value, | |
| "timestamp": datetime.datetime.utcnow().isoformat() + "Z", | |
| "violations": violations, | |
| "severity": severity, | |
| "status": "ALERT" if violations else "OK", | |
| "action": "KILL_SWITCH" if severity == "CRITICAL" else ("ALERT_TELEGRAM" if violations else "PASS") | |
| } | |
| return result | |
| demo = gr.Interface( | |
| fn=check_policy, | |
| inputs=[ | |
| gr.Textbox(label="Sensor ID", value="demo-01", placeholder="e.g. sensor-bakhmach-01"), | |
| gr.Number(label="Sensor Value", value=28), | |
| gr.Dropdown( | |
| label="Sensor Type", | |
| choices=["temperature", "humidity", "vibration", "power", "motion"], | |
| value="temperature" | |
| ) | |
| ], | |
| outputs=gr.JSON(label="Policy Engine Result"), | |
| title="AuditorSEC IoT Policy Simulator", | |
| description="""Real-time OPA/Rego-style policy engine for IoT anomaly detection. | |
| Rules: NIGHTSPIKE >90 | SENSOROFFLINE =0 | UNAUTHORIZEDCONFIGCHANGE <0 | HIGHTEMP >75 | CRITICALTHRESHOLD >95 | |
| Powered by AuditorSEC | GitHub: romanchaa997/Audityzer | Telegram: @audityzerbot""", | |
| examples=[ | |
| ["demo-01", 95, "temperature"], | |
| ["sensor-02", 0, "humidity"], | |
| ["node-03", 28, "power"], | |
| ["edge-04", -5, "vibration"], | |
| ["bakhmach-01", 76, "temperature"] | |
| ], | |
| flagging_mode="never" | |
| ) | |
| demo.launch() |