Skip to content

破解配送機器人的 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名稱長度用途
34PASS_DOOR_ROBOT_SAY32B過門狀態
35STATION_ROBOT_SAY32B位置回報
37CHARGE_ROBOT_SAY6B電量狀態
38PLANNING_ROBOT_SAY24B規劃狀態

已確認的欄位包括:設備 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 層參數仍未知。

接下來的計畫:

  1. 完善模擬器:讓 Station 和 Robot 模擬器能完整走完任務閉環,先用軟體模擬 2.4G 通訊
  2. RF 硬體驗證:等 RF-NANO 到貨後,用 Sniffer 監聽真實封包,確認 RF 參數
  3. 整合真實硬體:最終讓自製 Station 能透過真實的 2.4G 通道與原廠 Robot 協作

後記:逆向工程的樂趣

這種專案最迷人的地方,是那種解謎的快感。你面對的是一串看似隨機的數字,但透過觀察、假設、驗證,規律會逐漸浮現。當你第一次成功預測出封包內容時,那種「原來如此」的感覺,比任何遊戲通關都過癮。

當然,逆向工程也需要謹慎。這些技術應該用於學習、研究和合法的產品開發,而不是惡意攻擊。我破解這套協議是為了讓自己的系統更靈活,而不是去干擾別人的機器人。

如果你也對無線通訊逆向工程有興趣,nRF24L01+ 是很好的入門目標——便宜、資料豐富、參數空間可控。準備好你的邏輯分析儀和咖啡,開始挖掘那些隱藏在電波中的秘密吧。

MIT Licensed