From d14d06e5084df99af212b85724238a1d243b1b4a Mon Sep 17 00:00:00 2001 From: Xianjun Jiao Date: Thu, 13 May 2021 17:45:39 +0200 Subject: [PATCH] CSI fuzzer feature -- document to be finished --- README.md | 5 +- doc/app_notes/README.md | 1 + .../csi-fuzzer-beacon-ant-back-0.jpg | Bin 0 -> 81161 bytes .../csi-fuzzer-beacon-ant-back-1-45-0-13.jpg | Bin 0 -> 88588 bytes doc/app_notes/csi_fuzzer.md | 15 +++ driver/hw_def.h | 6 +- driver/tx_intf/tx_intf.c | 14 +-- user_space/csi_fuzzer.sh | 61 ++++++++++ user_space/csi_fuzzer_scan.sh | 110 ++++++++++++++++++ 9 files changed, 200 insertions(+), 12 deletions(-) create mode 100644 doc/app_notes/csi-fuzzer-beacon-ant-back-0.jpg create mode 100644 doc/app_notes/csi-fuzzer-beacon-ant-back-1-45-0-13.jpg create mode 100644 doc/app_notes/csi_fuzzer.md create mode 100755 user_space/csi_fuzzer.sh create mode 100755 user_space/csi_fuzzer_scan.sh diff --git a/README.md b/README.md index c6eedf7..c351780 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,9 @@ Openwifi code has dual licenses. AGPLv3 is the opensource license. For non-opens - Mode tested: Ad-hoc; Station; AP, Monitor - DCF (CSMA/CA) low MAC layer in FPGA (10us SIFS is achieved) - [802.11 packet injection and fuzzing](doc/app_notes/inject_80211.md) -- CSI (Channel State Information, freq offset, equalizer to computer) [[CSI notes](doc/app_notes/csi.md)] -- IQ capture (real-time AGC, RSSI, IQ sample to computer) [[IQ notes](doc/app_notes/iq.md)][[IQ notes for dual antenna](doc/app_notes/iq_2ant.md)] +- [CSI](doc/app_notes/csi.md): Channel State Information, freq offset, equalizer to computer +- [CSI fuzzer](doc/app_notes/csi_fuzzer.md): Create fake CSI in WiFi transmitter +- [[IQ capture](doc/app_notes/iq.md)]: real-time AGC, RSSI, IQ sample to computer. [[Dual antenna version](doc/app_notes/iq_2ant.md)] - Configurable channel access priority parameters: - duration of RTS/CTS, CTS-to-self - SIFS/DIFS/xIFS/slot-time/CW/etc diff --git a/doc/app_notes/README.md b/doc/app_notes/README.md index 6e0ffcd..56226fb 100644 --- a/doc/app_notes/README.md +++ b/doc/app_notes/README.md @@ -14,3 +14,4 @@ Application notes collect many small topics about using openwifi in different sc - [Capture dual antenna TX/RX IQ for multi-purpose (capture collision)](iq_2ant.md) - [IEEE 802.11n (Wi-Fi 4)](ieee80211n.md) - [802.11 packet injection and fuzzing](inject_80211.md) +- [CSI fuzzer](csi_fuzzer.md) diff --git a/doc/app_notes/csi-fuzzer-beacon-ant-back-0.jpg b/doc/app_notes/csi-fuzzer-beacon-ant-back-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce8a2b63a23575e0e88e262f4f8efbf0007b5ea3 GIT binary patch literal 81161 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 DHdvVi literal 0 HcmV?d00001 diff --git a/doc/app_notes/csi_fuzzer.md b/doc/app_notes/csi_fuzzer.md new file mode 100644 index 0000000..c3bebbc --- /dev/null +++ b/doc/app_notes/csi_fuzzer.md @@ -0,0 +1,15 @@ + + +Coming soon for details. + +CSI over the air loopback before fuzzing. + +![](./csi-fuzzer-beacon-ant-back-0.jpg) + +CSI over the air loopback after fuzzing command: csi_fuzzer.sh 1 45 0 13 + +![](./csi-fuzzer-beacon-ant-back-1-45-0-13.jpg) diff --git a/driver/hw_def.h b/driver/hw_def.h index d99b5be..01d9cee 100644 --- a/driver/hw_def.h +++ b/driver/hw_def.h @@ -27,7 +27,7 @@ const char *tx_intf_compatible_str = "sdr,tx_intf"; #define TX_INTF_REG_WIFI_TX_MODE_ADDR (2*4) #define TX_INTF_REG_IQ_SRC_SEL_ADDR (3*4) #define TX_INTF_REG_CTS_TOSELF_CONFIG_ADDR (4*4) -#define TX_INTF_REG_START_TRANS_TO_PS_MODE_ADDR (5*4) +#define TX_INTF_REG_CSI_FUZZER_ADDR (5*4) #define TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_ADDR (6*4) #define TX_INTF_REG_MISC_SEL_ADDR (7*4) #define TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_ADDR (8*4) @@ -71,7 +71,7 @@ struct tx_intf_driver_api { u32 (*TX_INTF_REG_WIFI_TX_MODE_read)(void); u32 (*TX_INTF_REG_IQ_SRC_SEL_read)(void); u32 (*TX_INTF_REG_CTS_TOSELF_CONFIG_read)(void); - u32 (*TX_INTF_REG_START_TRANS_TO_PS_MODE_read)(void); + u32 (*TX_INTF_REG_CSI_FUZZER_read)(void); u32 (*TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_read)(void); u32 (*TX_INTF_REG_MISC_SEL_read)(void); u32 (*TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_read)(void); @@ -91,7 +91,7 @@ struct tx_intf_driver_api { void (*TX_INTF_REG_WIFI_TX_MODE_write)(u32 value); void (*TX_INTF_REG_IQ_SRC_SEL_write)(u32 value); void (*TX_INTF_REG_CTS_TOSELF_CONFIG_write)(u32 value); - void (*TX_INTF_REG_START_TRANS_TO_PS_MODE_write)(u32 value); + void (*TX_INTF_REG_CSI_FUZZER_write)(u32 value); void (*TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_write)(u32 value); void (*TX_INTF_REG_MISC_SEL_write)(u32 value); void (*TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_write)(u32 value); diff --git a/driver/tx_intf/tx_intf.c b/driver/tx_intf/tx_intf.c index 737036c..c856d15 100644 --- a/driver/tx_intf/tx_intf.c +++ b/driver/tx_intf/tx_intf.c @@ -56,8 +56,8 @@ static inline u32 TX_INTF_REG_CTS_TOSELF_CONFIG_read(void){ return reg_read(TX_INTF_REG_CTS_TOSELF_CONFIG_ADDR); } -static inline u32 TX_INTF_REG_START_TRANS_TO_PS_MODE_read(void){ - return reg_read(TX_INTF_REG_START_TRANS_TO_PS_MODE_ADDR); +static inline u32 TX_INTF_REG_CSI_FUZZER_read(void){ + return reg_read(TX_INTF_REG_CSI_FUZZER_ADDR); } static inline u32 TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_read(void){ @@ -134,8 +134,8 @@ static inline void TX_INTF_REG_CTS_TOSELF_CONFIG_write(u32 value){ reg_write(TX_INTF_REG_CTS_TOSELF_CONFIG_ADDR, value); } -static inline void TX_INTF_REG_START_TRANS_TO_PS_MODE_write(u32 value){ - reg_write(TX_INTF_REG_START_TRANS_TO_PS_MODE_ADDR, value); +static inline void TX_INTF_REG_CSI_FUZZER_write(u32 value){ + reg_write(TX_INTF_REG_CSI_FUZZER_ADDR, value); } static inline void TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_write(u32 value){ @@ -283,7 +283,7 @@ static inline u32 hw_init(enum tx_intf_mode mode, u32 num_dma_symbol_to_pl, u32 tx_intf_api->TX_INTF_REG_MIXER_CFG_write(mixer_cfg); tx_intf_api->TX_INTF_REG_MULTI_RST_write(0); tx_intf_api->TX_INTF_REG_IQ_SRC_SEL_write(duc_input_ch_sel); - tx_intf_api->TX_INTF_REG_START_TRANS_TO_PS_MODE_write(2); + tx_intf_api->TX_INTF_REG_CSI_FUZZER_write(0); tx_intf_api->TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_write( ((16*10)<<16)|(10*10) );//high 16bit 5GHz; low 16 bit 2.4GHz. counter speed 10MHz is assumed tx_intf_api->TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_write(num_dma_symbol_to_pl); @@ -338,7 +338,7 @@ static int dev_probe(struct platform_device *pdev) tx_intf_api->TX_INTF_REG_WIFI_TX_MODE_read=TX_INTF_REG_WIFI_TX_MODE_read; tx_intf_api->TX_INTF_REG_IQ_SRC_SEL_read=TX_INTF_REG_IQ_SRC_SEL_read; tx_intf_api->TX_INTF_REG_CTS_TOSELF_CONFIG_read=TX_INTF_REG_CTS_TOSELF_CONFIG_read; - tx_intf_api->TX_INTF_REG_START_TRANS_TO_PS_MODE_read=TX_INTF_REG_START_TRANS_TO_PS_MODE_read; + tx_intf_api->TX_INTF_REG_CSI_FUZZER_read=TX_INTF_REG_CSI_FUZZER_read; tx_intf_api->TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_read=TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_read; tx_intf_api->TX_INTF_REG_MISC_SEL_read=TX_INTF_REG_MISC_SEL_read; tx_intf_api->TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_read=TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_read; @@ -358,7 +358,7 @@ static int dev_probe(struct platform_device *pdev) tx_intf_api->TX_INTF_REG_WIFI_TX_MODE_write=TX_INTF_REG_WIFI_TX_MODE_write; tx_intf_api->TX_INTF_REG_IQ_SRC_SEL_write=TX_INTF_REG_IQ_SRC_SEL_write; tx_intf_api->TX_INTF_REG_CTS_TOSELF_CONFIG_write=TX_INTF_REG_CTS_TOSELF_CONFIG_write; - tx_intf_api->TX_INTF_REG_START_TRANS_TO_PS_MODE_write=TX_INTF_REG_START_TRANS_TO_PS_MODE_write; + tx_intf_api->TX_INTF_REG_CSI_FUZZER_write=TX_INTF_REG_CSI_FUZZER_write; tx_intf_api->TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_write=TX_INTF_REG_CTS_TOSELF_WAIT_SIFS_TOP_write; tx_intf_api->TX_INTF_REG_MISC_SEL_write=TX_INTF_REG_MISC_SEL_write; tx_intf_api->TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_write=TX_INTF_REG_NUM_DMA_SYMBOL_TO_PL_write; diff --git a/user_space/csi_fuzzer.sh b/user_space/csi_fuzzer.sh new file mode 100755 index 0000000..90d8aa1 --- /dev/null +++ b/user_space/csi_fuzzer.sh @@ -0,0 +1,61 @@ + +#!/bin/bash + +# Author: Xianjun Jiao +# SPDX-FileCopyrightText: 2021 UGent +# SPDX-License-Identifier: AGPL-3.0-or-later + +if [ "$#" -lt 4 ]; then + echo "You must enter 4 arguments: c1_rot90_en c1_raw(-64 to 63) c2_rot90_en c2_raw(-64 to 63)" + exit 1 +fi + +c1_rot90_en=$1 +c1_raw=$2 +c2_rot90_en=$3 +c2_raw=$4 + +if (($c1_rot90_en != 0)) && (($c1_rot90_en != 1)); then + echo "c1_rot90_en must be 0 or 1!" + exit 1 +fi + +if (($c1_raw < -64)) || (($c1_raw > 63)); then + echo "c1_raw must be -64 to 63!" + exit 1 +fi + +if (($c2_rot90_en != 0)) && (($c2_rot90_en != 1)); then + echo "c2_rot90_en must be 0 or 1!" + exit 1 +fi + +if (($c2_raw < -64)) || (($c2_raw > 63)); then + echo "c2_raw must be -64 to 63!" + exit 1 +fi + +if (($c1_raw < 0)); then + unsigned_c1=$(expr 128 + $c1_raw) +# echo $unsigned_c1 +else + unsigned_c1=$c1_raw +fi + +if (($c2_raw < 0)); then + unsigned_c2=$(expr 128 + $c2_raw) +# echo $unsigned_c2 +else + unsigned_c2=$c2_raw +fi + +# echo $c1_rot90_en +# echo $unsigned_c1 +# echo $c2_rot90_en +# echo $unsigned_c2 + +unsigned_dec_combined=$(($unsigned_c1 + 512 * $c1_rot90_en + 1024 * $unsigned_c2 + 524288 * $c2_rot90_en)) +# echo $unsigned_dec_combined + +echo "./sdrctl dev sdr0 set reg tx_intf 5 $unsigned_dec_combined" +./sdrctl dev sdr0 set reg tx_intf 5 $unsigned_dec_combined diff --git a/user_space/csi_fuzzer_scan.sh b/user_space/csi_fuzzer_scan.sh new file mode 100755 index 0000000..28b0260 --- /dev/null +++ b/user_space/csi_fuzzer_scan.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +# Author: Xianjun Jiao +# SPDX-FileCopyrightText: 2021 UGent +# SPDX-License-Identifier: AGPL-3.0-or-later + +if [ "$#" -lt 1 ]; then + echo "You must enter 1 arguments: 1, 2, 3 or 4. For scan c1, c2, c2&c1 or c1&c2," + exit 1 +fi + +SCAN_OPTION=$1 + +if (($SCAN_OPTION == 1)); then + echo "Scan tap1:" + for j in {-64..63}; + do + for i in {-64..63}; + do + ./csi_fuzzer.sh 0 $i 0 0 + sleep 0.01 + done + for i in {-64..63}; + do + ./csi_fuzzer.sh 1 $i 0 0 + sleep 0.01 + done + done + exit 1 +fi + +if (($SCAN_OPTION == 2)); then + echo "Scan tap2:" + for j in {-64..63}; + do + for i in {-64..63}; + do + ./csi_fuzzer.sh 0 0 0 $i + sleep 0.01 + done + for i in {-64..63}; + do + ./csi_fuzzer.sh 0 0 1 $i + sleep 0.01 + done + done + exit 1 +fi + +if (($SCAN_OPTION == 3)); then + echo "Scan tap1 after tap2:" + for j in {-64..63}; + do + for i in {-64..63}; + do + ./csi_fuzzer.sh 0 $j 0 $i + # sleep 0.1 + done + for i in {-64..63}; + do + ./csi_fuzzer.sh 0 $j 1 $i + # sleep 0.1 + done + done + for j in {-64..63}; + do + for i in {-64..63}; + do + ./csi_fuzzer.sh 1 $j 0 $i + # sleep 0.1 + done + for i in {-64..63}; + do + ./csi_fuzzer.sh 1 $j 1 $i + # sleep 0.1 + done + done + exit 1 +fi + +if (($SCAN_OPTION == 4)); then + echo "Scan tap2 after tap1:" + for j in {-64..63}; + do + for i in {-64..63}; + do + ./csi_fuzzer.sh 0 $i 0 $j + # sleep 0.1 + done + for i in {-64..63}; + do + ./csi_fuzzer.sh 1 $i 0 $j + # sleep 0.1 + done + done + for j in {-64..63}; + do + for i in {-64..63}; + do + ./csi_fuzzer.sh 0 $i 1 $j + # sleep 0.1 + done + for i in {-64..63}; + do + ./csi_fuzzer.sh 1 $i 1 $j + # sleep 0.1 + done + done + exit 1 +fi