十进制光学传输:基于喷泉码的二维码文件传输
Decimen Optical Transfer: fountain-coded QR file transfer

原始链接: https://github.com/bashalarmistalt/decimen-optical-transfer

该项目通过屏幕和摄像头实现设备间的物理隔离(Air-gapped)文件传输。系统将文件转换为动态二维码流,使一台设备能够通过光线“广播”数据,而另一台设备则负责捕获并重建数据。 主要功能包括: * **零依赖**:无需网络、配对、应用,除相机权限外无需其他授权。直接在浏览器中运行,并可通过 PWA 安装。 * **稳健协议**:采用喷泉码(Luby 变换),确保即使在丢帧的情况下也能准确重建文件。 * **性能**:支持最大 64 MB 的文件,传输速度可达 120–130 KB/s。 * **验证**:文件在最终交付前均经过 SHA-256 完整性校验。 虽然该系统具有高度的便携性且适用于离线共享,但它不具备加密功能;任何能够看到发送方屏幕的摄像头都可以捕获数据。本项目为开源(MIT 许可证),基于 QR 码数据传输的前沿技术构建,为跨空信息传输提供了一种可靠且独立于网络的解决方案。

Hacker News 社区正在讨论一个名为“Decimen”的新项目,该项目利用**喷泉码(fountain codes)**通过屏幕上的二维码进行光学文件传输。 用户认为这一概念在离线、安全的文件共享方面非常有吸引力,因为它无需依赖专有服务或诸如 AirDrop 之类的厂商锁定生态系统。讨论涉及了喷泉码的技术效率——即在丢包或接收顺序混乱的情况下仍能重构数据——并将该项目与 IrDA、Timex Datalink 以及声学调制解调器协议等历史先例进行了比较。 争论的很大一部分集中在安全性和易用性上。虽然一些人担心光学“窃听”,但另一些人指出,缺乏加密在建立信任或离线交换公钥方面反而可能是一种特性。技术评论认为,尽管该方法具有创新性,但它面临着硬件帧率同步等现实挑战。总体而言,参与者将 Decimen 视为一种精巧且实用性极高的本地数据传输替代方案,一些人将其底层的纠错原理与卫星通信中使用的技术进行了对比。
相关文章

原文

Send a file between two devices using nothing but a screen and a camera. One page displays the file as an endless stream of animated QR codes; another device points its camera at it and reconstructs the file. No network path between the devices, no app, no pairing, no permissions beyond the camera. The payload travels as light.

Open it on both devices and go — nothing to install. Works offline after the first visit, and installs as an app on both iOS and Android if you want it on a home screen.

Files up to 64 MB (or a pasted text snippet), filename and media type preserved, gzip only when it helps, SHA-256 verified before anything is offered — and received video plays right in the page. Extracted from a larger experiment that reached 128 KB/s phone-to-phone.

Phone receiving a file over light: 130.5 KB/s goodput, halfway through decoding the sender's animated QR stream

Mid-transfer: a phone pulling a file out of the air at 130 KB/s.

Neither mode is encrypted: whatever is on the sending screen is readable by any camera pointed at it. The property this gives you is no network, not confidentiality — see privacy.

Using itquick start · sending · receiving · troubleshooting · install & offline · privacy

How it's builtarchitecture · protocol · platform quirks · build & release

The short version of the protocol: a screen-to-camera link has no back-channel, so the sender streams fountain-coded frames (Luby transform) — the receiver collects any ~K·1.15 distinct frames in any order and peels the file out. Dropped frames cost time, never correctness.

npm install
npm run dev               # https dev server with HMR
npm run serve             # build, then serve the production bundle
npm run demo              # demo mode: only the bundled payloads can be sent
npm test                  # golden wire-format vectors and unit tests
npm run build             # the hosted site → dist/
npm run build:standalone  # both self-contained pages → dist-standalone/
npm run build:all         # everything

Open https://localhost:5173/send/ on the sending device and the printed Network URL on the receiving phone (accept the self-signed certificate once). Walkthrough: quick start.

The concept here was arrived at independently. It turns out several people have had similar ideas, and their takes are all worth a look:

  • mohankumarelec/airgapped-qr-code-transfer: browser-based QR file transfer with compression and sequential chunking. Discovered after publicly demoing this project; convergent evolution in action.
  • divan/txqr (2018): animated QR plus fountain codes in Go, with two excellent write-ups on why fountain coding beats sequential looping.
  • sz3/libcimbar: goes past QR entirely with a custom high-density color code purpose-built for this channel.

Built by Evan Crawley (Bash Alarmist), with node-qrcode and zxing-wasm.

MIT

联系我们 contact @ memedata.com