Hostapd簡介:
簡單說,hostapd能夠使得無線網(wǎng)卡切換為master模式,模擬AP(通??梢哉J(rèn)為是路由器)功能,也就是我們說的軟AP(Soft AP)。
Hostapd的功能就是作為AP的認(rèn)證服務(wù)器,負(fù)責(zé)控制管理stations(通??梢哉J(rèn)為帶無線網(wǎng)卡的PC)的接入和認(rèn)證。
通過Hostapd可以將無線網(wǎng)卡切換為AP/Master模式,通過修改配置文件,可以建立一個(gè)開放式的(不加密)的,WEP,WPA或WPA2的無線網(wǎng)絡(luò)。并且通過修改配置文件可以設(shè)置無線網(wǎng)卡的各種參數(shù),包括頻率,信號,beacon包時(shí)間間隔,是否發(fā)送beacon包,如果響應(yīng)探針請求等等。還可以設(shè)置mac地址過濾條件等。具體可以參考它的配置文件說明。
下面就從官網(wǎng)上摘下的部分原因及翻譯。翻譯的不好請見諒。
hostapd is an IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator.
Hostapd是IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP/RADIUS的認(rèn)證器
hostapd is a user space daemon for access point and authentication servers. It implements IEEE 802.11 access point management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS authentication server. The current version supports Linux (Host AP, madwifi, mac80211-based drivers) and FreeBSD (net80211).
Hostapd是一個(gè)訪問點(diǎn)以及認(rèn)證服務(wù)器的運(yùn)行于用戶空間的守護(hù)程序。它實(shí)現(xiàn)了IEEE 802.11接入帶你(Access Point)的管理功能,是IEEE 802.1X/WPA/WPA2/EAP的認(rèn)證器,是 RADIUS client, EAP server, and RADIUS認(rèn)證服務(wù)器。當(dāng)前版本的hostapd支持linux上Host AP,madwifi和基于mac80211協(xié)議棧的驅(qū)動程序,以及FreeBSD上net80211協(xié)議棧的驅(qū)動程序。
hostapd is designed to be a “daemon” program that runs in the background and acts as the backend component controlling authentication. hostapd supports separate frontend programs and an example text-based frontend, hostapd_cli, is included with hostapd.
Hostapd是一個(gè)后臺守護(hù)進(jìn)程,作為后臺組件來控制和管理認(rèn)證功能。Hostapd支持多個(gè)前臺程序。hostapd_cli,就是一個(gè)跟hostapd一起的命令行前臺程序。
下面我們來看一下利用hostapd和dhcpd在Ubuntu系統(tǒng)上建立無線熱點(diǎn)的方法:
執(zhí)行 iwlist 如果 Supported interface modes 的下有 AP 的話表示該網(wǎng)卡支持AP模式,可以創(chuàng)建無線熱點(diǎn)。
比如我的無線網(wǎng)卡是Qualcomm Atheros AR9485 Wireless Network Adapter,Linux內(nèi)核自帶了驅(qū)動ath9k,支持創(chuàng)建AP無線熱點(diǎn)。
1. 安裝hostapd和dhcpd
sudo apt-get install hostapd isc-dhcp-server
開機(jī)不需要啟動這兩個(gè)服務(wù),建議把它們關(guān)掉:
sudo update-rc.d -f hostapd remove
注釋掉下面兩個(gè)文件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
注意自己設(shè)置其中的無線熱點(diǎn)名稱ssid和認(rèn)證密碼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服務(wù)器,8.8.8.8則是Google的DNS服務(wù)器.
在自己的家目錄下創(chuàng)建一個(gè)hostapd目錄,里面新建啟動和關(guān)閉腳本,比如我這樣寫(注意把里面eechen換成你的用戶名):
nano /home/eechen/hostapd/ap-start.sh/p>
p>#!/bin/bash
# 開啟內(nèi)核IP轉(zhuǎn)發(fā)
bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 開啟防火墻NAT轉(zhuǎn)發(fā)(如果本機(jī)使用eth0上網(wǎng),則把ppp0改為eth0)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 關(guān)閉NetworkManager對無線網(wǎng)卡的控制
nmcli nm wifi off
# 設(shè)置并啟動無線網(wǎng)卡
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
# 解鎖無線設(shè)備,可以用rfkill list查看解鎖結(jié)果.
rfkill unblock wlan
# 睡眠6秒,待rfkill解鎖生效
sleep 6s
# 啟動dhcpd和hostapd,如果hostapd無法啟動請查看日志hostapd.log,查看這兩個(gè)進(jìn)程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/p>
p>#!/bin/bash
killall hostapd dhcpd
bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
ifconfig wlan0 down
3. 啟動hostapd和dhcpd
在桌面新建兩個(gè)啟動器(快捷方式),里面分別填入:
gksu /home/eechen/hostapd/ap-start.sh
gksu /home/eechen/hostapd/ap-stop.sh
因?yàn)槟_本需要root用戶身份執(zhí)行,所以需要用gksu運(yùn)行。
注意:如果你開啟了ufw防火墻,ufw默認(rèn)是禁止轉(zhuǎn)發(fā)的,這會導(dǎo)致防火墻NAT轉(zhuǎn)發(fā)失效,這時(shí)應(yīng)該設(shè)置允許轉(zhuǎn)發(fā):
sudo nano /etc/default/ufw 將 DEFAULT_FORWARD_POLICY 設(shè)為 ACCEPT
然后重啟ufw即可:
sudo service ufw restart
之后運(yùn)行啟動器即可啟動和關(guān)閉AP無線熱點(diǎn)。
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運(yùn)行wireshark,選擇網(wǎng)絡(luò)接口wlan0,F(xiàn)ilter里輸入http.cookie contains mail.qq.com
然后手機(jī)端登錄網(wǎng)頁QQ郵箱,在WireShark即可查看和獲取QQ郵箱登錄的Cookie,如圖所示:
右鍵點(diǎn)擊Cookie項(xiàng)把Value復(fù)制出來,然后用Firefox訪問站點(diǎn)https://w.mail.qq.com/,Alt+C激活 Original Cookie Injector( GreaseMonkey),彈出輸入框Wireshark Cookie Dump,把Cookie項(xiàng)的Value粘貼到里面,然后點(diǎn)OK確定并刷新頁面即可登錄QQ郵箱?;蛘吣闶褂肨amper Data這個(gè)Firefox擴(kuò)展在提交時(shí)修改Cookie值也是可以的。
附:
查看連接wlan0網(wǎng)絡(luò)的客戶端:
sudo arp
返回IP地址和MAC硬件地址和無線接口名.
iw dev wlan0 station dump
能顯示收發(fā)包和字節(jié)數(shù)等.
查看網(wǎng)絡(luò)接口速度:
sar -n DEV 1