Terug naar Bouraq

Echte optische overdracht · zonder account

Stuur dit Python-bestand van uw scherm naar uw telefoon.

Een geïsoleerde testopstelling reageert niet meer. Dit Python-script zet de logbestanden om in een incidentrapport met een tijdlijn, anomaliedetectie en afgeschermde identificatiegegevens. Scan 18 QR-codes op drie pagina’s van zes om het gecontroleerde bronbestand van 41.2 KB te ontvangen.

Op welk apparaat probeert u het?

U hebt een computerscherm en een telefoon nodig. Geen account of installatie.

  1. Open de scanner op uw telefoon

    Scan deze QR-link met de gewone camera van uw telefoon en open de link.

  2. Sta de telefooncamera toe

    Tik op uw telefoon op Camera starten en sta toegang toe. Houd deze pagina op uw computer open.

  3. Speel de drie QR-pagina’s af

    Start de overdracht op uw computer en richt uw telefoon op alle zes codes. De drie pagina’s blijven terugkomen; elke code hoeft maar één keer gelezen te worden.

Het oorspronkelijke bestand
PYairgap_incident_report.py41,231 B
#!/usr/bin/env python3
"""The isolated test bench stopped at 02:17. Your colleague needs the evidence.

AIR-GAP INCIDENT REPORT: turn local logs into a brief you can carry through QR.
A useful example for OT engineers, lab teams and developers on restricted PCs.
No USB, network connection, package installation or equipment access required.

Try the SYNTHETIC acceptance-bench incident (no real plant or customer data):
    python airgap_incident_report.py --demo --output bench-brief
    # Open bench-brief/report.html locally. No web server is needed.
    # A crash, repeated PLC reconnects and rising temperature become a timeline.

For approved exports:
    python airgap_incident_report.py --input controller.csv \
        --input service.jsonl --output incident-brief

Required fields: timestamp, asset, event. Use --schema for supported values.
Timestamps require Z or an explicit UTC offset. Input: UTF-8 CSV or JSONL.
Output: escaped HTML, JSON summary, source and handoff SHA-256 manifests.
Identifiers are pseudonymised by default. Review free text before sharing;
redaction cannot recognise every secret. --keep-identifiers is local-use only.
Correlation is not causation. This is triage, not safety approval or control.
Python 3.10+; standard library only. The web demo transfers, never runs, this file.
"""
from __future__ import annotations

import argparse
import csv
import hashlib
import io
import ipaddress
import json
import math
import re
import statistics
import sys
from collections import Counter, defaultdict
from dataclasses import dataclass, field
from datetime import datetime, timedelta, timezone
from html import escape
Voorbeeld · eerste 40 regels
De live QR-overdracht
18 QR · 3 × 6
Pagina 1 / 3Klaar om te versturen. Start het afspelen en scan met uw telefoon.
Drie pagina’s. Zes QR-codes per pagina.

Stel hierboven uw telefoon in en start dan de overdracht.

Drie pagina’s van zes QR-codes blijven herhalen tot u pauzeert. Begin met 6 seconden per pagina of kies 2,5 of 4 seconden als uw camera het bijhoudt. Een gemiste pagina komt vanzelf terug.

Alleen een openbaar voorbeeld (41231 bytes). Camerabeelden en bestandsherstel blijven in uw browser. De Python-broncode wordt getoond en gedownload, nooit uitgevoerd. Voor uw eigen bestanden is een Bouraq-account nodig.