日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Monitor模式和AP模式下获取WiFi的CSI信号

發布時間:2024/1/8 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Monitor模式和AP模式下获取WiFi的CSI信号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目的:基于WiFi信號的呼吸和心率檢測


說明:

1、自己的一點實踐記錄,可能有很多地方寫的不好或者不對,望指正

2、獲取到的CSI數據處理過程:https://blog.csdn.net/qq_20386411/article/details/83384614


CSI

是衡量信道情況的信道狀態信息(Channel State Information),屬于PHY層,來自OFDM系統下解碼的子載波。CSI是細粒度的物理信息,對環境更加敏感,所以應用于動作識別,手勢識別,擊鍵識別,跟蹤等領域

CSI由無線信號傳播過程中的動態成分和靜態成分組成,靜態成分包括LOS和靜止的物體,動態成分就是人的呼吸

?

RSS(接收信號強度)采用OFMD(正交頻分復用)得到56個子載波(CSI數據為56個子載波的數據)

CSI相位差數據是和呼吸頻率相同的周期信號

每一組CSI值描述了子載波的振幅和相位以及其它一些關于子信道的信息,若環境中存在人活著人的運動,這會影響到WIFI信號的傳播路徑,所有子載波的CSI值都會被影響。CSI揭示了信道接收信號所經歷的特征,例如多徑效應,陰影衰落和失真

?

?

頻域下的信道模型

求信道狀態信息就是求信道矩陣H

無線信道一般用信道的沖擊響應(Channel?Impulse?Response,CIR)來對信道的多徑效應進行描述,在線性時不變的假設條件下,信道沖擊響應可用下式表示:

?

專業術語

MIMO(Multiple-Input Multiple-Output,多輸入多輸出)技術:指在發射端和接收端分別使用多個發射天線和接收天線,使信號通過發射端與接收端的多個天線傳送和接收,從而改善通信質量(MIMO technology is utilized toextend the complementarity property to commodity WiFi.兩個主機非同步問題導致接收主機接收的信號產生相位偏移,最直觀的 就是是幅度和相位圖像不能互補)

NIC:網絡接口卡(5300網卡),Intel 5300 NIC只能反映出CSI56個子載波中的30個

OFDM(orthogonal frequency division modulation):總頻譜被劃分為多個正交的子載波,無線數據使用相同的調制和編碼方法在子載波上傳輸(OFDM splits its spectrum band (20 MHz) into multiple (56) frequency sub-bands,called subcarriers, and sends the digital bits through these subcarriers in parallel)

CFR:信道頻率響應,The CSI represents the Channel Frequency Response (CFR) for each subcarrier between transmit-receive antenna pairs

?

實驗工具:

主機2臺,intel 5300網卡

兩臺主機均安裝12.04Ubantu系統

簡化版的CIS Tool安裝包:intel-5300-csi-github-master

UltralSO軟件:用于制作ubantu的U盤

Sublime text壓縮包:利用其全局搜索功能檢索connector_log.再利用gedit修改其值(其實可以手動找到對應位置修改)

?

安裝ubantu系統:

清華PDF上指定的11.04ubantu系統,用U盤無法安裝

改為12.04的ubantu系統后,用U盤可以安裝

ubantu12.04系統下載鏈接:http://releases.ubuntu.com/12.04/

?

1、12.04ubantu U盤制作方法:

參考鏈接:https://jingyan.baidu.com/article/a3761b2b66fe141577f9aa51.html

PC上安裝UltralSO軟件,插入格式化后的U盤

打開ubantu的ISO文件,啟動-寫入硬盤映像-便捷啟動-選擇sylinux

這樣含有ubantu系統的U盤制作完成,接下來就需要把系統裝在主機上

?

U盤插入主機,通過U盤來啟動:

主機插入U盤,打開主機,在出現界面前按下F12,直接選擇U盤那個選項,然后再選擇install ubantu(當時安裝時,前面還有一個選項install ubantu without....,自己選的第二個選項install ubantu)

?

2、安裝ubantu:參考鏈接https://blog.csdn.net/baolibin528/article/details/43061983

注意:進入語言選擇界面,先把無線網連上

?

安裝CSI Tool集成包:intel-5300-csi-github-master(簡化版的集成包)

參考鏈接:https://blog.csdn.net/u014645508/article/details/81359409(很詳細,謝謝博主的填坑)

注意:

第1步:安裝完成后,需要登錄用戶名輸入密碼,否則執行第一步執行后沒有權限

第2步:這一步不知道在哪里修改(沒有進行)

第4步:-y前有個空格

第7步:注意是下載精簡版的?intel-5300-csi-github-master.tar.gz,進行安裝

第10步:一路按回車,按住回車不動半分鐘?

第11步:彈出的窗口先save再exit

第12步:直接用的make -j5來運行的(j5要快一些)

第16步:注意執行結果

第17.18步好像沒有任何提示

第22、23、24沒有任何提示

第30步:修改log_to_file,能獲取以時間戳命名csi的dat文件

?

修改驅動:必須修改,否則之后的腳本要多寫幾行命令設置參數,不修改也可能影響到數據的接收

打開sublime text用于搜索關鍵字,where選擇路徑時,點擊最右邊的add florder

修改驅動執行priv->connector_log=1;這個保存時怎么保存的?裝第二個系統cd到mian.c時發現無法找到,直接手動打開main.c修改的

cd intel-5300-csi-github這里必須先到cd intel-5300-csi-github-master文件夾(安裝在那個文件夾就先cd到那個文件夾)

?

?

獲取CSI數據

主機獲取CSI數據的兩種方法:AP模式和Monitor模式。CSI支持的四種工作模式

?

AP模式獲取CSI數據:

1、工具

一臺主機

一個沒有設置密碼的路由器(手機開熱點是收不到數據的/連接實驗室無線網一樣收不到數據)

2、AP模式下主機接收數據包,參考鏈接https://blog.csdn.net/u014645508/article/details/81359409

sudo ping 192.168.1.1 -i 0.05

ping后面接的是路由器的IP地址,i后面的參數是ping時間間隔,單位是秒。間隔小于0.2s需要root權限。

在主機中開啟另一個終端,運行log_to_file記錄CSI

3、實驗結果:

主機連接沒有密碼的路由器

主機ping路由器的IP后,能看到如下界面:

打開新的終端,cd到netlink文件夾,保存數據,能看到如下界面:

?

?

monitor模式獲取CSI數據

1、monitor優點:

使用AP模式的缺陷在于ping 命令速度比較慢,且不能精確控制發送的參數,比如接收的包數量是不可控的。Monitor模式比ap模式更加穩定,可以發送指定數量的包,可以設置發送包之間的間隔,以及信道和帶寬

2、工具:

2臺安裝Intel 5300網卡的電腦

兩臺主機均需安裝lorcon:在終端中通過指令安裝lorcon,參考鏈接:

3、實現方法:https://blog.csdn.net/u014645508/article/details/82993718?utm_source=blogxgwz1(同樣感謝博主的填坑)

?

注:按照博客的方法

運行腳本可能會出現權限不夠的問題

解決方法:sudo sh setup_inject.sh wlan0 64 HT20(當時用的64信道,HT20這兩個是參數,參數會被傳入setup_inject文件)

4、實驗結果:

發送數據包的主機顯示界面如下,這里只發送了100k的數據包:

接收數據包的從機界面如下:

注:和博客的執行順序相同,先運行的從機程序,從機腳本運行后會一直等待準備接收數據,直到主機開始發送數據

?

接收不到的可能原因:

1、安裝完ubantu系統后,進入錯誤的內核導致無法收到數據。(安裝完系統,開機會有多個選項(這里必須注釋掉對應處的一行指令開機才會出現多個選項),選擇4.2.0版本進入。之前就是因為沒有注意這一點,走了2天的彎路)

2、

  • 也是設置的monitor模式,可為什么receiver接收不到任何數據呢

  • ?接不到數據一般都是模式沒設置好的原因,iwconfig看一下是否配好了。sudo echo 0x4101 |sudo tee /sys/kernel/debug/ieee80211/phy0/iwlwifi/iwldvm/debug/monitor_tx_rate 這步的參數不對也接不了

3、除了我們剛裝好的電腦A作為client之外,我們需要另一臺電腦B來開軟AP,該電腦需裝有可開啟AP功能及支持80211n的網卡,5300網卡貌似不行,因為理論上它已經被閹割了開啟AP的功能(這個是用另一個主機開的軟AP,這個方法自己沒有實現過)

4、安裝很順利:最終還是沒有在終端看到打印的收到數據的提示

嘗試過主機連接實驗室的WiFi,無法收到數據

嘗試過主機連接沒密碼的手機熱點,無法收到數據

連接沒有密碼的路由器,就可以收到數據了

?

出現過的問題:

1、提示操作不允許時,加上sudo

2、使用tx.sh中設置速率時,出現權限不夠的問題,su解決

su也無法解決時使用chmod 777 后面應該加上文件名(這種情況只適合打開腳本文件)

可以加上sudo sh -c ‘ ’來解決權限問題
sudo sh -c 'echo "This is testPage." >/usr/local/nginx/html/index.html'

注:sudo:echo命令是屬于root用戶的權限,但是我之前一直以為加個sudo就能夠獲取到root的全部權限,現在才發現這是不對的。使用sudo命令后,獲取到的只是root的一部分權限。

3、設置信道的時候出現invalid argument

原始是:主機開機后能直接連接實驗室的無線網,通過ifconfig可以看到發送和接收包的個數(原始模式為managed模式)

設置為mon0后能發包,但是發送數據包處顯示0

執行shell腳本后,主機被設置為monitor模式

這里是0的原因可能是因為:不是無限連接模式,不會有發包的顯示(?)

?

Ubantu系統中的指令操作

參考鏈接:https://www.cnblogs.com/nucdy/p/5251659.html

1、打開文件夾

打開某個文件:cd /文件名/

若是文件夾下的某個文件,cd /home/t2/.../injection/,最后一定要加上/

2、執行文件sh腳本(shell腳本)

sh 文件名.sh或者./腳本名

3、直接輸入首字母按下tal鍵會自動補全,重復上一步操作,直接按下向上的箭頭

4、ctr+c結束操作

5、ctr+alt+T打開一個新終端(終端可以同時打開多個)

6、sudo:echo命令是屬于root用戶的權限,但是我之前一直以為加個sudo就能夠獲取到root的全部權限,現在才發現這是不對的。使用sudo命令后,獲取到的只是root的一部分權限。

7、cd ~回到根目錄下

8、echo的作用就是print的作用,用于將內容打印在終端界面上

9、iwconfig查看無線網卡設置的名稱(如wlan0)??? ifconfig查看發包收包的具體信息

這里刪除了wlan0,添加了mon0

?

?

腳本指令含義

sleep 10暫停10s

/home/wifi/csi/linux-80211n-csitool-supplementary/injection/random_packets 10000000000 100 1 1000 &

第三個命令為發送包,第一個參數為包的數量,第二個參數為包的大小,第三個參數為模式選擇,設為1即可,還可設置第四個參數:發送時間間隔,單位為us

發送腳本:

#!/usr/bin/sudo /bin/bash service network-manager stop #停止network-manager服務 WLAN_INTERFACE=$1 #$1第一個輸入參數 SLEEP_TIME=2modprobe iwlwifi debug=0x40000 #modprobe載入指定模塊if [ "$#" -ne 3 ]; # $#傳遞給腳本的參數個數 -ne不等于 thenecho "Going to use default settings!"chn=64bw=HT20 elsechn=$2bw=$3 fi #決定參數sleep $SLEEP_TIME ifconfig $WLAN_INTERFACE 2>/dev/null 1>/dev/null #查看網絡設備配置 重新定向標準錯誤輸出while [ $? -ne 0 ] # $?上個命令的退出狀態,或函數的返回值,大部分命令執行成功會返回 0,失敗返回 1 doifconfig $WLAN_INTERFACE 2>/dev/null 1>/dev/null donesleep $SLEEP_TIME echo "Add monitor mon0....." iw dev $WLAN_INTERFACE interface add mon0 type monitor #添加監聽模式的接口sleep $SLEEP_TIME echo "Bringing $WLAN_INTERFACE down....." ifconfig $WLAN_INTERFACE down #關閉指定網絡設備/網卡while [ $? -ne 0 ] doifconfig $WLAN_INTERFACE down done #確保關閉指定網絡設備/網卡sleep $SLEEP_TIME echo "Bringing mon0 up....." ifconfig mon0 up #啟動mon0while [ $? -ne 0 ] doifconfig mon0 up done #確保mon0啟動sleep $SLEEP_TIME echo "Set channel $chn $bw....." iw mon0 set channel $chn $bw #指定信道替換頻率

接收腳本:?

#!/usr/bin/sudo /bin/bash service network-manager stop #停止network-manager服務 SLEEP_TIME=2WLAN_INTERFACE=$1 #$1第一個輸入參數if [ "$#" -ne 3 ]; # $#傳遞給腳本的參數個數 -ne不等于 then echo "Going to use default settings!" #顯示字符串chn=64bw=HT20 elsechn=$2bw=$3 fi #決定參數echo "Bringing $WLAN_INTERFACE down....." ifconfig $WLAN_INTERFACE down #關閉指定網絡設備/網卡 由參數1決定while [ $? -ne 0 ] # $?上個命令的退出狀態,或函數的返回值,大部分命令執行成功會返回 0,失敗返回 1 doifconfig $WLAN_INTERFACE down done #確保關閉指定網絡設備/網卡sleep $SLEEP_TIME echo "Set $WLAN_INTERFACE into monitor mode....." iwconfig $WLAN_INTERFACE mode monitor #設置指定無線網卡的工作模式為監聽while [ $? -ne 0 ] doiwconfig $WLAN_INTERFACE mode monitor done #確保指定無線網卡的工作模式為監聽sleep $SLEEP_TIME echo "Bringing $WLAN_INTERFACE up....." ifconfig $WLAN_INTERFACE up #啟動指定網絡設備/網卡while [ $? -ne 0 ] doifconfig $WLAN_INTERFACE up done #確保啟動指定網絡設備/網卡sleep $SLEEP_TIME echo "Set channel $chn $bw....."iw $WLAN_INTERFACE set channel $chn $bw #指定信道替換頻率

已有ubantu系統情況下,基本嘗試完所有腳本還是無法接收到數據。最終決定重裝系統,按照幾位博主方法,最終實現monitor下接收CSI數據

下面記錄自己當時嘗試不同腳本時遇到的一些問題:

1、兩臺主機,均設置為monitor模式

一臺主機用于發送數據,發送數據包界面如下

問題:雖然上面顯示一直在發數據,怎么確定主機確實發出了數據?

另一臺從機用于接收數據,在生成的log.dat中沒有任何數據,從機界面如下:

我按照另一篇博客的方法進行了如下操作,依然沒有接受到任何數據,生成的log.dat中沒有數據

?

①主從機的腳本都能正常運行,為什么log.dat中沒有存入數據

②主機ifconfig查看發送數據包發送情況:顯示發送數據為0

?

2、執行iw dev wlan0 interface add mon0 type monitor,提示命令錯誤沒有這樣的設備(重啟設備好像能解決問題)

?

3、iw mon0 set channel 64 HT20提示command failed:Device or resource busy(-16)

解決方法:

其實解決這個問題很簡單。如果對于kali linux系統熟悉的人一看提示就知道 原因。根本原因就是網卡沒有開啟監聽模式(但是用iwconfig顯示網卡模式為監聽模式,不過用下面的方法后再執行上面的指令就沒有問題了)。只要我們開啟了監聽模式就解決的問題。只要輸入以下幾條指令開啟監聽模式就行了。

ifconfig wlan2mon(網卡名)? down? (先關閉網卡)

iwconfig wlan2mon mode monitor? (把網卡的模式設為監聽)

ifconfig wlan2mon up??? (開啟網卡)

iwconfig wlan2mon (查看網卡信息。有沒有看到 Mode :Monitor,有就OK了)

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的Monitor模式和AP模式下获取WiFi的CSI信号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。