MCPcopy Index your code
hub / github.com/evilsocket/pwnagotchi

github.com/evilsocket/pwnagotchi @v1.5.5

repository ↗ · DeepWiki ↗ · release v1.5.5 ↗ · + Follow
1,705 symbols 4,656 edges 173 files 112 documented · 7%
README

Pwnagotchi

<a href="https://github.com/evilsocket/pwnagotchi/releases/latest"><img alt="Release" src="https://img.shields.io/github/release/evilsocket/pwnagotchi.svg?style=flat-square"></a>
<a href="https://github.com/evilsocket/pwnagotchi/blob/master/LICENSE.md"><img alt="Software License" src="https://img.shields.io/badge/license-GPL3-brightgreen.svg?style=flat-square"></a>
<a href="https://github.com/evilsocket/pwnagotchi/graphs/contributors"><img alt="Contributors" src="https://img.shields.io/github/contributors/evilsocket/pwnagotchi"/></a>
<a href="https://travis-ci.org/evilsocket/pwnagotchi"><img alt="Travis" src="https://img.shields.io/travis/evilsocket/pwnagotchi/master.svg?style=flat-square"></a>
<a href="https://invite.pwnagotchi.ai/"><img alt="Slack" src="https://invite.pwnagotchi.ai/badge.svg"></a>
<a href="https://community.pwnagotchi.ai/"><img alt="Forum" src="https://img.shields.io/discourse/posts?server=https%3A%2F%2Fcommunity.pwnagotchi.ai%2F&style=flat-square"></a>
<a href="https://twitter.com/intent/follow?screen_name=pwnagotchi"><img src="https://img.shields.io/twitter/follow/pwnagotchi?style=social&logo=twitter" alt="follow on Twitter"></a>

Pwnagotchi is an A2C-based "AI" leveraging bettercap that learns from its surrounding WiFi environment to maximize the crackable WPA key material it captures (either passively, or by performing authentication and association attacks). This material is collected as PCAP files containing any form of handshake supported by hashcat, including PMKIDs, full and half WPA handshakes.

ui

Instead of merely playing Super Mario or Atari games like most reinforcement learning-based "AI" (yawn), Pwnagotchi tunes its parameters over time to get better at pwning WiFi things to in the environments you expose it to.

More specifically, Pwnagotchi is using an LSTM with MLP feature extractor as its policy network for the A2C agent. If you're unfamiliar with A2C, here is a very good introductory explanation (in comic form!) of the basic principles behind how Pwnagotchi learns. (You can read more about how Pwnagotchi learns in the Usage doc.)

Keep in mind: Unlike the usual RL simulations, Pwnagotchi learns over time. Time for a Pwnagotchi is measured in epochs; a single epoch can last from a few seconds to minutes, depending on how many access points and client stations are visible. Do not expect your Pwnagotchi to perform amazingly well at the very beginning, as it will be exploring several combinations of key parameters to determine ideal adjustments for pwning the particular environment you are exposing it to during its beginning epochs ... but ** listen to your Pwnagotchi when it tells you it's boring!** Bring it into novel WiFi environments with you and have it observe new networks and capture new handshakes—and you'll see. :)

Multiple units within close physical proximity can "talk" to each other, advertising their presence to each other by broadcasting custom information elements using a parasite protocol I've built on top of the existing dot11 standard. Over time, two or more units trained together will learn to cooperate upon detecting each other's presence by dividing the available channels among them for optimal pwnage.

Documentation

https://www.pwnagotchi.ai

Links

  Official Links
Website pwnagotchi.ai
Forum community.pwnagotchi.ai
Slack pwnagotchi.slack.com
Subreddit r/pwnagotchi
Twitter @pwnagotchi

License

pwnagotchi is made with ♥ by @evilsocket and the amazing dev team. It is released under the GPL3 license.

Core symbols most depended-on inside this repo

data
called by 199
pwnagotchi/ui/hw/libs/waveshare/lcdhat/ST7789.py
draw
called by 170
pwnagotchi/ui/components.py
trigger
called by 168
pwnagotchi/plugins/default/switcher.py
get
called by 147
pwnagotchi/ui/view.py
set
called by 112
pwnagotchi/ui/view.py
height
called by 98
pwnagotchi/ui/hw/libs/papirus/epd.py
send_data
called by 75
pwnagotchi/ui/hw/libs/waveshare/v27inch/epd2in7.py
LCD_WriteData_8bit
called by 69
pwnagotchi/ui/hw/libs/waveshare/lcdhat144/LCD_1in44.py

Shape

Method 981
Function 599
Class 125

Languages

Python73%
TypeScript27%

Modules by API surface

pwnagotchi/ui/web/static/js/jquery-1.12.4.min.js86 symbols
pwnagotchi/ui/web/static/js/jquery.mobile/jquery.mobile-1.4.5.js76 symbols
pwnagotchi/ui/web/static/js/jquery.jqplot.js70 symbols
pwnagotchi/ui/web/static/js/jquery.jqplot.min.js44 symbols
pwnagotchi/plugins/default/bt-tether.py44 symbols
pwnagotchi/ui/view.py43 symbols
pwnagotchi/ui/hw/libs/dfrobot/v2/dfrobot_display/dfrobot_display.py43 symbols
pwnagotchi/agent.py39 symbols
pwnagotchi/voice.py34 symbols
pwnagotchi/plugins/default/example.py34 symbols
pwnagotchi/utils.py29 symbols
pwnagotchi/plugins/default/led.py29 symbols

Dependencies from manifests, versioned

Pillow5.4.1 · 1×
PyYAML5.3.1 · 1×
dbus-python1.2.12 · 1×
file-read-backwards2.0.0 · 1×
flask1.0.2 · 1×
flask-cors3.0.7 · 1×
flask-wtf0.14.3 · 1×
gast0.2.2 · 1×
gym0.14.0 · 1×
inky0.0.5 · 1×
numpy1.17.2 · 1×
pycryptodome3.9.4 · 1×

For agents

$ claude mcp add pwnagotchi \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact