【教學】不經網絡.不用插線.毋須註冊!QR Code 檔案隔空傳輸大法

Author:

Published:

- 廣告 -

要把檔案傳送到另一部電腦或手機,要不是透過無線網絡,就是透過 USB 手指。不過如果這兩個方法都行不通的話怎麼辦?有人就想出透過 QR Code 和鏡頭,以單純的光線來傳輸檔案,好處是不需要安裝程式或註冊、不需要互相配對,更不用擔心檔案會在網絡中被截取或留下痕跡,需要的權限也只是接收方的鏡頭使用權限。而其中一個運用這個原理的專案,就是今次為大家介紹的《Decimen Optical Transfer》。

無網無痕傳輸原理

《Decimen Optical Transfer》是一個用「螢幕 + 鏡頭」在兩部裝置之間傳檔的開源專案,發送端把檔案或字串切割成固定大小的碎片,編碼成快速變換的動畫 QR Code 串流,顯示在螢幕上。而接收端只要用相機對準 QR Code,就能即時解碼並還原檔案。完全不需要網路、App、註冊、配對或額外權限(只需相機)。資料以光線形式傳遞。

《Decimen Optical Transfer》只利用「螢幕 + 鏡頭」,就可在兩部裝置之間傳檔。
《Decimen Optical Transfer》只利用「螢幕 + 鏡頭」,就可在兩部裝置之間傳檔。

《Decimen》使用一種名為盧比變換碼 (Luby transform codes) 的湧泉碼(Fountain Codes),將資料分割成 K 個原始區塊,解決單向通道問題,即使漏掉很多幀,只要收到大約 K × 1.15 個不同幀,就能還原完整檔案,不需要重傳請求。而每個幀都是自描述的(含 session ID、序號、檔案長度、hash 等),毋須交握,中途加入也能接上。

- 廣告 -

功能與限制

《Decimen》是基於另一個大規模實驗的簡化版本,原實驗的傳輸速度可達到手持 128KB/s 及固定 186KB/s,而這個專案在筆者測試時就可達到 45KB/s 左右,傳輸 1MB 大約需要 25 秒,但要取決於現場燈光和屏幕亮度,與及手機有多穩定。手震的話傳輸就會變慢。

傳輸速度取決於現場燈光和屏幕亮度,與及手機有多穩定。手震的話傳輸就會變慢。
傳輸速度取決於現場燈光和屏幕亮度,與及手機有多穩定。手震的話傳輸就會變慢。

程式支援最大 64MB 的任何檔案或文字字串,程式會保留檔案的 MIME 類別,以接收裝置的相應檔案類型來還原。接收完成後會進行 SHA-256 驗證才提供下載以確保檔案完整性。但要注意這個程式沒有對檔案進行加密,所以雖然傳輸時不會在網絡被攔截或留下痕跡,但任何能看到屏幕的相機都能讀取到內容(例如高解像閉路電視)。

另外要注意即使不需要真實連線來傳輸,但手機傳輸的話瀏覽器須透過 HTTPS 協議才能取用相機,自行架設的話瀏覽器有可能會因為沒有有效憑證而彈出警告(例如「不是私人連線」警告),不過由於實際上不需要真實連接上網,大家只要在警告中點擊「進階 > 到訪此網站」即可繼續使用。

自行架設的話會因為沒有有效憑證而彈出警告只要在警告中點擊「Advanced > Process to localhost (unsafe)」即可繼續使用。
自行架設的話會因為沒有有效憑證而彈出警告只要在警告中點擊「Advanced > Process to localhost (unsafe)」即可繼續使用。

使用方法

《Decimen》同時提供獨立運行的發送端及接收端 HTML 檔案(毋須伺服器),與及伺服器用的檔案供大家自行架設在自己電腦上。另外,作者亦提供了架設在 decimen.app 的網頁方便手機用家在無法自行架設或執行 HTML 檔時,暫時連到該網站讀取 HTTPS 協議下的 HTML 檔案,讀取後即使中斷連線仍可傳輸檔案。

decimen.app 或自行架設時的首頁,可以選擇發送(左)或接收(右)。
decimen.app 或自行架設時的首頁,可以選擇發送(左)或接收(右)。

下載《Decimen Optical Transfer》按此

運行方式說明離線
decimen-sender.html發送端介面,獨立執行常時
decimen-receiver.html接收端介面,獨立執行常時
decimen.app 或 decimen-site.zip架設在伺服器的 HTML 檔首次訪問後即可離線

PC-PC 傳送

電腦間傳送是最簡單的,只要將發送端及接收端 HTML 檔案個別放在雙方電腦,雙擊執行即可。

- 廣告 -

PC-手機/手機-手機 傳送

由於手機不能像電腦那樣執行 HTML 檔案,所以就需要從 decimen.app 或自行架設的網站載入發送端/接收端 HTML 檔案。載入後即使使用飛行模式也可以收發檔案。

以下就示範使用發送端 HTML 在電腦使用發送檔案,並以 iPhone 的 Safari 從 decimen.app 取得接收端 HTML 來接收檔案。當然,類似的手法也可以用於手機之間傳送檔案。

傳送步驟

發送端

雙擊 decimen-sender.html,點擊「Choose file」,選擇 64MB 以下的檔案,頁面中即會顯示快速變換的 QR Code。點擊 Transfer Settings 可以調整幀速、每幀容量、容錯程度和 QR Code 大小。

decimen-sender.html
頁面中顯示快速變換的 QR Code
點擊 Transfer Settings 可以調整幀速、每幀容量、容錯程度(容錯愈高 QR Code 愈複雜,會影響每幀容量和編解碼速率)和 QR Code 大小。
點擊 Transfer Settings 可以調整幀速、每幀容量、容錯程度(容錯愈高 QR Code 愈複雜,會影響每幀容量和編解碼速率)和 QR Code 大小。

接收端

由於手機在保安上不能像電腦那樣直接執行 HTML 檔,手機瀏覽器取用相機時亦需要 getUserMedia API,需要 HTTPS 協議連線,所以只能以手機瀏覽器連接 decimen.app 或你的電腦來取得 decimen-receiver.html,但只要載入後即可離線,不會影響相機使用。

1. 以 Safari 連接 decimen.app,點擊右邊的 RECEIVE;

1. 以 Safari 連接 decimen.app,點擊右邊的 RECEIVE;

2. 如果是自行架設,連接自己的電腦後會出現這警告畫面,點擊「到訪此網站」連結,並點擊「到訪網站」即可繼續;

2. 如果是自行架設,連接自己的電腦後會出現這警告畫面,點擊「到訪此網站」連結,並點擊「到訪網站」即可繼續;

3. 點擊 Start camera;

3. 點擊 Start camera;

4. 允許取用相機;

4. 允許取用相機;

5. 鏡頭對準電腦顯示的 QR Code 即開始接收。畫面會顯示預計要多久才完成接收和現時的傳輸速率。打開下方的 Live Diagnostics 還可以查看解碼幀速、經過時間和已收到的容量等。手機愈穩定,傳輸速度愈快。傳輸期間可以移開手機暫停,只要手機再次對準 QR Code 就能繼續;

5. 鏡頭對準電腦顯示的 QR Code 即開始接收。

6. 完成接收後,如果是圖片的話會即時顯示在頁面中;

6. 完成接收後,如果是圖片的話會即時顯示在頁面中;

7. 點擊藍色 Save 按鈕即可以接收到的檔案儲存下來;

7. 點擊藍色 Save 按鈕即可以接收到的檔案儲存下來;

8. 檔案會儲存在 iPhone 的「下載項目」資料夾,可以透過《檔案》App 存取,並會自動傳送到 iCloud 備份。

8. 檔案會儲存在 iPhone 的「下載項目」資料夾,可以透過《檔案》App 存取,並會自動傳送到 iCloud。
接收端也可以設定鏡頭解像度、截圖速度和同時啟用的解碼器數量。
接收端也可以設定鏡頭解像度、截圖速度和同時啟用的解碼器數量。

結語:機構可能要擔心資料外洩了⋯⋯

利用 QR Code 傳送檔案雖然慢一些,但勝在不需要連線、安裝檔案或用 USB 手指。不過因為這種傳送檔案手法幾乎毫無痕跡,發送端只是一個約 55KB 的 HTML 檔,可以放在 USB 手指直接執行,對於機構來說可能就要擔心重要檔案透過這種手法外洩了。

Decimen Optical Transfer GitHub 專案網址:https://github.com/bashalarmistalt/decimen-optical-transfer

- 廣告 -
Buy Me a CPM: PCM 讀者會員資助計劃
Mickey Chan
Mickey Chan
愛模擬飛行、希望終有一日回到單車上的宅,眼鏡娘控。座右銘: 1.膽固醇跟美味是成正比的; 2.所有人都可以騙,但絕對不能騙自己; 3.賣掉的貨才是錢,不賣的收藏品不值一文; 4.踩單車,是為了吃更多美食! 5.正義的話語,不一定出自正義之人的口;
- 廣告 -

Related Articles

- 廣告 -

Recent Articles

- 廣告 -

最新影片

- 廣告 -