0.Linux下的Wi-Fi配置
無線網(wǎng)絡飛速發(fā)展的今天,許多設備都提供了連接無線網(wǎng)絡的功能。
那么Linux下的wifi到底該怎么配置、連接呢??
開始配置之前,我們要說說iw家族。iw是linux下常用的wifi配置工具,網(wǎng)上有相應的庫和源碼。全名為wirelessTools。
配置wifi模塊,并連接相應的無線網(wǎng)絡過程:主要使用iwpriv命令
(1)掃描可用的無線網(wǎng)絡:
iwlist wifi-name scanning
其中wifi-name為無線網(wǎng)卡的名字,比如網(wǎng)卡eth0就是系統(tǒng)默認的網(wǎng)卡名字, wifi-name可以用ifconfig查看,一般為ra0。
(2)看掃描到的網(wǎng)絡信息,按要連接的網(wǎng)絡類型進行配置。以下為掃描到的網(wǎng)絡:
iwlist ra0 scanning
===>rt_ioctl_giwscan. 11(11) BSS returned, data->length = 1427
ra0 Scan completed :
Cell 01 - Address: C4:CA:D9:1D:9E:A0
Protocol:802.11b/g/n
ESSID:""
Mode:Managed
Frequency:2.412 GHz (Channel 1)
Quality=7/100 Signal level=-87 dBm Noise level=-82 dBm
Encryption key:off
Bit Rates:54 Mb/s
Cell 02 - Address: FC:75:16:A1:A9:16
Protocol:802.11b/g/n
ESSID:"jxj_rd"
Mode:Managed
Frequency:2.452 GHz (Channel 9)
Quality=94/100 Signal level=-53 dBm Noise level=-92 dBm
Encryption key:on
Bit Rates:54 Mb/s
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : TKIP CCMP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : TKIP CCMP
Authentication Suites (1) : PSK
Cell 03 - Address: C4:CA:D9:02:2A:70
Protocol:802.11b/g/n
ESSID:""
Mode:Managed
Frequency:2.462 GHz (Channel 11)
Quality=83/100 Signal level=-57 dBm Noise level=-92 dBm
Encryption key:off
Bit Rates:54 Mb/s
Cell 04 - Address: 14:D6:4D:75:CA:9C
Protocol:802.11b/g/n
ESSID:"liangym"
Mode:Managed
Frequency:2.472 GHz (Channel 13)
Quality=100/100 Signal level=-27 dBm Noise level=-92 dBm
Encryption key:on
Bit Rates:54 Mb/s
IE: WPA Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
如上:ESSID項的值即為無線網(wǎng)絡的名字,如上的“jxj_rd”等。如果值為空,說明在無線路由勾選了隱藏ESSID的選項。
ESSID是很關鍵的,如果被隱藏了,也不是不能連接,而是需要破解,用到其他的工具,非常麻煩。至于如何破解,不是本文敘述的內(nèi)容,有興趣的朋友可以網(wǎng)上搜索。
得到了網(wǎng)絡的信息,接下來就是配置連接選項了。以連接"jxj_rd"為例,我們看看具體的過程:
(1) 設置要連接的網(wǎng)絡類型:
iwpriv ra0 set NetworkType=Infra
(2) 設置要連接的無線網(wǎng)絡的安全模式:
iwpriv ra0 set AuthMode=WPA2PSK
(3) 設置網(wǎng)絡加密方式:(CCMP即為AES)
iwpriv ra0 set EncrypType=TKIP
(4) 設置連接時的密碼: ********為加密網(wǎng)絡的密碼
iwpriv ra0 set WPAPSK=*******
(5) 連接該網(wǎng)絡:有兩種方式:
A、用iwpriv命令
iwpriv ra0 set SSID=jxj_rd
B、用iwconfig命令
iwconfig ra0 essid jxj_rd
至此,如果密碼正確,就可以連接上網(wǎng)絡jxj_rd了。如果你不放心,可以用命令查看狀態(tài):
iwpriv ra0 connStatus
當然,你也可以用iwconfig命令查看狀態(tài),這里不再贅述。
執(zhí)行 iwlist 如果 Supported interface modes 的下有 AP 的話表示該網(wǎng)卡支持AP模式,可以創(chuàng)建無線熱點。
比如我的無線網(wǎng)卡是Qualcomm Atheros AR9485 Wireless Network Adapter,Linux內(nèi)核自帶了驅(qū)動ath9k,支持創(chuàng)建AP無線熱點。
下面我們就著重來講無線熱點的創(chuàng)建步驟:
1. 安裝hostapd和dhcpd
sudo apt-get install hostapd isc-dhcp-server
開機不需要啟動這兩個服務,建議把它們關掉:
sudo update-rc.d -f hostapd remove
注釋掉下面兩個文件start on那一行:
sudo nano /etc/init/isc-dhcp-server.conf
sudo nano /etc/init/isc-dhcp-server6.conf
2. 配置hostapd和dhcpd
sudo nano /etc/hostapd/hostapd.conf
注意自己設置其中的無線熱點名稱ssid和認證密碼wpa_passphrase.
interface=wlan0
driver=nl80211
ssid=YOUR_AP_NAME
hw_mode=g
channel=10
macaddr_acl=0
auth_algs=3
wpa=2
wpa_passphrase=YOUR_AP_PASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP
sudo nano /etc/dhcp/dhcpd.conf
在末尾加入以下內(nèi)容:
subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1,180.76.76.76,8.8.8.8;
}
其中180.76.76.76是百度公共DNS服務器,8.8.8.8則是Google的DNS服務器.
在自己的家目錄下創(chuàng)建一個hostapd目錄,里面新建啟動和關閉腳本,比如我這樣寫(注意把里面eechen換成你的用戶名):
nano /home/eechen/hostapd/ap-start.sh
#!/bin/bash
# 開啟內(nèi)核IP轉(zhuǎn)發(fā)
bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 開啟防火墻NAT轉(zhuǎn)發(fā)(如果本機使用eth0上網(wǎng),則把ppp0改為eth0)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 關閉NetworkManager對無線網(wǎng)卡的控制
nmcli nm wifi off
# 設置并啟動無線網(wǎng)卡
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
# 解鎖無線設備,可以用rfkill list查看解鎖結(jié)果.
rfkill unblock wlan
# 睡眠6秒,待rfkill解鎖生效
sleep 6s
# 啟動dhcpd和hostapd,如果hostapd無法啟動請查看日志hostapd.log,查看這兩個進程ps -ef|egrep "dhcpd|hostapd"
nohup hostapd /etc/hostapd/hostapd.conf >/home/eechen/hostapd/hostapd.log 2>1
dhcpd wlan0 -pf /var/run/dhcpd.pid
ps -ef|head -n1 ps -ef|egrep "dhcpd|hostapd"
nano /home/eechen/hostapd/ap-stop.sh
#!/bin/bash
killall hostapd dhcpd
bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
ifconfig wlan0 down
3. 啟動hostapd和dhcpd
在桌面新建兩個啟動器(快捷方式),里面分別填入:
gksu /home/eechen/hostapd/ap-start.sh
gksu /home/eechen/hostapd/ap-stop.sh
因為腳本需要root用戶身份執(zhí)行,所以需要用gksu運行。
注意:如果你開啟了ufw防火墻,ufw默認是禁止轉(zhuǎn)發(fā)的,這會導致防火墻NAT轉(zhuǎn)發(fā)失效,這時應該設置允許轉(zhuǎn)發(fā):
sudo nano /etc/default/ufw 將 DEFAULT_FORWARD_POLICY 設為 ACCEPT
然后重啟ufw即可:
sudo service ufw restart
之后運行啟動器即可啟動和關閉AP無線熱點。
4. 用wireshark監(jiān)控經(jīng)過wlan0的通信
安裝wireshark(其中 eechen改為你的用戶名):
sudo apt-get install wireshark
sudo chgrp eechen /usr/bin/dumpcap
sudo chmod 750 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin+eip /usr/bin/dumpcap
Alt+F2運行wireshark,選擇網(wǎng)絡接口wlan0,F(xiàn)ilter里輸入http.cookie contains mail.qq.com
然后手機端登錄網(wǎng)頁QQ郵箱,在WireShark即可查看和獲取QQ郵箱登錄的Cookie,如圖所示:

右鍵點擊Cookie項把Value復制出來,然后用Firefox訪問站點https://w.mail.qq.com/,Alt+C激活 Original Cookie Injector( GreaseMonkey),彈出輸入框Wireshark Cookie Dump,把Cookie項的Value粘貼到里面,然后點OK確定并刷新頁面即可登錄QQ郵箱?;蛘吣闶褂肨amper Data這個Firefox擴展在提交時修改Cookie值也是可以的。
附:
查看連接wlan0網(wǎng)絡的客戶端:
sudo arp
返回IP地址和MAC硬件地址和無線接口名.
iw dev wlan0 station dump
能顯示收發(fā)包和字節(jié)數(shù)等.
查看網(wǎng)絡接口速度:
sar -n DEV 1