前言
前段時間嘗試用虛擬機器安裝 Ubuntu 系統和一款軟硬件開源的藍芽抓包器 Ubertooth One 來搭建藍芽嗅探環境,從官方推薦的 Ubuntu16.04 版本一直測試到 22.04 版本,看似簡單的藍芽環境嗅探,搭建過程卻遇到各種問題,如各版本報錯不一致,外掛程式安裝失敗,ubertooth 固件問題等,查閱了很多材料,嘗試了很久都沒有成功,想到手頭還有個樹莓派,考慮到會有 wireshark 等界面互動連線了個 3.5 寸螢幕。
樹莓派環境境說明
樹莓派型號:樹莓派4B
作業系統:Raspberry Pi OS 2023-05-03-raspios-bullseye/ Debian GNU/Linux 11 (bullseye)
Ubertooth 固件版本:ubertooth 2018-12-R1(更新固件後 ubertooth 2020-12-R1)
ubertooth tools 版本:libubertooth 1.1 (2020-12-R1), libbtbb 1.0 (2018-06-R1)
Wireshark版本:Version 3.4.10 (Git v3.4.10 packaged as 3.4.10-0+deb11u1)
樹莓派系統安裝
樹莓派安裝過程比較簡單,簡述一下。
1、下載官網燒錄軟件
官方網站:https://www.raspberrypi.com/software/
2、按需燒錄樹莓派系統
3、燒錄時提前配置開啟 ssh、wifi
4、將燒錄好的儲存卡插入到樹莓派中
此時就可以ssh連線樹莓派,如果有需要螢幕的情況比如 wireshark 圖形界面等,可以連線內建的 hdmi 線到顯示器上,如果覺得連線顯示器有些麻煩,想用vnc連線遠端桌面
5、VNC連線
終端輸入命令sudo raspi-config,會彈出一個界面 選擇 Interface Options -> VNC-> enable -> YES 即可開啟 vnc。
6、調整臨時分辨率
但預設連線vnc分辨率會比較小,無法看清螢幕內容 可以透過終端輸入以下命令臨時調整vnc分辨率,下次重新開機後失效。
vncserver -geometry 1920x1080
vnc 連線是地址後加 :1 選擇通道 1,例如 192.168.1.1:1 即可連線,但 192.168.1.1 仍可正常連線 vnc。
藍芽協定簡介
藍芽低能耗(Bluetooth Low Energy,或稱 Bluetooth LE、BLE,舊商標 Bluetooth Smart)也稱低功耗藍芽,是藍芽技術聯盟設計和銷售的一種個人區域網路技術,旨在用於醫療保健、運動健身、信標、安防、家庭娛樂等領域的新興套用。相較經典藍芽,低功耗藍芽旨在保持同等通訊範圍的同時顯著降低功耗和成本。
傳統藍芽和低功耗藍芽對比:
低功耗藍芽(Low Energy; LE),又視為 Bluetooth Smart 或藍芽核心規格 4.0 版本。其特點具備節能、便於采用,是藍芽技術專為物聯網(Internet of Things; IOT)開發的技術版本。
BLE 主打功能是快速搜尋,快速連線,超低功耗保持連線和傳輸數據,弱點是數據傳輸速率低,由於BLE的低功耗特點,因此普遍用於穿戴器材。
BLE 優點
1、高可靠性
對於無線通訊而言,由於電磁波在傳輸過程中容易受很多因素的幹擾,例如,障礙物的阻擋、天氣狀況等,因此,無線通訊系統在數據傳輸過程中具有內在的不可靠性。藍芽技術聯盟 SIG 在指定藍芽 4.0 規範時已經考慮到了這種數據傳輸過程中的內在的不確定性,在射頻,基頻協定,鏈路管理協定中采用可靠性措施,包括:差錯檢測和矯正,進行數據編解碼,數據降噪等,極大地提高了藍芽無線數據傳輸的可靠性,另外,使用自適應調頻技術,能最大程度地減少和其他 2.4G 無線電波的串擾。
2、低成本、低功耗
低功耗藍芽支持兩種部署方式:雙模式和單模式,一般智能機上采用雙模式,外設一般采用 BLE 單模。
低功耗設計:藍芽 4.0 版本強化了藍芽在數據傳輸上的低功耗效能,功耗較傳統藍芽降低了 90%。
傳統藍芽器材的待機耗電量一直是其缺陷之一,這與傳統藍芽技術采用16至32個頻道進行廣播有很大關系,而低功耗藍芽僅適用 3 個廣播通道,且每次廣播時射頻的開啟時間也有傳統的 22.5ms 減少到 0.6~1.2ms,這兩個協定規範的改變,大幅降低了因為廣播數據導致的待機功耗。
低功耗藍芽設計用深度睡眠狀態來替換傳統藍芽的空閑狀態,在深度睡眠狀態下,主機 Host 長時間處於超低的負載迴圈 Duty Cycle 狀態,只在需要運作時由控制器來啟動,由於主機較控制器消耗的能源更多,因此這樣的設計也節省了更多的能源。
3、快速啟動/瞬間連線
此前藍芽版本的啟動速度非常緩慢,2.1 版本的藍芽啟動連線需要 6s 時間,而藍芽4.0版本僅需要3ms 即可完成。
4、傳輸距離增強
傳統藍芽傳輸距離一般為 2-10 米,而藍芽4.0的有效傳輸距離可以達到 60~100米,傳輸距離大大提高,極好的開拓了藍芽技術的套用前景。
環境安裝
測試發現內建源速度還是挺快的,這裏就不用換源了。
1、安裝依賴
可以透過 sudo passwd root 重設下 root 密碼後再執行 sudo。
sudo apt-get install cmake libusb-1.0-0-dev make gcc g++ libbluetooth-dev \pkg-config libpcap-dev python-numpy python-pyside python-qt4
2、安裝 libbtbb
wget https://github.com/greatscottgadgets/libbtbb/archive/2020-12-R1.tar.gz -O libbtbb-2020-12-R1.tar.gztar -xf libbtbb-2020-12-R1.tar.gzcd libbtbb-2020-12-R1mkdir buildcd buildcmake ..makesudo make installsudo ldconfig
3、安裝 Ubertooth tools
wget https://github.com/greatscottgadgets/ubertooth/releases/download/2020-12-R1/ubertooth-2020-12-R1.tar.xztar -xf ubertooth-2020-12-R1.tar.xzcd ubertooth-2020-12-R1/hostmkdir buildcd buildcmake ..makesudo make installsudo ldconfig
4、安裝 wireshark 及 ubertooth 外掛程式:
sudo apt-get install wireshark wireshark-dev libwireshark-dev cmakecd libbtbb-2020-12-R1/wireshark/plugins/btbmkdir buildcd buildcmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/arm-linux-gnueabihf/wireshark/plugins/ ..makesudo make install
5、安裝 wireshark 藍芽外掛程式
sudo apt-get install wireshark wireshark-dev libwireshark-dev cmakecd libbtbb-2020-12-R1/wireshark/plugins/btbredrmkdir buildcd buildcmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/arm-linux-gnueabihf/wireshark/plugins/ ..makesudo make install
6、添加 wireshark 許可權
sudo groupadd wiresharksudo chgrp wireshark /usr/bin/dumpcapsudo chmod 4755 /usr/bin/dumpcapsudo gpasswd -a 你的使用者名稱 wireshark
重新整理固件
安裝好上述環境之後,如果你的 Ubertooth one 是之前買的,是需要更新一下固件版本:
檢視一下當前固件版本:ubertooth-util -v
如果不是最新版本固件可以進入到之前下載的 ubertooth-2020-12-R1 資料夾下,找到 bluetooth_rxtx.dfu 檔。
cd ubertooth-2020-12-R1/ubertooth-one-firmware-bin/ubertooth-dfu -d bluetooth_rxtx.dfu -r
執行重新整理固件命令,器材將自動進入DFU模式並重新整理固件。
如果上訴操作沒有成功,可以嘗試將圖中器材短接一下再進行固件重新整理命令圖片
固件更新完成後可以再次透過 ubertooth-util -v 檢視固件版本,檢視是否已更新固件成功。
tips
如果最後出現 control message unsupported,則意味著更新固件失敗。可以透過執行 ubertooth-util -r 或重新拔插 Ubertooth 後再進行固件更新。
開始嗅探
使用 ubertooth-btle 進行掃描,在 Wireshark 中捕獲 BLE 數據。
1、終端執行命令:mkfifo /tmp/pipe 建立管道檔
2、開啟 Wireshark,單擊捕獲(Capture)->選項(Options)點選視窗右側的管理介面(Manage Interfaces)按鈕。
在管道(Pipe)文本框中,鍵入 「/tmp/pipe」,單擊 OK 保存後點選「開始」,完成後在終端中,執行 ubertooth-btle:
ubertooth-btle -f -c /tmp/pipe
在 Wireshark 視窗中,可以看到封包捲動。
可以使用 ubertooth-btle -f -c test.pcap 抓包並保存到本地。
直接匯入 wireshark 可能會顯示不正常,需要對 wireshark 進行一些配置。
1、單擊編輯(Edit)->參數設定(Preferences)
2、單擊協定(Protocols)-> DLT_USER
3、單擊編輯,點選加號(+),在DLT下,選擇「使用者0(DLT = 147),在有效載荷協定下,輸入:btle
配置完成後,直接在 wireshark 中開啟即可圖片。
使用 hcitool 進行掃描
常用命令 hcitool scan : 掃描附近藍芽器材。
hcitool lescan : 掃描附近低功耗藍芽器材。
使用 bluetoothctl 進行掃描
bluetoothctlscan on