用你的 Raspberry Pi 取代 WiFi Pineapple
完整教程:用大约三分之一的价格,把一台 Raspberry Pi 打造成与 WiFi Pineapple Pager 相同的无线军火库——硬件、命令和脚本一应俱全。
仅在你自己的网络、隔离的实验环境或获得书面授权的渗透测试中使用。
第二部分:从评测到实机搭建
在 WiFi Pineapple Pager 评测中,我们得出了一个对这台约 300 欧元的设备来说颇为尴尬的结论:它做的几乎所有事情——recon、Evil Twin、抓取 handshake、captive portal——都不过是跑在 Linux 上的软件。所以在这第二部分,我们不再停留在理论,而是自己动手搭建:一台 Raspberry Pi,用三分之一的价格做到同样的事——在好几个方面甚至更强。
我们要做什么,以及为什么
做什么:把一台 Raspberry Pi + 一块支持 injection 的 WiFi 网卡 + 一个移动电源,变成与 Pager 等效的便携装备,拥有同样的无线军火库。
为什么:因为它底层就是 Linux,跑的是完全相同的那套工具(aircrack-ng、bettercap、hostapd、hcxdumptool……)。事实上,Pager 上几乎所有像样的 payload 都是 bash 或 python 写的:直接拷到 Pi 上照样跑。而且,掌握了整个系统的完全控制权,你可以无限扩展它,并在本地破解密码,无需依赖云端。
回顾:Pi 对比 Pineapple Pager
我们在评测里逐项能力做了拆解;这里是开工前的快速总结:
| 能力 | Raspberry Pi | Pineapple Pager |
|---|---|---|
| 抓取 handshake | ✓ aircrack-ng | ✓ |
| Evil Twin / Rogue AP | ✓ hostapd + dnsmasq | ✓ PineAP |
| WPA-Enterprise(evil twin) | ✓ eaphammer | 有限支持 |
| MITM / sniffing | ✓ bettercap | 基础功能 |
| 强制门户 / 钓鱼 | ✓ wifiphisher、caplets | ✓ 模块 |
| 本地密码破解 | ✓ 本地 CPU/GPU | ✗ 依赖云端 |
| 图形桌面 + VNC | ✓ Wireshark、浏览器 | ✗ 仅 web UI |
| 20 公里外远程控制(CGNAT) | ✓ 原生 Tailscale | 需额外 payload |
| 可用任意工具扩展 | ✓ 完整 Linux | 封闭生态 |
| 大致成本 | 约 160 欧元 | 约 300 欧元 |
话说回来,我们也要诚实地承认 Pager 有些地方做得更好、而且便宜方案很难匹敌:集成的 Bluetooth/BLE(无需额外网卡)、6 GHz,以及多台 Pager 即插即用组成的蜂群。如果你的工作离不开 BLE,Pager 自有它的用武之地。至于其它一切,Pi 在灵活性和价格上都胜出。
你需要准备什么(硬件)
- Raspberry Pi 4(4 GB)或 Pi 5(8 GB,理想选择)——大脑。同一个镜像两者通用。
- 支持 monitor mode + injection 的 USB WiFi 网卡——关键部件。推荐 Alfa AWUS036ACH(RTL8812AU);低功耗、无需 hub 可直连的替代品:AWUS036NHA / AR9271(驱动已内置在内核里)。避开 WN722N v2/v3(不打补丁无法 injection)。
- 带外接供电的 USB hub——搭配 AWUS036ACH 时必备(见下方提示)。
- USB microSD 读卡器——用于从没有 SD 卡槽的笔记本上刷写。
- USB-C PD 移动电源——让它像 Pager 一样便携。Pi 4 需要 5 V/3 A,Pi 5 需要 5 V/5 A。
- microSD,至少 32 GB(A1/A2 级别);用于存工具、字典和抓包,64 GB 更好。
- 可选:3.5"/5" 触摸屏,以及带风扇的外壳(Pi 5 会很受用)。
把 Alfa AWUS036ACH 直连到 Pi 上做 injection 时会让它变得不稳定(SSH 断连、延迟飙升),甚至可能直接把 Pi 拖垮。如果这发生在正在写入的时候,突然掉电会悄无声息地损坏 microSD。这是吃过亏才学到的。解决办法:用带外接供电的 USB hub 给 Alfa 供电,或者改用低功耗网卡(AR9271)。在 Pi 5 上,如果只用 5 V/3 A 的电源,固件会把 USB 口限流到 600 mA,让问题雪上加霜;用 vcgencmd get_throttled 检查状态(任何 ≠ 0x0 的值都表示 undervoltage)。
军火库
这就是用来复刻 Pineapple 的部分。用第 3 步的脚本一条命令就能全部装好,不过先让你看看我们说的是些什么:
- hostapd + dnsmasq → Evil Twin / Rogue AP(这就是 PineAP)。
- aircrack-ng → 抓取并破解 handshake。
- wifite → 自动化的 WPA/WPS 攻击。
- bettercap → MITM、侦察与 caplets(强制门户)。
- kismet → 网络与客户端的探测器/嗅探器。
- hcxdumptool → 无需客户端即可抓取 PMKID。
- mdk4 → deauth、beacon flood、压力测试。
- reaver / bully → WPS 攻击。
而这里正是 Pi 领先的地方,都是 Pager 不带的东西:eaphammer(WPA-Enterprise 的 Evil Twin)、airgeddon(一体化套件)、wifiphisher(强制门户/钓鱼)、带图形桌面的 Wireshark,以及用来本地破解、不必依赖云端的 rockyou 字典。
就算你用 Kali,也不会自带完整的军火库:在实际测试中缺了 hostapd、mdk4、hcxdumptool 和 bettercap。脚本里的 wifi-tools 模块会把它们补齐,直到 12 个二进制全部就绪。
第 1 步 · 准备并刷写 Pi
第一个脚本把所有脏活累活都干了:下载镜像(默认 Kali ARM),校验 SHA-256,解压,预置自动联网(让 Pi 自己连上你的 WiFi 并用密钥做 SSH),自动识别 microSD 并在双重确认下写入。它甚至会自动识别你的 WiFi 并从笔记本上取回密码,所以大多数字段你直接按 Enter 就行。
chmod +x 1-instalar.sh
./1-instalar.sh
脚本在需要时(挂载镜像和写盘)会内部提升到 sudo。执行 dd 之前会要求两次确认:先键入列表里磁盘对应的编号,然后用大写输入 CONFIRMAR。结束时会重新读取卡片并比对 SHA-256:如果不一致就中止并提示 microSD 已损坏(这能在你白白浪费一小时之前,抓出被 brownout 弄坏的卡)。
第 2 步 · 在你的网络里揪出这台 Pi
Pi 开机后自己连上你的 WiFi,并通过 mDNS 广播自己。第二个脚本在你不知道它 IP 的情况下,从笔记本上把它揪出来:
./2-cazar.sh # 找到 Pi 并打开 SSH 会话
./2-cazar.sh --run remote # 找到并直接运行某个模块
它先尝试 mDNS 约 1 分钟;如果你的路由器过滤了客户端之间的 multicast(很常见),就退而做全网段扫描,优先匹配 Raspberry Pi 的 MAC(arp-scan/nmap)并测试 SSH 密钥。你的笔记本上需要装 avahi-utils 并启动其守护进程:
sudo apt install -y avahi-utils
sudo systemctl start avahi-daemon
第 3 步 · 搭建军火库
在 Pi 上开好会话后,第三个脚本按模块安装并配置一切。它始终用 sudo 运行:
sudo ./pineapple-killer.sh # 交互式菜单
sudo ./pineapple-killer.sh all # 依次运行所有模块
sudo ./pineapple-killer.sh wifi-tools # 只运行一个模块
| 模块 | 作用 |
|---|---|
info | 识别 Pi 型号、RAM、内核和 USB 网卡;对供电/brownout 发出提醒。 |
update | 更新系统并安装基础工具。 |
wifi-tools | 安装用来替代 Pineapple 的军火库。 |
extra-tools | 克隆 eaphammer、airgeddon 和 wifiphisher(Pager 没有的东西)。 |
ssh | 安装并启用 SSH。 |
vnc | 启用远程桌面(RealVNC/TigerVNC)。 |
remote | Tailscale + 加固过的 SSH + watchdog(20 公里外控制)。 |
monitor | 把第 2 块网卡切到 monitor mode 而不拖垮 uplink。 |
rogue-ap | 生成 Evil Twin 的模板(= PineAP)。 |
verify | 检查 12 个二进制并打印 Pi 对 Pager 的对比表。 |
第 4 步 · 20 公里外远程控制(可选)
这里 Pi 做到了一件 Pager 只有靠额外 payload 才能实现的事:即便它躲在 CGNAT 后面,也能从任何地方控制它,而且不用开放端口。remote 模块装好 Tailscale(WireGuard),加固 SSH,并留一个防锁死的 watchdog,免得你把自己关在门外:
sudo ./pineapple-killer.sh remote
# 无人值守,使用 Tailscale 密钥:
TS_AUTHKEY=tskey-auth-xxxx sudo -E ./pineapple-killer.sh remote
从手机上(走移动数据):ssh kali@pi-pineapple,VNC 在 pi-pineapple:5901,或门户在 http://pi-pineapple:<puerto>。
快速演示
侦察(与 Pager 打平):
sudo airmon-ng start wlan1
sudo airodump-ng wlan1mon
Evil Twin / Rogue AP(= PineAP):rogue-ap 模块会留下一个现成的 start-ap.sh。把 "FreeWiFi_Lab" 这个网络拉起来:
cd /opt/wifi-tools/rogue-ap
sudo ./start-ap.sh
本地破解(这里 Pi 胜出,不依赖云端):
sudo gunzip -k /usr/share/wordlists/rockyou.txt.gz
aircrack-ng -w /usr/share/wordlists/rockyou.txt captura-01.cap
如果出了问题
- Pi 没出现:八成是路由器在客户端之间过滤了 mDNS。在你的实验网络里关掉 "AP client isolation",或者让
2-cazar.sh去做全网段扫描。 - Kali 在首次开机时会改掉 hostname 和密码,而且默认关闭 SSH。第 1 步的预置已经把这些搞定了(它们会在 firstboot 时应用)。
- 没有国家码就没有 5 GHz:芯片启动时处于全球域
00,会屏蔽掉大部分 5 GHz。启动参数里预置了cfg80211.ieee80211_regdom=ES。 - Pi 的内置 WiFi 不能用于 monitor mode/injection:所以那块 USB 网卡是必不可少的。
dd的黄金法则:永远指向整块磁盘(/dev/sdb),绝不要指向某个分区(/dev/sdb1)。脚本会保护你的系统盘,并要求双重确认。
有用的链接
- Kali ARM(Raspberry Pi 2/3/4/5 64-bit 镜像):kali.org/get-kali
- Raspberry Pi Imager:raspberrypi.com/software
- eaphammer:github.com/s0lst1c3/eaphammer
- airgeddon:github.com/v1s1t0r1sh3r3/airgeddon
- wifiphisher:github.com/wifiphisher/wifiphisher
- Tailscale:tailscale.com
这是我这个系列的一部分——用一台 Raspberry Pi 搭建你自己的 "Pineapple"。完整组装过程的视频正在路上,会发布在我的 YouTube 频道。