首先安装Ubuntu 14.04 LTS
64位下载地址(页面中第一个链接)
可以使用官方的工具Rufus,下载地址:https://rufus.ie/
打开Rufus,先备份好原来U盘里的文件,SELECT刚刚下载的iso文件,点击START就可以了。
把刚刚做好的启动盘插入电脑,然后打开按住Del键打开BIOS的界面,默认的都是从硬盘 boot的,这里需要设置优先级,首先从USB boot。不同的电脑打开BIOS的方法不同,我的是用Del键。
从u盘boot后,按需选择安装的方式,这里建议直接覆盖安装,以免不同版本文件混淆。当然安装前如果有电脑里有重要的文件记得备份好。大概几分钟就好了。
完了首先打开安装终端(热键:Ctrl + Alt + T),先检查一下内核版本是否内核3.2-4.2版本之间。
查看内核版本命令:
cat /proc/version
然后再检查一下无线网卡是否能够正常使用,命令:
ifconfig
apt默认是外国的源,会比较慢,替换为国内的镜像源,速度会快一些。
5.1 备份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
5.2 编辑list文件:
sudo gedit /etc/apt/sources.list
5.3 将source.list中的内容替换
清华源 ubuntu版本:14.04 LTS
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
5.4 更新apt:
sudo apt-get update
接下来安装CSI Tool,按顺序依次执行就行。
sudo apt-get -y install git-core kernel-package fakeroot build-essential ncurses-dev
sudo apt-get -y install libnl-dev libssl-dev
sudo apt-get -y install iw
2.1 下载精简版内核
精简版内核:intel-5300-csi-github-master.tar.gz
下载地址:https://download.csdn.net/download/u014645508/10579514
2.2 解压
将上一步下载的压缩包利用U盘拷贝到Ubuntu系统Home目录下,准备在Ubuntu上解压。解压命令:
tar -xvf intel-5300-csi-github-master.tar.gz
2.3 编译
cd intel-5300-csi-github
make oldconfig
一直按回车确定
make menuconfig
弹出窗口,生成一个.config文件,先选择save,再exit即可
make -j3
整个流程中最为耗时的一步,我的机器大约需要运行半小时。3这个参数可以理解为编译的速度,机器性能比较优良的话可以使用 make -j5。
sudo make install modules_install
安装相关模块,耗时十五分钟左右。这一步执行以后刚开始可能会弹出couldn‘t load 等字样,这是因为还没有执行下一步,加载不出是正常的。
sudo make install
sudo make install modules_install
2.4 替换内核并更新
sudo mkinitramfs -o /boot/initrd.img-`cat include/config/kernel.release` `cat include/config/kernel.release`
make headers_install
我理解这一步作用是安装与后续编译有关的文件
sudo mkdir /usr/src/linux-headers-`cat include/config/kernel.release`
sudo update-grub
这两步是操作和移动release的内核
备注:
在灵魂的博客中,命令有所不同,需确认
sudo mkdir /usr/src/linux-headers-`cat include/config/kernel.release`
sudo cp -rf usr/include /usr/src/linux-headers-`cat include/config/kernel.release`/include
这里可能会遇到一个问题:内核编译后不显示新添加的启动项选项,可按照如下方式使之显示出来。
cd /etc/default
sudo gedit grub
注释下面一行
#GRUB_HIDDEN_TIMEOUT=0
然后保存。
sudo update-grub
2.5 重启
sudo reboot
重启之后进入4.2.0的内核 可以通过 cat /proc/version确认
以后每次都进该版本内核,否则收不到数。
git clone git://github.com/dhalperi/linux-80211n-csitool-supplementary.git
for file in /lib/firmware/iwlwifi-5000-*.ucode; do sudo mv $file $file.orig; done
sudo cp linux-80211n-csitool-supplementary/firmware/iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/
sudo ln -s iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/iwlwifi-5000-2.ucode
替换固件工作完成。
切换至netlink目录,准备编译
cd ~/linux-80211n-csitool-supplementary/netlink
make
这一步是编译生成log_to_file等文件。log_to_file可以实现收数功能。如果这一步报错可能是前面make_headers步骤出了错。我们有需要的话可以自行修改log_to_file.c文件,但之后需要在该目录下重新编译,即执行
make clean
make
cd ~/intel-5300-csi-github/drivers/net/wireless/iwlwifi/dvm
cp main.c main.bak.c
gedit main.c
打开main.c文件,按Ctrl+F搜索“connector_log”
将“priv->connector_log=iwlwifi_mod_params.connector_log
;”注释掉,修改为“priv->connector_log=1;
后保存
cd ~/intel-5300-csi-github
sudo make
sudo make install modules_install
sudo make install
sudo update-grub
备注:
make的时候会报一个错,需要将.config中的那个关于报错的参数 CONFIG_DEBUG_SECTION_MISMATCH=y 赋值, 并且根据提示问题进行响应修改。
我将安装好的电脑作为client,连接一台没有密码的路由器(有密码的是连不上的)。还有方案是利用create ap生成软AP的方法。
在终端输入:
ping 101.6.69.105 -i 0.5
101.6.69.105是路由的ip地址,-i 0.5表示发送间隔0.5s,如果间隔小于0.5s需要加上sudo。
新建终端,在新终端中输入:
cd ~/linux-supplementary/netlink
sudo ./log_to_file test.dat
monitor模式可以设定信道和发送的参数:如信道编号,信道带宽,发包数量,发包长度,发包模式以及发包间隔,相比AP模式有诸多优点。硬件上,也需要两台装有5300网卡的电脑。
sudo apt-get install libpcap-dev
git clone https://github.com/dhalperi/lorcon-old.git
若已手动下载lorcon-old, 放在HOME文件夹,跳过上一步。
cd lorcon-old
./configure
make
sudo make install
cd ~/linux-80211n-csitool-supplementary/injection
make
原本injection文件夹里的脚本可能会存在一些问题,可以用这里的脚本替换原来的脚本。发送端替换setup_inject.sh,接收端替换setup_monitor_csi.sh就可以了。如果两台电脑互相发就把两台电脑的setup_inject.sh和setup_monitor_csi.sh都分别替换掉。
2.1 接收端 setup_monitor_csi.sh
A电脑作为接收端,ctrl+alt+T打开终端窗口,运行
cd ~/linux-supplementary/injection
cp setup_monitor_csi.sh setup_monitor_csi.bak.sh
gedit setup_monitor_csi.sh
打开setup_monitor_csi.sh,将其中的内容替换为以下内容:
setup_monitor_csi.sh
#!/usr/bin/sudo /bin/bash
service network-manager stop
SLEEP_TIME=2
WLAN_INTERFACE=$1
if [ "$#" -ne 3 ]; then
echo "Going to use default settings!"
chn=64
bw=HT20
else
chn=$2
bw=$3
fi
echo "Bringing $WLAN_INTERFACE down....."
ifconfig $WLAN_INTERFACE down
while [ $? -ne 0 ]
do
ifconfig $WLAN_INTERFACE down
done
sleep $SLEEP_TIME
echo "Set $WLAN_INTERFACE into monitor mode....."
iwconfig $WLAN_INTERFACE mode monitor
while [ $? -ne 0 ]
do
iwconfig $WLAN_INTERFACE mode monitor
done
sleep $SLEEP_TIME
echo "Bringing $WLAN_INTERFACE up....."
ifconfig $WLAN_INTERFACE up
while [ $? -ne 0 ]
do
ifconfig $WLAN_INTERFACE up
done
sleep $SLEEP_TIME
echo "Set channel $chn $bw....."
iw $WLAN_INTERFACE set channel $chn $bw
注意,每个段落的空格必须是一个tab,若不是需手动修改。否则会在运行bash时报错。
修改后执行
./setup_monitor_csi.sh wlan0 13 HT20
参数wlan0是网卡名称,可运行iwconfig命令查看;13为2.4G频段信道编号,如果只填了网卡名称,信道编号和HT模式会使用默认值64+HT20(5G频段)
cd ~/linux-80211n-csitool-supplementary/netlink/
sudo ./log_to_file test.dat
2.1发送端:setup_inject.sh
打开发送端电脑,进行操作:
cd ~/linux-supplementary/injection
cp setup_inject.sh setup_inject.bak.sh
gedit setup_inject.sh
打开setup_inject.sh,将其中的内容替换为以下内容:
setup_inject.sh
#!/usr/bin/sudo /bin/bash
service network-manager stop
WLAN_INTERFACE=$1
SLEEP_TIME=2
modprobe iwlwifi debug=0x40000
if [ "$#" -ne 3 ]; then
echo "Going to use default settings!"
chn=64
bw=HT20
else
chn=$2
bw=$3
fi
sleep $SLEEP_TIME
ifconfig $WLAN_INTERFACE 2>/dev/null 1>/dev/null
while [ $? -ne 0 ]
do
ifconfig $WLAN_INTERFACE 2>/dev/null 1>/dev/null
done
sleep $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 ]
do
ifconfig $WLAN_INTERFACE down
done
sleep $SLEEP_TIME
echo "Bringing mon0 up....."
ifconfig mon0 up
while [ $? -ne 0 ]
do
ifconfig mon0 up
done
sleep $SLEEP_TIME
echo "Set channel $chn $bw....."
iw mon0 set channel $chn $bw
3.
./setup_inject.sh wlan0 13 HT20
sudo echo 0x4101 | sudo tee /sys/kernel/debug/ieee80211/phy0/iwlwifi/iwldvm/debug/monitor_tx_rate
这一步可以写成脚本
0x4101这部分参数设置具体参见下图,该图引自CSI Tool安装使用讲解
比如0x1c101表示支持选择三根天线发送、OFDM下的HT20模式,不过Rate Selection部分对应速率尚不明。
4.
sudo ./random_packets 100000 100 1
第一个参数:包的数量 第二个参数:包的长度 第三个参数:包与包间delay(微秒)。
执行了上述所有操作后,我们可在接收端看到A电脑收到了数据,之后就可以解析了
4.1可能收不到数的原因
可能原因:
1.硬件原因:调整好天线的角度和方向,确保发送机和接收机在一个平面上。
2.软件原因:①如果用灵魂序曲的教程(指路:https://blog.csdn.net/u014645508/article/details/82993718?utm_source=blogxgwz1),软件安装完了收不到数,可能是因为驱动没改好,可以改驱动也可以直接用这篇文章的脚本替换灵魂序曲的教程里的脚本。
②monitor_tx_rate参数是否配置正确,上图中的每个比特的含义仔细检查。
若接收不到,看wlan用802.11 n 模式
参考灵魂:https://blog.csdn.net/u014645508/article/details/81359409
Linux CSI Tool 完整使用说明(一发一收,monitor模式)(权威版 已成功测试)_Leming Shen的博客-CSDN博客_csi tool
华为:https://huaweicloud.csdn.net/63563932d3efff3090b5b24b.html?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&utm_relevant_index=4#1_265?login=from_csdnhttps://huaweicloud.csdn.net/63563932d3efff3090b5b24b.html?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&utm_relevant_index=4#1_265?login=from_csdn