BLE Connection Security Protocol (防非客戶連線協定)
本功能碼(Func Code 0x01)專用於藍牙連線後的安全身分驗證。未通過登入驗證前,MCU 應限制其他功能碼(如 0x03 讀取暫存器)的執行權限。
| 欄位名稱 (Col. Name) | 長度 (Byte) | 說明 (Description) | 範例 (Hex) |
|---|
| Start Code | 1 | 固定為 0xB0 | B0 |
| Func Code | 1 | 安全驗證功能,固定為 0x01 | 01 |
| Action Code | 1 | 0x00: 登入驗證
0x01: 修改密碼
0x02: 重製密碼 (重製方式待討論) | 00 / 01 / 02 |
| Payload | 可變 | 依據 Action Code 帶入對應之密碼二進位資料 | XX XX … |
-
2 基本 Output 封包格式 (MCU Slave ➔ S/W Master)
| 欄位名稱 (Col. Name) | 長度 (Byte) | 說明 (Description) | 範例 (Hex) |
|---|
| Start Code | 1 | 固定為 0xB0 | B0 |
| Func Code | 1 | 安全驗證功能,固定為 0x01 | 01 |
| Status | 1 | 執行狀態結果,依照 BLE Connection Exception Communication 定義 | 01 |
| Action Code | 1 | 呼應 Request 的 Action Code | 00 / 01 / 02 |
| Payload | 可變 | 預留資料欄位 | XX XX … |
-
3 實體操作通訊範例 (以初始密碼 00 00 為例)
1. 連線後登入驗證 (Action: 0x00)
- 軟體發送 (Input):
B0 0x01 0x00 [00 00] (00 00 為密碼)
- 驗證成功 (Output):
B0 0x01 0x01 0x00 (Status 01: 成功)
- 忙碌/錯誤 (Output): 已通訊例外處理
2. 登入成功後修改密碼 (Action: 0x01)
- 軟體發送 (Input):
B0 0x01 0x01 [00 00] [01 23] (原密碼 00 00 + 新密碼 01 23)
- 修改成功 (Output):
B0 0x01 0x01 0x01 (Status 01: 成功)
- 忙碌/錯誤 (Output): 已通訊例外處理
3. 忘記密碼之重製機制 (Action: 0x02)
- 通訊與實體觸發邏輯: 【細節待討論,如有辦法希望已硬體重製為主】
- Canbus modbus
BLE Connection Exception Communication
-
1 基本 Output 封包格式 (MCU Slave ➔ S/W Master)
| 欄位名稱 (Col. Name) | 長度 (Byte) | 說明 (Description) | 範例 (Hex) |
|---|
| Start Code | 1 | 固定為 0xB0 | B0 |
| Func Code | 1 | 觸發例外之原功能碼(如 0x01 或 0x03) | 01 / 03… |
| Status | 1 | 執行狀態結果:
0x00: 失敗 / 系統忙碌 (False/Busy)
0x01: 成功 (True)
0x02: 錯誤 (Error) | 02 |
| Payload | 可變 | 【錯誤原因定義碼】:
0x00: 設備端忙碌(無法回應 Busy)
0x01: 非法功能碼 (Func Code 錯誤)
0x02: 非法暫存器位址 (Address 錯誤)
0x03: 非法資料數量 (Quantity 超過 125)
0x04: 未經授權 (未登入即企圖操作功能碼 0x03) | 04 |
-
2 實體操作通訊範例
1. 未登入驗證,就企圖發送 Func 03 讀取暫存器 (越權操作)
- 軟體發送 (Input):
B0 03 10 00 00 1B XX XX
- MCU 回應 (Output):
B0 03 02 04
(解讀:Func=03, Status=02錯誤, Payload=04未經授權)
2. 發送 Func 03 讀取暫存器,但數量超過上限 125 (長度錯誤)
- 軟體發送 (Input):
B0 03 10 00 00 C8 XX XX (Quantity 200)
- MCU 回應 (Output):
B0 03 02 03
(解讀:Func=03, Status=02錯誤, Payload=03長度超標)
3. 進行 Func 01 登入,但密碼輸入錯誤 (驗證失敗)
- 軟體發送 (Input):
B0 01 00 [99 99] (密碼給錯)
- MCU 回應 (Output):
B0 01 02 00
(解讀:Func=01, Status=02錯誤, Payload=00忙碌)