Torna a Bouraq

Vero trasferimento ottico · senza account

Trasferisci questo file Python dallo schermo al telefono.

Un banco di prova isolato non risponde più. Questo script Python trasforma i log in un rapporto sull’incidente con cronologia, rilevamento delle anomalie e identificativi oscurati. Scansiona 18 codici QR su tre pagine da sei per ricevere il file sorgente verificato di 41.2 KB.

Su quale dispositivo stai provando?

Servono uno schermo di computer e un telefono. Nessun account o installazione.

  1. Apri lo scanner sul telefono

    Scansiona questo QR del link con la normale fotocamera del telefono, poi apri il link.

  2. Consenti l’accesso alla fotocamera

    Sul telefono tocca Avvia fotocamera e consenti l’accesso. Lascia questa pagina aperta sul computer.

  3. Avvia le tre pagine di QR

    Avvia il trasferimento sul computer e punta il telefono verso tutti e sei i codici. Le tre pagine si ripetono; ogni codice va letto una sola volta.

Il file originale
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
Anteprima · prime 40 righe
Il flusso di codici QR
18 QR · 3 × 6
Pagina 1 / 3Pronto per l’invio. Avvia la riproduzione e scansiona con il telefono.
Tre pagine. Sei codici QR per pagina.

Prepara il telefono qui sopra, poi avvia il trasferimento.

Tre pagine da sei codici QR si ripetono fino alla pausa. Inizia con 6 secondi per pagina oppure scegli 2,5 o 4 secondi se la fotocamera riesce a seguirle. Una pagina persa ritorna al giro successivo.

Solo un esempio pubblico (41231 byte). Le immagini della fotocamera e la ricostruzione del file restano nel browser. Il codice Python viene mostrato e scaricato, mai eseguito. Per trasferire i tuoi file serve un account Bouraq.