本章以生活中常見的藍(lán)牙4.0協(xié)議為例,講解一下如何獲取一個藍(lán)牙硬件相關(guān)的連接信息,使得D探長APP可以連接硬件。
如果我們獲得一個開源藍(lán)牙設(shè)備,可以找到對應(yīng)的資料,那么我們可以很容易的獲取藍(lán)牙的連接信息。
主要有藍(lán)牙名稱、 Service UUID(藍(lán)牙發(fā)現(xiàn)服務(wù))、Notify\Write UUID(?通知\寫入屬性)、Write UUID(寫入屬性)

在文檔中找到這些數(shù)據(jù)后,使用D探長這款A(yù)PP,在“連接藍(lán)牙設(shè)備”-“自定義藍(lán)牙設(shè)備”-“添加設(shè)備”的功能項(xiàng)中按照對應(yīng)內(nèi)容添加連接項(xiàng),搜索到藍(lán)牙硬件后,選擇名稱、選擇對應(yīng)的UUID、填入藍(lán)牙的指令(可以填寫字符串或數(shù)組),就可以遠(yuǎn)程或通過AI控制硬件了。

如果我們不知道藍(lán)牙硬件的相關(guān)數(shù)據(jù)和指令怎么辦呢? 也有方法解決,需要借助一臺舊的安卓手機(jī),最好是5.0、6.0版本的安卓手機(jī),其他版本可能被屏蔽了相關(guān)功能,以及電腦上的Wireshark軟件。首先手機(jī)進(jìn)入開發(fā)者模式,將打開藍(lán)牙數(shù)據(jù)包日志、打開藍(lán)牙調(diào)試日志這2個功能啟用。此時用藍(lán)牙硬件的配套軟件連接并控制一遍,我們可以得到一個btsnoop_hci.log文件,這個文件里面就記錄了配套軟件連接硬件的藍(lán)牙數(shù)據(jù),里面有我們需要的信息。


將btsnoop_hci.log文件拷貝到電腦上,用Wireshark軟件打開。在手機(jī)上操作過硬件的指令,所以我們直接看發(fā)送給硬件數(shù)據(jù)及接收數(shù)據(jù)的相關(guān)信息。

Rcvd Write Response是從硬件接收到數(shù)據(jù)的內(nèi)容,在這里可以找到設(shè)備名稱、Service UUID(藍(lán)牙發(fā)現(xiàn)服務(wù))、Notify UUID(?通知屬性)

Sent Write Request是由手機(jī)發(fā)送指令給硬件,這里面可以找到Write UUID(寫入屬性)及實(shí)際寫入的數(shù)據(jù),但實(shí)際寫入的數(shù)據(jù)我們需要轉(zhuǎn)換一下,Value字段里面的值實(shí)際是16進(jìn)制的數(shù)組["aa","08","01","01","05","ff","ff","02","0d","55"], 我們在網(wǎng)上找個16進(jìn)制轉(zhuǎn)10進(jìn)制的工具,把里面的值換成10進(jìn)制數(shù)組[170, 08, 1, 1, 05, 255, 255, 02, 13, 85], 這樣我們就有了完整的數(shù)據(jù)。在D探長APP內(nèi)選擇或填入對應(yīng)的數(shù)據(jù)即可控制硬件。
