查看: 3562|回复: 1

[经验] 树莓派无线网卡监听模式

[复制链接]
  • TA的每日心情

    2020-3-6 09:52
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-2-20 10:45:27 | 显示全部楼层 |阅读模式
    分享到:
    Background
    项目里需要在树莓派上运行抓包程序,需要使用无线网卡,进入监听模式,进行抓包;
    默认的无线网卡是不支持monitor模式的,支持monitor模式的网卡列表可以在这里查到
    于是我选了两个RTL8188CUS的USB无线网卡,足够便宜,而且京东上找得到(吐槽:京东上好多无线网卡都不写芯片组型号,还有很多是不支持monitor模式的MTK7610,而且搜索芯片组型号基本搜不到商品,但是京东可以开发票报销啊,而且物流快啊,淘宝药丸,想要买网卡的同学上京东搜RTL8188能搜到网卡的,跟客服确认一下是不是RTL8188CUS就行,吐槽完毕)


    Ubuntu 试水
    在ubuntu上插入USB接口,ifconfig一下,可以看到多了一个设备wl********,名字太长了,重启一下系统,它会变成wlan0或wlan1(如果有多个无线网卡的话),这样方便操作一点

    这里需要注意区分哪个卡是自己插上去的新卡,在终端输入iwconfig,如果wlan1 Nickname是“WIFI@REALTEK”,wlan1就是我们新买的RTL8188啦,
    1. pi@raspberrypi:~ $ iwconfig
    2. eth0      no wireless extensions.

    3. wlan1     unassociated  Nickname:"<WIFI@REALTEK>"
    4.           Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated   
    5.           Sensitivity:0/0  
    6.           Retry:off   RTS thr:off   Fragment thr:off
    7.           Power Management:off
    8.           Link Quality:0  Signal level:0  Noise level:0
    9.           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
    10.           Tx excessive retries:0  Invalid misc:0   Missed beacon:0

    11. lo        no wireless extensions.

    12. wlan0     IEEE 802.11  ESSID:off/any  
    13.           Mode:Managed  Access Point: Not-Associated   Tx-Power=31 dBm   
    14.           Retry short limit:7   RTS thr:off   Fragment thr:off
    15.           Power Management:on
    复制代码
    接着尝试关掉wlan1,让它进入待命状态,再设置监听模式,再启动wlan1
    1. pi@raspberrypi:~ $ sudo ifconfig wlan1 down
    2. pi@raspberrypi:~ $ sudo iwconfig wlan1 mode monitor
    3. pi@raspberrypi:~ $ sudo ifconfig wlan1 up
    复制代码
    没有报错,说明这个网卡确实支持monitor模式,也可以再执行iwconfig,可以看到wlan1的Mode从Auto变成了monitor。

    树莓派翻车
    然而到了raspbian(我试过Ubuntu mate也一样)上,同样执行

    1. pi@raspberrypi:~ $ sudo iwconfig wlan1 mode monitor
    2. Error for wireless request "Set Mode" (8B06) :
    3.     SET failed on device wlan1 ; Invalid argument.
    复制代码
    去网上搜这个问题,回答都是很多年前的了,很少有在树莓派3B上试过的方案,最靠谱的一个答案在这里,在树莓派2B+的年代,raspbian禁用了rtlwifi驱动,因为它再raspbian上不稳定,对于rtl8188cus,会去使用rtl8192cu的驱动(恩,这是正确的做法),但是在raspbian上,一旦使用了rtl8192cu的驱动,网卡就开不了监听模式,所以需要重新编译raspbian内核,将rtlwifi驱动打开,将rtl8192驱动关掉。
    然而!在2017年的现在,我下载了raspbian的内核源码,发现官网已经把rtlwifi的驱动打开了!并且在这种情况下还是不能使用monitor模式!

    峰回路转
    在网上继续搜索有没有什么奇技淫巧可以解决这个问题,忽然发现这个工程
    在这个工程里编译了linux3.6上的rtlwifi,替换到raspbian的驱动里边去
    意识到,既然raspbian现在已经编译了rtlwifi和rtl8192两个驱动,那么就应该手动关掉rtl8192的驱动,手动启用rtlwifi的驱动!
    • 首先查看自己的内核版本

    1. pi@raspberrypi:~ $ uname -a
    2. Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux
    复制代码

    • 确认是否确实编译了rtlwifi的驱动
    1. pi@raspberrypi:/lib/modules/4.9.41-v7+/kernel/drivers/net/wireless/realtek $ ls
    2. rtl818x  rtl8192cu  rtl8xxxu  rtlwifi
    复制代码
    可以看到有rtlwifi
    • 然后检查当前使用的驱动
    1. pi@raspberrypi:~ $ lsmod | grep 8192
    2. 8192cu                582217  0
    3. cfg80211              543091  2 8192cu,brcmfmac
    复制代码
    显示的是8192cu,确实是rtl8192cu的驱动,如果是使用rtlwifi的驱动,显示的应该是rtl8192cu
    • 手动禁用rtl8192驱动
    1. pi@raspberrypi:~ $ sudo depmod 4.9.41-v7+
    2. pi@raspberrypi:~ $ sudo rmmod 8192cu
    3. pi@raspberrypi:~ $ sudo modprobe rtl8192cu
    复制代码
    • 再尝试将网卡设为监听模式
    1. pi@raspberrypi:~ $ sudo ifconfig wlan1 down
    2. pi@raspberrypi:~ $ sudo iwconfig wlan1 mode monitor
    3. pi@raspberrypi:~ $ sudo ifconfig wlan1 up
    复制代码
    一切正常!

    总结
    想要在树莓派3B+上使用RTL8188CUS开启无线网卡监听模式,就把rtl8192的驱动禁用掉,把rtlwifi的驱动开起来就好了

    本文作者 梦里茶
    来源 简书








    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2019-4-23 11:39:01 | 显示全部楼层
    学习看看,以后有机会搞了玩玩 522.jpg
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 02:26 , Processed in 0.131022 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.