【抓包】STM32WB Sniffer
手头的一套P- Nucleo-WB55套件由两个板子组成名称编号核心存储NUCLEO-WB55.NucleoMB1355C-02STM32WB55RG1M Flash256K SRAM(192K SRAM164K SRAM2)NUCLEO-WB55.USBDongleMB1293C-02STM32WB55CGBLE抓包官方只给了NUCLEO-WB55.Nucleo的sniffer固件802.15.4抓包两者官方都给了核心的存储配置如下即BLE用NUCLEO-WB55. USBDongle暂时没法抓包区域地址空间大小Flash0x0800 0000~0x080f ffff1MSRAM1:0x2000 0000~0x2002 ffff2:0x1000 0000~0x1000 ffff或0x2003 0000~0x2003 ffff192k64k256kSystem memory0x1fff 0000~0x1fff 6fff28kOB0x1fff 8000~0x1fff 807f128B下面从FUS升级、BLE抓包、802.15.4抓包分别具体展开。一、FUS升级由于Nucleo板子核心STM32WB55RG是M4应用M0协议双核架构其中M0协议核放在安全区域无法直接被M4核访问但位于System memory区域的厂家bootloader能访问M0安全区域故M4烧录是常规的用户SWD升级M0核需要借助厂家bootloaderFUS来进行交互升级而FUS对版本的要求很严格详细见STM32WB Firmware Upgrade Service - stm32mcu或STM32CubeWB包下的Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/Release_Notes.html取决于核心版本FlashFUS版本升级STM32WB5xC256K0.5.3-1.0.2-1.2.0-2.1.0STM32WB5xE512KSTM32WB5xY640KSTM32WB5xG1M0.5.3-1.0.1-1.2.0-2.1.0这两块板子出厂全是FUSv0.5.3必须要升级这里可以跳过1.0.1或1.0.2。1.准备该阶段不一样NUCLEO-WB55.USBDongle断电状态SW2拨到BOOT0侧此时BOOT01再插入PC上电进入system memory引导boot loader在设备管理器看到“DFU in FS Mode”设备STM32CubeProgrammer工具连接类型切到USB刷新能看到Port出现“USB1”NUCLEO-WB55.Nucleo无需短接CN7.5和CN7.7BOOT1再切换USB_USER供电方式这么麻烦STM32CubeProgrammer工具仅仅连接类型切到ST-link连上即可。然后两者都可以通过切换STM32CubeProgrammer工具到Firmware Upgrade Service页面通过右侧FUS information的“Read FUS infos”得到当前FUS版本、FUS状态、Stack版本等NUCLEO-WB55.USBDongle也可读取0x20030030的内容如上图为00050300即版本为0.5.3前提0x20030000处存有设备共享信息地址0x20030024。FUS的运行状态也可通过SBRV复位矢量寄存器得知运行状态2.FUS升级开始FUS更新阶段了几个版本固件在STM32WBCube包里见STM32CubeWB | Product - STMicroelectronics版本路径名字起始地址FUSv0.5.3--量产出厂自带不提供--FUSv1.2.0STM32Cube_FW_WB_V1.23.0\Projects\STM32WB_Copro_Wireless_Binaries\STM32WB5xstm32wb5x_FUS_fw_for_fus_0_5_3.bin0x080EC000FUSv2.1.0stm32wb5x_FUS_fw.bin0x080EE000在Firmware Upgrade Service页面点击Browser按钮选择stm32wb5x_FUS_fw_for_fus_0_5_3.bin文件按上表输入start address或者勾选“start address automatic determination”自动确定再点击“Firmware Upgrade”更新到v1.2.0后读取下版本确认以下再重复类似步骤选择“stm32wb5x_FUS_fw.bin”文件进行升级到v2.1.0即可二、蓝牙BLE1.硬件环境NUCLEO-WB55.Nucleo的FUS更新到v2.1.0后开始准备sniffer固件M0的协议栈固件和M4的抓包分发应用固件如下https://github.com/stm32-hotspot/STM32WB-BLE-Sniffer下载STM32WB-BLE-Sniffer类型路径起始地址名字M0的协议栈固件STM32WB-BLE-Sniffer\firmware0x080CE000stm32wb55_ble_sniffer_cm0_stack.binM4的抓包分发应用--stm32wb55_ble_sniffer_cm4_app_nucleo.hex然后像更新FUS一样切到Firmware Upgrade Service页面,然后选择“stm32wb55_ble_sniffer_cm0_stack.bin”版本1.17.0文件刷进去M0可以读下stack版本核对一下并一定要点击“Start Wireless Stack”启动协议栈M4的抓包程序就是常规的ST-LINK烧录方式切到“ErasingProgramming”页选择“stm32wb55_ble_sniffer_cm4_app_nucleo.hex”文件点击“Start Programming”按钮即可2.软件环境按照https://wiki.st.com/stm32mcu/wiki/Connectivity:STM32_Sniffer_for_BLE_Setup_guide的指引python/pyserial/libsrc/wireshark/VC相应满足条件的版本已装好然后就是wireshark的插件extcap、偏好profile等的设置了类别Sniffer源路径Wireshark目的位置脚本extcapSTM32WB-BLE-Sniffer\wireshark\extcapPersonal Extcap path插件pluginsSTM32WB-BLE-Sniffer\wireshark\dissectorPersonal Lua Plugin偏好profilesSTM32WB-BLE-Sniffer\wireshark\profile\ST_BLE_Sniffer_profilePersonal configuration将STM32WB-BLE-Sniffer\wireshark\extcap里的文件全部复制到wireshark的“Personal Extcap path”路径下Help-About wireshark-FolderSTM32WB-BLE-Sniffer\wireshark\dissector的文件全部复制到wireshark的“Personal Lua Plugins”路径下再STM32WB-BLE-Sniffer\wireshark\profile\ST_BLE_Sniffer_profile整个文件夹复制到wireshark的“Personal configuration”路径下在wireshark菜单栏选择Edit-Configurations Profiles确认有刚才添加的偏好profiles烧录完的Nucleo-64板子插到PC打开wireshak初始界面看到STM32WB Sniffer device可通过Capture-Refresh Interfaces来刷新接口再在菜单栏点击View-Interface Toolbars勾上STM32WB interface即可3.抓包此时环境搭建完成就可进行抓包了连接包先跟踪所有广播设备再输入目标设备进行过滤就能跟踪连接包三、Thread/ZigBee(802.15.4)IEEE802.15.4这里就Nucleo-64和Dongle全都支持了。按照官方https://wiki.st.com/stm32mcu/wiki/Connectivity:How_to_configure_sniffer_for_802.15.4来就行。要先安装STM32CubeMonitor-RF软件。1.硬件环境M0的协议栈固件和M4的抓包分发应用固件如下在STM32CubeMonitor-RF安装位置处具体在C:\Users\Public\Documents\STMicroelectronics\STM32CubeMonitor-RF\firmwares目录下步骤同BLE部分类型路径起始地址名字M0的协议栈固件Projects\STM32WB_Copro_Wireless_Binaries\STM32WB5x0x080CE000stm32wb5x_Mac_802_15_4_fw.binM4的抓包分发应用C:\Users\Public\Documents\STMicroelectronics\STM32CubeMonitor-RF\firmwares0x08000000Mac_802_15_4_Sniffer_Dongle.bin或Mac_802_15_4_Sniffer_Nucleo.bin然后像更新FUS一样把“stm32wb5x_Mac_802_15_4_fw.bin”版本1.23.0刷进去并启动M4的抓包程序就是常规的ST-LINK烧录方式切到“ErasaingProgramming”页选择Mac_802_15_4_Sniffer_Dongle.bin或Mac_802_15_4_Sniffer_Nucleo.bin文件点击“Start Programming”按钮即可。2.软件环境插件在STM32CubeMonitor-RF安装目录sniffer下的文件全部复制到wireshark的“Personal Extcap path”路径下类别Sniffer源路径Wireshark目的位置脚本extcapSTM32CubeMonitor-RF\snifferPersonal Extcap path3.抓包烧录完的Nucleo-64板子或Dongle插到PC打开wireshak打开STM32CubeMonitor-RF软件选择802.15.4 Sniffer启动会检查前提条件无误点击Launch启动会打开wireshark此时初始界面可以看到STM32CubeMonitorRF 802.15.4 Sniffer device可通过Capture-Refresh Interfaces来刷新接口。同样View-Interface Toolbars勾上STM32CubeMonitorRF 802.15.4 Sniffer然后设置通道为15开始抓包这里外围放置一个ZigBee路由节点设备同为802.15.4标准的Thread抓取两Ot-ftd终端设备的通信信号由于Thread是加密链路需要在Edit-Preferences-Protocols-IEEE802.15.4-Decryption keys输入Thread网络密钥才可解密