
Sniffer Bluetooth 5 e 4.x LE per hardware TI CC1352/CC26x2 con supporto per extended advertising, tutte le modalità PHY, filtraggio MAC/RSSI ed esportazione PCAP compatibile con Wireshark.
Sniffle è uno sniffer per Bluetooth 5 e 4.x (LE) che utilizza hardware TI CC1352/CC26x2.
Sniffle ha una serie di funzionalità utili, tra cui:
Se non vuoi affrontare la fatica di configurare un ambiente di build per il firmware, puoi semplicemente flashare i binari del firmware precompilati usando UniFlash/DSLite. I binari del firmware precompilati sono allegati alle release nella scheda release di GitHub di questo progetto. Quando usi il firmware precompilato, assicurati di usare il codice Python corrispondente al tag della release piuttosto che il ramo master per evitare problemi di compatibilità con un firmware che è indietro rispetto al ramo master.
L'arm-none-eabi-gcc fornito tramite i gestori di pacchetti delle varie distribuzioni
Linux spesso manca di alcuni file header o richiede alcune modifiche alla configurazione
del linker. Per evitare problemi, suggerisco di usare il GCC ARM collegato sopra.
Puoi semplicemente scaricare ed estrarre gli eseguibili precompilati.
Il TI SDK è fornito come binario eseguibile che estrae una serie di codice
sorgente una volta accettato il contratto di licenza. Su Linux e Mac, la directory
di installazione predefinita è ~/ti/. Questo funziona bene e i miei makefile
si aspettano questo percorso, quindi suggerisco di seguire l'impostazione predefinita. Lo stesso
vale per lo strumento TI SysConfig.
Una volta estratto l'SDK, dovrai modificare un makefile per adattarlo
al tuo ambiente di build. All'interno di ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01
(o ovunque sia stato installato l'SDK) c'è un makefile chiamato imports.mak.
Gli unici percorsi che devono essere impostati qui per compilare Sniffle sono quelli per GCC,
XDC, cmake e SysConfig. Non abbiamo bisogno del compilatore CCS. Vedi il diff qui sotto
come esempio e adattalo a dove hai installato le cose.```
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 partire dalla versione SDK 8.30.01.01, per compilare con versioni recenti di GCC (e binutils),
è necessaria una piccola modifica all'SDK per evitare errori di linking
"Unknown destination type (ARM/Thumb)" e "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
Dopo aver apportato questa modifica, dovrai ricompilare l'SDK.``` cd ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 make build-gcc -j5
### Ottenere DSLite
DSLite è lo strumento da riga di comando di TI per la programmazione e il debug dei debugger XDS110. Le schede Launchpad CC26xx e CC13xx includono entrambe debugger XDS110. Purtroppo TI non fornisce un download standalone da riga di comando di DSLite. Il modo più semplice per ottenere DSLite è installare [UniFlash](http://www.ti.com/tool/download/UNIFLASH) da TI. È disponibile per Linux, Mac e Windows. L'eseguibile DSLite si troverà in `deskdb/content/TICloudAgent/linux/ccs_base/DebugServer/bin/DSLite` relativo alla directory di installazione di UniFlash. Su Linux, la directory di installazione predefinita di UniFlash è dentro `~/ti/`.
Dovresti inserire la directory dell'eseguibile DSLite nel tuo `$PATH`.
## Compilazione del Firmware
Una volta che GCC, DSLite e l'SDK sono installati e funzionanti, compilare Sniffle dovrebbe essere semplice. Basta navigare nella directory `fw` ed eseguire `make`. Se non hai installato l'SDK nella directory predefinita, potresti dover modificare `SIMPLELINK_SDK_INSTALL_DIR` nel makefile.