Appearance
破解配送機器人的 2.4G 本地通訊協議:一場逆向工程的冒險
從雲端 Log 分析到 RF 參數破解,揭開隱藏在電波中的秘密
作者:Ray 日期:2025 年 12 月
當你看著一台配送機器人在大樓裡穿梭,把包裹送到指定樓層,你是否好奇過它背後的通訊架構?這篇文章記錄我嘗試逆向工程某款配送機器人 2.4G 無線通訊協議的過程——從動機、策略到目前的突破。
為什麼要破解?
這套配送機器人系統的通訊架構分兩層:
雲端層:Robot 和 Station 都透過 4G 網路連接雲平台,任務調度、狀態同步都在雲端完成。
本地層:當 Robot 靠近 Station 時,兩者會透過 2.4GHz 無線通訊建立「本地協作頻道」。這條通道用於近距離的即時協作——例如 Robot 到 Station 領取商品時的握手確認。即使 4G 斷線,本地協作仍能進行。
問題來了:如果我們想打造自製的 Station,就必須搞懂這兩層通訊協議。但無論是雲端還是本地,都沒有任何官方文件或原始碼。
於是,逆向工程成了唯一的路。
策略:從雲端到本地,層層突破
我的方法是由外而內,先解決有跡可循的部分:
第一階段:破解雲端協議
雖然沒有原始碼,但我們有系統運行時的 Log 檔和 YAML 設定檔。透過分析這些資料,我逆向推導出雲平台的 gRPC 介面和 Protobuf 結構,成功用 C# 開發出能與雲平台通訊的 Station 和 Robot 模擬器。
第二階段:分析 2.4G 封包
機器人會把 2.4G 通訊資料(編碼為 Base64 的 air_says 欄位)上傳到雲端。這是個寶貴的側通道——不需要無線設備,就能窺探本地協議的內容。
第三階段:破解 RF 參數
最後才是硬體攻擊:用 RF-NANO 監聽空中封包,找出頻道、地址、傳輸速率等 RF 層參數。
從硬體開始:找到 RF 模組
要破解 2.4G 通訊,首先得知道用的是什麼硬體。經過拆解調查,我發現它使用的是 EBYTE E01-2G4M20S1B——一個基於 Nordic nRF24L01P 晶片的 2.4GHz 射頻模組。
這是個好消息。nRF24L01+ 是業界常見的低功耗無線晶片,參數空間有限:125 個頻道、三種傳輸速率(250Kbps、1Mbps、2Mbps)、3-5 byte 的地址寬度。這意味著暴力破解是可行的。
Base64 解碼:從雲端 Log 下手
在等待 RF 硬體到貨的同時,我先從雲端 Log 中的 air_says 欄位下手。這些 Base64 編碼的資料就是 2.4G 封包的原始內容。
我提取了 12 個樣本,開始像考古學家一樣研究這些二進制資料。
突破:座標編碼的秘密
Base64 解碼後,我得到一串看似無意義的 hex bytes。但當我把它跟 Log 中其他欄位(例如已知的座標值)交叉比對時,規律浮現了。
以 STATION_ROBOT_SAY(Type 35)這種 32 byte 的封包為例:
23 0A A0 87 01 10 10 86 80 5A B0 7B D0 E7 E0 07 ...
│ │ │ └──┘ └──┘ └──┘
│ │ │ x y θ
│ │ └─ map_sid = 1
│ └─ unit_sid = 10
└─ msg_type = 35最關鍵的發現是座標的編碼方式。我觀察到封包中 offset 6-7 的值是 0x8610,而 Log 顯示機器人的 x 座標是 2145。
2145 × 16 = 34320 = 0x8610。Bingo!
座標採用 16 倍縮放 + Little-Endian uint16 編碼。這種設計很聰明:用整數避免浮點運算,同時保留 1/16 單位的精度(約 0.0625)。
我用這個假設驗證了三組樣本的 x、y、theta 值,全部吻合。
目前破解的成果
經過分析,我已經能解碼四種消息類型:
| Type | 名稱 | 長度 | 用途 |
|---|---|---|---|
| 34 | PASS_DOOR_ROBOT_SAY | 32B | 過門狀態 |
| 35 | STATION_ROBOT_SAY | 32B | 位置回報 |
| 37 | CHARGE_ROBOT_SAY | 6B | 電量狀態 |
| 38 | PLANNING_ROBOT_SAY | 24B | 規劃狀態 |
已確認的欄位包括:設備 ID、地圖 ID、座標(x, y, theta)、速度、目標 POI、電池電量。整體應用層協議的破解程度約 70%。
更好的消息是:資料沒有加密。我計算了 payload 的熵值,只有 0.98-3.27 bits/byte,遠低於加密資料應有的 7+ bits/byte。這代表一旦搞定 RF 參數,就能直接讀取和模擬封包。
風險與未知
這個專案最大的不確定性在 RF 層。目前我只破解了「封包裡裝什麼」,但還不知道「封包怎麼傳」。具體來說:
- 頻道未知:可能在 2450-2480 MHz 範圍(避開 WiFi 干擾),但需要實測
- 地址未知:5 byte 的地址有 2^40 種可能,需要更聰明的方法
- 是否跳頻:如果機器人使用跳頻機制,監聽難度會大增
我估計整體成功機率約 75%。樂觀因素是 nRF24L01+ 是標準晶片,參數空間有限;悲觀因素是如果廠商做了什麼客製化,可能會遇到意想不到的阻礙。
下一步
目前的進度:雲端協議已破解並實作模擬器,2.4G 應用層協議破解約 70%,RF 層參數仍未知。
接下來的計畫:
- 完善模擬器:讓 Station 和 Robot 模擬器能完整走完任務閉環,先用軟體模擬 2.4G 通訊
- RF 硬體驗證:等 RF-NANO 到貨後,用 Sniffer 監聽真實封包,確認 RF 參數
- 整合真實硬體:最終讓自製 Station 能透過真實的 2.4G 通道與原廠 Robot 協作
後記:逆向工程的樂趣
這種專案最迷人的地方,是那種解謎的快感。你面對的是一串看似隨機的數字,但透過觀察、假設、驗證,規律會逐漸浮現。當你第一次成功預測出封包內容時,那種「原來如此」的感覺,比任何遊戲通關都過癮。
當然,逆向工程也需要謹慎。這些技術應該用於學習、研究和合法的產品開發,而不是惡意攻擊。我破解這套協議是為了讓自己的系統更靈活,而不是去干擾別人的機器人。
如果你也對無線通訊逆向工程有興趣,nRF24L01+ 是很好的入門目標——便宜、資料豐富、參數空間可控。準備好你的邏輯分析儀和咖啡,開始挖掘那些隱藏在電波中的秘密吧。