ShadowCat: 透過動畫 QR Code 傳輸檔案

在沒有網路連線的情況下進行裝置間的數據傳輸,是電腦科學中一個長久以來的挑戰。雖然我們通常依賴 Wi-Fi、Bluetooth 或實體線材,但在某些極端情況下,這些通訊管道可能會失效或損壞。ShadowCat 是一款基於瀏覽器的工具,它透過利用視覺管道來解決這個問題:使用一系列動畫 QR Code 將檔案從一個裝置傳輸到另一個裝置。

ShadowCat 的運作原理

ShadowCat 被設計為一個單頁應用程式(SPA),允許使用者將檔案載入瀏覽器,接著將其分割成較小的區塊。這些區塊會轉換成一系列在傳送裝置螢幕上閃爍的 QR Code。接收裝置則使用其相機來捕捉這些影格,重新組合這些區塊,並使用循環冗餘檢查(CRC)來驗證數據的完整性。

這種方法源於實際的需求。作者 @unprovable 指出,該工具的設計初衷是為了從一部在浸入液體後通訊模組發生硬體故障的老舊手機中恢復數據。透過完全繞過網路協定棧(network stack),ShadowCat 提供了一種在傳統方法失效時外傳數據的方式。

技術考量與優化

透過 QR Code 傳輸檔案本質上比傳統方法慢,但有幾種方式可以優化此過程。關於 ShadowCat 的社群討論強調了幾種改進視覺數據傳輸的技術路徑:

數據編碼與效率

主要的考量之一是編碼的開銷。目前,許多實作方式使用 Base64 來確保二進位數據與 QR Code 標準相容。然而,正如 @tripflag 所提到的,對 QR Code 使用二進位模式(binary mode)可能潛在減少相同數據量所需的影格數量,從而提高吞吐量。

錯誤修正與噴泉碼(Fountain Codes)

在高速視覺傳輸中,由於運動模糊或光照問題,掉影格是常見的現象。為了應對這一點,一些開發者建議使用「噴泉碼」(例如 RaptorQ 或 Luby Transform codes)。與傳統的循序區塊分割不同,噴泉碼允許接收者只要收到任何足夠數量的封包,無論具體損失了哪些封包,就能重建原檔。這消除了傳送者需要重新傳送特定缺失區塊的需求,使串流更具韌性。

安全性與使用場景

除了簡單的數據恢復,視覺傳輸的能力對於安全性與實體隔離(air-gapped)系統具有重大意義。

實體隔離通訊

對於追求極致安全性的使用者,視覺傳輸是建立實體隔離通訊管道的強大工具。透過將視覺傳輸與強大的加密技術和一次性密碼(OTP)結合,使用者可以建立一個訊息從未接觸過網路的系統,從而大幅減少攻擊面。正如 @MattCruikshank 所建議的,在視覺傳輸層之上結合硬體隨機雜訊產生器和公鑰加密技術,可以確保訊息的絕對機密性。

數據外傳

從網路安全(cybersecurity)的角度來看,這種方法也是一把雙面刃。正如 @thedougd 指出的,這是一種從安全環境中外傳數據的有效方式。因為軟體可以託管在 CDN 或 GitHub Pages 上,網路管理員很難封鎖該工具本身,而實際的數據傳輸完全是透過相機離線進行的。

結論

ShadowCat 證明了現代裝置最基本的組件——螢幕與相機——可以被重新利用為高頻寬的通訊管道。雖然它可能永遠無法取代 USB 線材的速度,但在災難恢復、實體隔離安全性以及特定用途的數據外傳中,其效用使其成為現代技術工具箱中一個引人入勝的工具。

Sources