ShadowCat: 通过动画二维码传输文件

在没有网络连接的情况下在设备之间传输数据是一个计算机科学中的长期挑战。虽然我们通常依赖 Wi-Fi、Bluetooth 或物理线缆,但在这些通信通道不可用或损坏的边缘情况下,仍存在挑战。ShadowCat 是一款基于浏览器的工具,它通过利用视觉通道来解决这个问题:使用一系列动画二维码将文件从一台设备移动到另一台设备。

ShadowCat 的工作原理

ShadowCat 被设计为一个单页应用程序,允许用户将文件加载到浏览器中,然后将其切分为较小的分段。这些分段被转换为一系列在发送设备屏幕上闪烁的二维码。接收设备使用其摄像头捕捉这些帧,重新组装分段,并使用循环冗余校验 (CRC) 验证数据的完整性。

这种方法源于实际需求。作者 @unprovable 指出,该工具的设计初衷是为了从一部在浸入液体后通信模块发生硬件故障的老旧手机中恢复数据。通过完全绕过网络协议栈,ShadowCat 提供了一种在传统方法失效时窃取数据的途径。

技术考量与优化

通过二维码传输文件本质上比传统方法慢,但有几种方法可以优化这一过程。围绕 ShadowCat 的社区讨论强调了几条改进视觉数据传输的技术路径:

数据编码与效率

主要的担忧之一是编码开销。目前,许多实现方式使用 Base64 来确保二进制数据与二维码标准兼容。然而,正如 @tripflag 所指出的,对二维码使用二进制模式可能会潜在地减少传输相同数据量所需的帧数,从而提高吞吐量。

纠错与喷泉码

在高速视觉传输中,由于运动模糊或光照问题,丢帧是常见现象。为了应对这一点,一些开发者建议使用“喷泉码”(例如 RaptorQ 或 Luby Transform 码)。与传统的顺序分块不同,喷泉码允许接收者只要收到任何足够数量的数据包,无论丢失了哪些特定的数据包,即可重建原文件。这消除了发送者重新传输特定缺失分段的需求,使流传输更具韧性。

安全性与使用场景

除了简单的数据恢复,视觉传输数据的能力对安全性和物理隔离系统 (air-gapped systems) 具有重大意义。

物理隔离通信

对于追求最高安全性的用户,视觉传输是创建物理隔离通信通道的强大工具。通过将视觉传输与强加密和一次性密码本 (OTP) 相结合,用户可以创建一个消息从未接触过网络的系统,从而大幅减少攻击面。正如 @MattCruikshank 所建议的,在视觉传输层之上结合硬件随机噪声生成器和公钥密码学,可以确保实现真正的秘密消息。

数据窃取

从网络安全角度来看,这种方法也是一把双刃剑。正如 @thedougd 指出的,这是一种从安全环境中窃取数据的有效方式。由于软件可以托管在 CDN 或 GitHub Pages 上,网络管理员很难封锁工具本身,而实际的数据传输完全通过摄像头在离线状态下进行。

结论

ShadowCat 表明,现代设备最基本的组件——屏幕和摄像头——可以被重新利用为高带宽的通信通道。虽然它可能永远无法取代 USB 线缆的速度,但它在灾难恢复、物理隔离安全和专门的数据窃取方面的实用性,使其成为现代技术工具箱中一个引人入胜的工具。

Sources