gitextract_zo4q6okm/ ├── .DEREK.yml ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── other.md │ ├── ISSUE_TEMPLATE.md │ └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── MANIFEST.in ├── Makefile ├── README.md ├── bin/ │ └── pwnagotchi ├── builder/ │ ├── data/ │ │ ├── etc/ │ │ │ ├── bash_completion.d/ │ │ │ │ └── pwnagotchi_completion.sh │ │ │ ├── network/ │ │ │ │ └── interfaces.d/ │ │ │ │ ├── eth0-cfg │ │ │ │ ├── lo-cfg │ │ │ │ ├── usb0-cfg │ │ │ │ └── wlan0-cfg │ │ │ └── systemd/ │ │ │ └── system/ │ │ │ ├── bettercap.service │ │ │ ├── pwnagotchi.service │ │ │ └── pwngrid-peer.service │ │ └── usr/ │ │ └── bin/ │ │ ├── bettercap-launcher │ │ ├── decryption-webserver │ │ ├── hdmioff │ │ ├── hdmion │ │ ├── monstart │ │ ├── monstop │ │ ├── pwnagotchi-launcher │ │ └── pwnlib │ ├── pwnagotchi.json │ └── pwnagotchi.yml ├── pwnagotchi/ │ ├── __init__.py │ ├── _version.py │ ├── agent.py │ ├── ai/ │ │ ├── __init__.py │ │ ├── epoch.py │ │ ├── featurizer.py │ │ ├── gym.py │ │ ├── parameter.py │ │ ├── reward.py │ │ ├── train.py │ │ └── utils.py │ ├── automata.py │ ├── bettercap.py │ ├── defaults.toml │ ├── fs/ │ │ └── __init__.py │ ├── grid.py │ ├── identity.py │ ├── locale/ │ │ ├── af/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── bg/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── ch/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── cs/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── de/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── dk/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── el/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── es/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── fr/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── ga/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── hr/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── hu/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── it/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── jp/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── mk/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── nl/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── no/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── pl/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── pt/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── pt-BR/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── ro/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── ru/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── se/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── sk/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── spa/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── tr/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── tw/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ ├── ua/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── voice.mo │ │ │ └── voice.po │ │ └── voice.pot │ ├── log.py │ ├── mesh/ │ │ ├── __init__.py │ │ ├── peer.py │ │ ├── utils.py │ │ └── wifi.py │ ├── plugins/ │ │ ├── __init__.py │ │ ├── cmd.py │ │ └── default/ │ │ ├── auto-update.py │ │ ├── bt-tether.py │ │ ├── example.py │ │ ├── gpio_buttons.py │ │ ├── gps.py │ │ ├── grid.py │ │ ├── led.py │ │ ├── logtail.py │ │ ├── memtemp.py │ │ ├── net-pos.py │ │ ├── onlinehashcrack.py │ │ ├── paw-gps.py │ │ ├── session-stats.py │ │ ├── switcher.py │ │ ├── ups_lite.py │ │ ├── watchdog.py │ │ ├── webcfg.py │ │ ├── webgpsmap.html │ │ ├── webgpsmap.py │ │ ├── wigle.py │ │ └── wpa-sec.py │ ├── ui/ │ │ ├── __init__.py │ │ ├── components.py │ │ ├── display.py │ │ ├── faces.py │ │ ├── fonts.py │ │ ├── hw/ │ │ │ ├── __init__.py │ │ │ ├── adafruitssd1306i2c.py │ │ │ ├── base.py │ │ │ ├── dfrobot1.py │ │ │ ├── dfrobot2.py │ │ │ ├── inky.py │ │ │ ├── lcdhat.py │ │ │ ├── libs/ │ │ │ │ ├── __init__.py │ │ │ │ ├── adafruit/ │ │ │ │ │ └── adafruitssd1306i2c/ │ │ │ │ │ ├── SSD1306.py │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── epd.py │ │ │ │ ├── dfrobot/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── v1/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── dfrobot.py │ │ │ │ │ │ ├── dfrobot_epaper.py │ │ │ │ │ │ ├── gpio.py │ │ │ │ │ │ └── spi.py │ │ │ │ │ └── v2/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── dfrobot.py │ │ │ │ │ ├── dfrobot_display/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── dfrobot_display.py │ │ │ │ │ │ ├── dfrobot_fonts.py │ │ │ │ │ │ └── dfrobot_printString.py │ │ │ │ │ ├── dfrobot_epaper.py │ │ │ │ │ ├── display_extension/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── fonts_6_8.py │ │ │ │ │ │ ├── fonts_8_16.py │ │ │ │ │ │ ├── freetype_helper.py │ │ │ │ │ │ └── readme.md │ │ │ │ │ ├── gpio.py │ │ │ │ │ ├── i2c.py │ │ │ │ │ └── spi.py │ │ │ │ ├── fb/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── fb.py │ │ │ │ ├── inkyphat/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── inkyfast.py │ │ │ │ │ └── inkyphatfast.py │ │ │ │ ├── papirus/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── epd.py │ │ │ │ │ └── lm75b.py │ │ │ │ └── waveshare/ │ │ │ │ ├── __init__.py │ │ │ │ ├── lcdhat/ │ │ │ │ │ ├── ST7789.py │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── config.py │ │ │ │ │ └── epd.py │ │ │ │ ├── lcdhat144/ │ │ │ │ │ ├── LCD_1in44.py │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── config.py │ │ │ │ │ └── epd.py │ │ │ │ ├── oledhat/ │ │ │ │ │ ├── SH1106.py │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── config.py │ │ │ │ │ └── epd.py │ │ │ │ ├── v1/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── epd2in13.py │ │ │ │ │ ├── epd2in13bc.py │ │ │ │ │ ├── epd2in13bcFAST.py │ │ │ │ │ └── epdconfig.py │ │ │ │ ├── v154inch/ │ │ │ │ │ ├── epd1in54b.py │ │ │ │ │ └── epdconfig.py │ │ │ │ ├── v2/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── waveshare.py │ │ │ │ ├── v213bc/ │ │ │ │ │ ├── epd2in13bc.py │ │ │ │ │ └── epdconfig.py │ │ │ │ ├── v213d/ │ │ │ │ │ ├── epd2in13d.py │ │ │ │ │ └── epdconfig.py │ │ │ │ ├── v213inb_v4/ │ │ │ │ │ ├── epd2in13b_V4.py │ │ │ │ │ └── epdconfig.py │ │ │ │ ├── v27inch/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── epd2in7.py │ │ │ │ │ └── epdconfig.py │ │ │ │ ├── v29inch/ │ │ │ │ │ ├── epd2in9.py │ │ │ │ │ └── epdconfig.py │ │ │ │ └── v3/ │ │ │ │ ├── epd2in13_V3.py │ │ │ │ └── epdconfig.py │ │ │ ├── oledhat.py │ │ │ ├── papirus.py │ │ │ ├── spotpear24inch.py │ │ │ ├── waveshare1.py │ │ │ ├── waveshare144lcd.py │ │ │ ├── waveshare154inch.py │ │ │ ├── waveshare2.py │ │ │ ├── waveshare213bc.py │ │ │ ├── waveshare213d.py │ │ │ ├── waveshare213inb_v4.py │ │ │ ├── waveshare27inch.py │ │ │ ├── waveshare29inch.py │ │ │ ├── waveshare3.py │ │ │ └── waveshare35lcd.py │ │ ├── state.py │ │ ├── view.py │ │ └── web/ │ │ ├── __init__.py │ │ ├── handler.py │ │ ├── server.py │ │ ├── static/ │ │ │ ├── css/ │ │ │ │ ├── jquery.jqplot.css │ │ │ │ └── style.css │ │ │ └── js/ │ │ │ ├── jquery.jqplot.js │ │ │ ├── jquery.mobile/ │ │ │ │ ├── jquery.mobile-1.4.5.css │ │ │ │ ├── jquery.mobile-1.4.5.js │ │ │ │ ├── jquery.mobile.external-png-1.4.5.css │ │ │ │ ├── jquery.mobile.icons-1.4.5.css │ │ │ │ ├── jquery.mobile.inline-png-1.4.5.css │ │ │ │ ├── jquery.mobile.inline-svg-1.4.5.css │ │ │ │ ├── jquery.mobile.structure-1.4.5.css │ │ │ │ └── jquery.mobile.theme-1.4.5.css │ │ │ ├── jquery.timeago.js │ │ │ ├── plugins/ │ │ │ │ ├── jqplot.BezierCurveRenderer.js │ │ │ │ ├── jqplot.barRenderer.js │ │ │ │ ├── jqplot.blockRenderer.js │ │ │ │ ├── jqplot.bubbleRenderer.js │ │ │ │ ├── jqplot.canvasAxisLabelRenderer.js │ │ │ │ ├── jqplot.canvasAxisTickRenderer.js │ │ │ │ ├── jqplot.canvasOverlay.js │ │ │ │ ├── jqplot.canvasTextRenderer.js │ │ │ │ ├── jqplot.categoryAxisRenderer.js │ │ │ │ ├── jqplot.ciParser.js │ │ │ │ ├── jqplot.cursor.js │ │ │ │ ├── jqplot.dateAxisRenderer.js │ │ │ │ ├── jqplot.donutRenderer.js │ │ │ │ ├── jqplot.dragable.js │ │ │ │ ├── jqplot.enhancedLegendRenderer.js │ │ │ │ ├── jqplot.enhancedPieLegendRenderer.js │ │ │ │ ├── jqplot.funnelRenderer.js │ │ │ │ ├── jqplot.highlighter.js │ │ │ │ ├── jqplot.json2.js │ │ │ │ ├── jqplot.logAxisRenderer.js │ │ │ │ ├── jqplot.mekkoAxisRenderer.js │ │ │ │ ├── jqplot.mekkoRenderer.js │ │ │ │ ├── jqplot.meterGaugeRenderer.js │ │ │ │ ├── jqplot.mobile.js │ │ │ │ ├── jqplot.ohlcRenderer.js │ │ │ │ ├── jqplot.pieRenderer.js │ │ │ │ ├── jqplot.pointLabels.js │ │ │ │ ├── jqplot.pyramidAxisRenderer.js │ │ │ │ ├── jqplot.pyramidGridRenderer.js │ │ │ │ ├── jqplot.pyramidRenderer.js │ │ │ │ └── jqplot.trendline.js │ │ │ └── viewportHeight.js │ │ └── templates/ │ │ ├── base.html │ │ ├── inbox.html │ │ ├── index.html │ │ ├── message.html │ │ ├── new_message.html │ │ ├── peers.html │ │ ├── plugins.html │ │ ├── profile.html │ │ └── status.html │ ├── utils.py │ └── voice.py ├── release.stork ├── requirements.txt ├── scripts/ │ ├── backup.sh │ ├── language.sh │ ├── linux_connection_share.sh │ ├── macos_connection_share.sh │ ├── openbsd_connection_share.sh │ ├── preview.py │ ├── pypi_upload.sh │ ├── restore.sh │ └── win_connection_share.ps1 └── setup.py