Am dat peste un proiect open-source destul de neobișnuit și cred că merită discutat aici: Decimen Optical Transfer. Ideea centrală: trimite un fișier de pe un dispozitiv pe altul folosind doar ecranul unuia și camera celuilalt. Fără cablu, fără Bluetooth, fără cont, fără nicio conexiune de rețea între cele două dispozitive.
Cum funcționează practic
Deschizi programul (rulează direct în navigator, ca PWA) pe ambele dispozitive. Pe primul alegi „Send” și selectezi un fișier, iar ecranul începe imediat să afișeze un flux continuu de coduri QR animate. Pe al doilea alegi „Receive”, dai acces la cameră și o îndrepți spre ecranul care trimite. După câteva secunde de captură, fișierul e reconstruit și verificat prin hash SHA-256.
Limite: fișiere de până la 64 MB, text lipit de până la 4 MB. Numele original și tipul fișierului sunt păstrate, iar compresia gzip se aplică automat când ajută.
Partea interesantă: codare fountain, nu secvențială
În loc să împartă fișierul într-o secvență fixă de coduri QR care trebuie citite în ordine (ceea ce ar fi extrem de fragil pe un canal fără cale de întoarcere), Decimen folosește Luby Transform, o codare de tip fountain. Fiecare cadru transmis e XOR-ul unui subset pseudo-aleator de blocuri ale fișierului, ales după o distribuție robust-soliton. Receptorul adună orice cadre distincte reușește să capteze, indiferent de ordine, și reconstituie fișierul din ele. Practic sunt necesare aproximativ 115% din numărul minim de cadre, iar un cadru pierdut înseamnă doar puțin timp în plus, nu o eroare de transfer.
Autorul (Evan Crawley, alias Bash Alarmist) precizează că acesta e un proof-of-concept desprins dintr-un experiment mai amplu care a atins circa 128 KB/s telefon la telefon, cu cadre mai dense, grid-uri multi-cod și un canal de culoare corectat pentru erori. Pagina oficială arată un transfer la aproximativ 130 KB/s.
Câteva detalii tehnice notate în README merită menționate:
- decodarea folosește zxing-cpp compilat în WASM, pentru că Safari nu a implementat niciodată
BarcodeDetector; - pe iOS,
frameRate: {ideal: 60}e ignorat silențios și livrează 30 fps, trebuie cerut{exact: 60}; - motoarele JS calculează diferit
Math.log, așa că pentru ca cele două distribuții soliton (trimițător/receptor) să coincidă bit cu bit, s-a scris o implementare deterministă proprie.
Securitate: fără criptare
Aici e punctul de atenție. Decimen nu criptează conținutul transmis. Faptul că nu există o cale de rețea între dispozitive nu înseamnă confidențialitate: orice cameră care poate vedea ecranul emițător poate capta același flux. Proiectul oferă izolare de rețea, nu protecție împotriva unui observator. Pentru fișiere sensibile, soluția recomandată e să le criptezi separat înainte de transfer.
Alte detalii
Scris în TypeScript, licență MIT, poate rula offline după prima vizită și se poate instala ca PWA pe iOS și Android. Codul sursă și instrucțiunile de self-hosting sunt pe GitHub (peste 1.5k stele, 171 forkuri la momentul scrierii). Repo-ul mai listează și alte proiecte similare descoperite ulterior (airgapped-qr-code-transfer, txqr, libcimbar), pentru cine vrea să compare abordări.
Am aflat despre proiect din articolul de pe Linuxiac.
Mi se pare un exemplu bun de „trick” simplu dar bine executat: canalul optic e limitat ca viteză, dar pentru situații unde o conexiune de rețea directă e incomodă sau imposibilă (dispozitive izolate, rețele diferite, air-gap), rezolvă o problemă reală fără să ceară nimic altceva decât un ecran și o cameră.