最新消息:

不用 Wi-Fi、蓝牙和 USB,只靠屏幕与摄像头传文件:开源二维码传输工具大全

佳软 yeeach 22浏览 0评论

相信很多人都遇到过类似的问题:在飞机上、无网络会议室、高度安全的隔离环境等环境下,如何在不同的设备间分享传输文件?

对于飞机上、无网络会议室等安全要求不高的场景,可以用手机蓝牙、本地热点、Wi-Fi Direct、P2P(例如Nostr) 之类的方案完成共享。

但如果是完全物理隔离(Air-Gap)的环境下,Wi-Fi、蓝牙、蜂窝网络、USB 接口乃至无线电信号都完全不可用,如何将一份文本、图片或文件安全地传进/传出隔离设备?

针对此类需求场景,最近有很多个基于光学数据传输(Optical Air-Gapped Data Transfer)的开源项目发布,核心思路都是:将二进制文件转化为高频率闪烁的“动态图像”或“二维码”,发送端(屏幕)高速播放,接收端(摄像头)实时拍摄识别,最终在本地重组文件。

其实通过二维码传输数据的思路有很多开源项目尝试过。

传统基于基础 QR Code 传输文件,很快就会遇到一个致命痛点:单向传输没有反馈机制(ACK)。

发送端不知道接收端是否漏拍了第 42 帧。如果因为镜头抖动或反光漏掉了一帧,接收端就只能傻傻等发送端把整个循环重新播放一遍。这种“掉一帧等一轮”的体验极为糟糕。

一些较新的项目,像 AirScan-QRQRBridgeQRSync 引入了顺序分片(按顺序扫完所有二维码才能重组)、CRC32 校验、IndexedDB 断点续传等技术后,明显提高了可使用性,但依然存在丢一帧可能卡住的问题。

 

为了破解这个难题,工业级项目(如区块链冷钱包使用的 BC-UR 标准)引入了数学上的喷泉码(Fountain Code / Luby Transform / RaptorQ)。

最早实现喷泉码的开源项目是TXQR :https://github.com/divan/txqr 

引入喷泉码后,接收端可以随时加入扫描、支持任意顺序接收、掉帧无感知,大大提升了传输效率与体验。

关于喷泉码的粗浅解释:

假设你需要将一桶水(原始文件)传给对方。传统方式是将水装入 $N$ 个指定编号的杯子,必须按顺序一个个传过去。

而喷泉码就像一座喷泉——发送端无限喷洒出带有随机数学组合的水滴,接收端不需要关心收到的是哪一滴,只要用桶接到任意大约 $105\%$ 总体积的水滴,就能通过线性方程组求解,还原出完整的原始数据!

 

喷泉码的核心思想很优雅:发送端不断生成“编码符号”(可以是原始数据块的随机线性组合),接收端不需要指定顺序,也不需要请求重传,只要收集到足够数量的任意符号,就能高概率恢复全部原始数据。

目前喷泉码主流技术实现有Luby Transform (LT)、RaptorQ (RFC 6330) 两类。

Decimen Optical Transfer :https://github.com/bashalarmistalt/decimen-optical-transfer

QRFerry:https://github.com/deedy/qr-data-transfer

1. Decimen Optical Transfer

Luby Transform (LT) 的代表。

技术:TypeScript + 自定义 LT 喷泉码 + zxing-wasm

特点:极简 PWA,支持中途加入,自适应 gzip,SHA-256 校验

实测吞吐大致在 100–180 KB/s 区间

它的设计哲学非常干净:把喷泉码的优势发挥到极致,同时尽量降低工程复杂度。session ID + 自描述帧头的设计,让接收端可以随时加入,不必从第一帧开始扫。

 

2. QRFerry

RaptorQ (RFC 6330) 的代表

技术:TypeScript + WebAssembly(RaptorQ + fast_qr + ZXing-C++)

特点:Brotli + gzip 择优压缩、双通道(Dual-lane)设计、多速度档位(最高实验室模式接近 1 Mbps 光学载荷)

QRFerry 在工程上明显更“卷”。双通道的核心思路是:高帧率时让两个稳定的二维码交替更新,避免单通道在快速刷新时相机难以锁定。这是针对光学信道稳定性的针对性优化。

 

除了 Decimen、QRFerry外,还有一个值得关注的光学数据传输项目 libcimbar ,它不像 Decimen、QRFerry 那样使用标准二维码,而是自己设计了一套叫 Cimbar(Color Icon Matrix Barcode) 的高密度视觉编码格式,通过“颜色 + 图标形状”共同承载数据。相比普通黑白二维码,它能在同样屏幕面积里放入更多信息,更适合连续高速传输。

和 Decimen、QRFerry 使用普通黑白二维码相比,libcimbar 更像一个真正的“视觉通信协议”:它不再受标准 QR Code 格式约束,而是直接为高速屏幕—摄像头信道设计编码方式。不过它的实际使用门槛也更高,目前接收端更偏向 Android/原生实现,而 Decimen、QRFerry 的 Browser-to-Browser 体验通常更方便。

libcimbar:https://github.com/sz3/libcimbar

 

 

虽然基于光学数据传输(Optical Air-Gapped Data Transfer)传输方式的带宽(几十 KB/s)无法与 Wi-Fi 或 USB 相比,但它在特定场景下拥有无可比拟的优势:

  • 区块链与数字资产安全: 硬件冷钱包(如 Keystone、Passport)通过动态二维码向联网设备广播签名好的离线交易,彻底隔离物理攻击风险。
  • 高密环境密钥分发: 军工、金融及核心机房服务器在初始化配置时,通过屏幕与手机摄像头完成敏感 Key 或证书的无痕投递。
  • 跨平台应急传输: 当两台设备处于不同操作系统且完全没有局域网/蓝牙配对条件时,打开网页即可快速传输小文件。

 

 

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址