
Sniffer Bluetooth 5 y 4.x LE para hardware TI CC1352/CC26x2 con soporte para publicidad extendida, todos los modos PHY, filtrado MAC/RSSI y exportación PCAP compatible con Wireshark.
Sniffle es un sniffer para Bluetooth 5 y 4.x (LE) que utiliza hardware TI CC1352/CC26x2.
Sniffle tiene varias características útiles, que incluyen:
Si no quieres pasar por el esfuerzo de configurar un entorno de compilación para el firmware, puedes simplemente flashear binarios de firmware precompilados usando UniFlash/DSLite. Los binarios de firmware precompilados están adjuntos a las versiones en la pestaña de versiones de GitHub de este proyecto. Al usar firmware precompilado, asegúrate de usar el código Python correspondiente a la etiqueta de la versión, no la rama master, para evitar problemas de compatibilidad con el firmware que está detrás de la rama master.
El arm-none-eabi-gcc proporcionado a través del gestor de paquetes de varias distribuciones de Linux a menudo carece de algunos archivos de cabecera o requiere algunos cambios en la configuración del enlazador. Para mínimas complicaciones, sugiero usar el ARM GCC enlazado arriba. Puedes simplemente descargar y extraer los ejecutables precompilados.
El SDK de TI se proporciona como un binario ejecutable que extrae un montón de código fuente una vez que aceptas el acuerdo de licencia. En Linux y Mac, el directorio de instalación predeterminado está dentro de ~/ti/. Esto funciona bien y mis makefiles esperan esta ruta, así que sugiero simplemente usar el valor predeterminado aquí. Lo mismo aplica para la herramienta TI SysConfig.
Una vez que el SDK ha sido extraído, necesitarás editar un makefile para que coincida con tu entorno de compilación. Dentro de ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 (o donde sea que se haya instalado el SDK) hay un makefile llamado imports.mak. Las únicas rutas que deben configurarse aquí para compilar Sniffle son para GCC, XDC, cmake y SysConfig. No necesitamos el compilador CCS. Mira el diff a continuación como ejemplo, y adáptalo para donde instalaste las cosas.```
diff --git a/imports.mak b/imports.mak
index b2cf5bf59..389d1a7c3 100644
--- a/imports.mak
+++ b/imports.mak
@@ -18,14 +18,14 @@
-XDC_INSTALL_DIR ?= /home/username/ti/xdctools_3_62_01_15_core -SYSCONFIG_TOOL ?= /home/username/ti/ccs1270/ccs/utils/sysconfig_1.21.1/sysconfig_cli.sh +XDC_INSTALL_DIR ?= $(HOME)/ti/xdctools_3_62_01_15_core +SYSCONFIG_TOOL ?= $(HOME)/ti/sysconfig_1.21.1/sysconfig_cli.sh
-CMAKE ?= /home/username/cmake-3.21.3/bin/cmake +CMAKE ?= cmake PYTHON ?= python3
TICLANG_ARMCOMPILER ?= /home/username/ti/ccs1270/ccs/tools/compiler/ti-cgt-armllvm_3.2.2.LTS-0 -GCC_ARMCOMPILER ?= /home/username/arm-none-eabi-gcc/12.3.Rel1-0 +GCC_ARMCOMPILER ?= $(HOME)/arm_tools/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi IAR_ARMCOMPILER ?= /home/username/iar9.50.2
A partir de la versión 8.30.01.01 del SDK, para compilar con versiones recientes de GCC (y binutils),
es necesaria una pequeña modificación al SDK para evitar errores de enlace
"Unknown destination type (ARM/Thumb)" y "dangerous relocation: unsupported relocation".```
diff --git a/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s b/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
index 187cfd744..4cbf0d384 100644
--- a/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
+++ b/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
@@ -236,6 +236,7 @@ lab$1:
@ user code has set the PRIMASK and not cleared it, or when single
@ stepping with interrupts disabled.
+.type ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe, %function
ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe:
b ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe
diff --git a/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s b/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
index 717f49c9a..1c83ed725 100644
--- a/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
+++ b/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
@@ -226,6 +226,7 @@ lab$1:
@ user code has set the PRIMASK and not cleared it, or when single
@ stepping with interrupts disabled.
+.type ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe, %function
ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe:
b ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe
Después de realizar esta modificación, necesitarás recompilar el SDK.``` cd ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 make build-gcc -j5
### Obteniendo DSLite
DSLite es la herramienta de servidor de depuración y programación en línea de comandos de TI para depuradores XDS110. Las placas Launchpad CC26xx y CC13xx incluyen depuradores XDS110. Desafortunadamente, TI no proporciona una descarga independiente de DSLite para línea de comandos. La forma más sencilla de obtener DSLite es instalar [UniFlash](http://www.ti.com/tool/download/UNIFLASH) de TI. Está disponible para Linux, Mac y Windows. El ejecutable de DSLite se encontrará en `deskdb/content/TICloudAgent/linux/ccs_base/DebugServer/bin/DSLite` relativo al directorio de instalación de UniFlash. En Linux, el directorio de instalación predeterminado de UniFlash está dentro de `~/ti/`.
Debe colocar el directorio del ejecutable de DSLite dentro de su `$PATH`.
## Construcción del Firmware