項目裏須要在樹莓派上運行抓包程序,須要使用無線網卡,進入監聽模式,進行抓包;linux
默認的無線網卡是不支持monitor模式的,支持monitor模式的網卡列表能夠在這裏查到git
因而我選了兩個RTL8188CUS的USB無線網卡,足夠便宜,並且京東上找獲得(吐槽:京東上好多無線網卡都不寫芯片組型號,還有不少是不支持monitor模式的MTK7610,並且搜索芯片組型號基本搜不到商品,可是京東能夠開發票報銷啊,並且物流快啊,淘寶藥丸,想要買網卡的同窗上京東搜RTL8188能搜到網卡的,跟客服確認一下是否是RTL8188CUS就行,吐槽完畢)github
在ubuntu上插入USB接口,ifconfig一下,能夠看到多了一個設備wl********,名字太長了,重啓一下系統,它會變成wlan0或wlan1(若是有多個無線網卡的話),這樣方便操做一點shell
這裏須要注意區分哪一個卡是本身插上去的新卡,在終端輸入iwconfig,若是wlan1 Nickname是「WIFI@REALTEK」,wlan1就是咱們新買的RTL8188啦,ubuntu
pi@raspberrypi:~ $ iwconfig eth0 no wireless extensions. wlan1 unassociated Nickname:"<WIFI@REALTEK>" Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 lo no wireless extensions. wlan0 IEEE 802.11 ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on
接着嘗試關掉wlan1,讓它進入待命狀態,再設置監聽模式,再啓動wlan1less
pi@raspberrypi:~ $ sudo ifconfig wlan1 down pi@raspberrypi:~ $ sudo iwconfig wlan1 mode monitor pi@raspberrypi:~ $ sudo ifconfig wlan1 up
沒有報錯,說明這個網卡確實支持monitor模式,也能夠再執行iwconfig,能夠看到wlan1的Mode從Auto變成了monitor。ide
然而到了raspbian(我試過Ubuntu mate也同樣)上,一樣執行.net
pi@raspberrypi:~ $ sudo iwconfig wlan1 mode monitor Error for wireless request "Set Mode" (8B06) : SET failed on device wlan1 ; Invalid argument.
去網上搜這個問題,回答都是不少年前的了,不多有在樹莓派3B上試過的方案,最靠譜的一個答案在這裏,在樹莓派2B+的年代,raspbian禁用了rtlwifi驅動,由於它再raspbian上不穩定,對於rtl8188cus,會去使用rtl8192cu的驅動(恩,這是正確的作法),可是在raspbian上,一旦使用了rtl8192cu的驅動,網卡就開不了監聽模式,因此須要從新編譯raspbian內核,將rtlwifi驅動打開,將rtl8192驅動關掉。code
然而!在2017年的如今,我下載了raspbian的內核源碼,發現官網已經把rtlwifi的驅動打開了!而且在這種狀況下仍是不能使用monitor模式!接口
在網上繼續搜索有沒有什麼奇技淫巧能夠解決這個問題,突然發現這個工程
在這個工程裏編譯了linux3.6上的rtlwifi,替換到raspbian的驅動裏邊去
意識到,既然raspbian如今已經編譯了rtlwifi和rtl8192兩個驅動,那麼就應該手動關掉rtl8192的驅動,手動啓用rtlwifi的驅動!
pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux
pi@raspberrypi:/lib/modules/4.9.41-v7+/kernel/drivers/net/wireless/realtek $ ls rtl818x rtl8192cu rtl8xxxu rtlwifi
能夠看到有rtlwifi
pi@raspberrypi:~ $ lsmod | grep 8192 8192cu 582217 0 cfg80211 543091 2 8192cu,brcmfmac
顯示的是8192cu,確實是rtl8192cu的驅動,若是是使用rtlwifi的驅動,顯示的應該是rtl8192cu
pi@raspberrypi:~ $ sudo depmod 4.9.41-v7+ pi@raspberrypi:~ $ sudo rmmod 8192cu pi@raspberrypi:~ $ sudo modprobe rtl8192cu
pi@raspberrypi:~ $ sudo ifconfig wlan1 down pi@raspberrypi:~ $ sudo iwconfig wlan1 mode monitor pi@raspberrypi:~ $ sudo ifconfig wlan1 up
一切正常!
想要在樹莓派3B+上使用RTL8188CUS開啓無線網卡監聽模式,就把rtl8192的驅動禁用掉,把rtlwifi的驅動開起來就行了