pwnagotchi
基于强化学习的 WiFi 密码猎人,通过 A2C+LSTM 算法自动学习最优攻击策略,在嵌入式设备上
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于强化学习的 WiFi 密码猎人,通过 A2C+LSTM 算法自动学习最优攻击策略,在嵌入式设备上
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你养了一只电子宠物,它不像普通猫咪那样讨食,而是悄悄「嗅探」周围的 WiFi 网络信号,一旦捕捉到可破解的 WPA 握手包,就兴奋地「吃掉」它们——这就是 Pwnagotchi。
2026 年 5 月更新:该项目在 GitHub 已获得 9000+ Stars,被安全研究者广泛使用,并持续活跃于 Discord 社区。
Pwnagotchi 由意大利安全研究员 Simone "evilsocket" Margaritelli 于 2019 年创建。Margaritelli 以打造开源安全工具闻名(如 BetterCAP),他在思考如何让 WPA 密码破解更高效时,产生了这个天才想法:与其手动操控 WiFi 攻击工具,不如训练一个 AI 自主学习最佳攻击策略。
项目名称融合了 Pokémon(宠物小精灵)的「gotchi」和 pwn(安全圈俚语,意为「攻陷」)——某种意义上,它就是你口袋里那只永远吃不饱的 WiFi 密码猎手。
Pwnagotchi 使用 A2C(Advantage Actor-Critic)强化学习算法,搭配 LSTM 策略网络(MlpLstmPolicy)来学习最优的 WiFi 攻击参数。与下棋或打游戏不同,Pwnagotchi 的「游戏环境」是真实的无线空间。
核心学习流程:
作者巧妙地利用了 稳定状态策略(Stable Baselines) 库来实现 A2C,降低了强化学习实现的门槛,让更多安全爱好者能参与调优。

图1:Pwnagotchi 电子宠物界面 — e-ink 屏幕实时显示表情、状态和捕获统计
核心入口为 bin/pwnagotchi Python 脚本,整体采用分层架构:
agent.py 是核心 Agent,继承 Client(bettercap API)、Automata(有限状态机)、AsyncAdvertiser(Mesh)、AsyncTrainer(训练)ai/ 模块封装了 A2C 强化学习逻辑:train.py(训练)、epoch.py(单轮环境)、reward.py(奖励函数)、gym.py(Gym 接口封装)plugins/ 实现插件系统,默认插件包括 grid(Mesh 上报)、auto-update、wpa-sec(自动提交握手包)等ui/ 支持多种显示方式:e-ink(Inky 驱动)、Web(Flask)、命令行关键依赖:
tensorflow==1.13.1 — 深度学习后端(较老版本,存在安全风险)stable-baselines==2.7.0 — 强化学习算法封装(A2C + MlpLstmPolicy)scapy==2.4.3 — 原始网络包构造与发送bettercap — 实际的 WiFi 攻击执行引擎(需单独安装)flask==1.0.2 — 内置 Web UI 服务器inky==1.2.0 — e-ink 屏幕驱动最低硬件配置:
安装流程(非 Docker): 通过 Packer 交叉编译 ARM 镜像后烧录 SD 卡,配置 bettercap 参数后启动。不支持云端部署,必须有物理硬件。
纯 CLI 开发者可以直接在 Linux 上
pip install -e .安装 Python 包运行(无 e-ink 显示)。

图2:Pwnagotchi 官方 Logo
即便没有 e-ink 屏幕,也能通过 Flask 内置的 Web UI(默认 http://pwnagotchi:8080)监控 Pwnagotchi 的状态。多台 Pwnagotchi 靠近时会通过 Mesh 协议(在 dot11 帧中嵌入自定义信息元素)互相发现,协商信道分配——两台设备会自动"商量"谁负责 2.4GHz、谁负责 5GHz,协同最大化破解效率。
requests==2.21.0 等版本已不再维护Pwnagotchi 将原本枯燥的 WiFi 安全研究「游戏化」,降低了 WPA 密码审计的门槛,同时展示了 强化学习在网络安全领域的实际应用价值。它证明了即便在嵌入式设备上,也能运行有意义的 RL 代理。
项目至今保持活跃维护,Discord 社区拥有数千成员,持续产出插件贡献(wpa-sec 自动提交、WiGLE 地图上报、Tweet 通知等)。
适合人群: 安全研究员、CTF 玩家、对强化学习在嵌入式系统落地感兴趣的学习者。