mirror of
https://github.com/jayofelony/pwnagotchi.git
synced 2025-07-01 18:37:27 -04:00
130 lines
4.2 KiB
Python
130 lines
4.2 KiB
Python
import logging
|
|
|
|
import pwnagotchi.plugins as plugins
|
|
from pwnagotchi.ui.components import LabeledValue
|
|
from pwnagotchi.ui.view import BLACK
|
|
import pwnagotchi.ui.fonts as fonts
|
|
|
|
|
|
class Example(plugins.Plugin):
|
|
__author__ = 'evilsocket@gmail.com'
|
|
__version__ = '1.0.0'
|
|
__license__ = 'GPL3'
|
|
__description__ = 'An example plugin for pwnagotchi that implements all the available callbacks.'
|
|
|
|
def __init__(self):
|
|
logging.debug("example plugin created")
|
|
|
|
# called when http://<host>:<port>/plugins/<plugin>/ is called
|
|
# must return a html page
|
|
# IMPORTANT: If you use "POST"s, add a csrf-token (via csrf_token() and render_template_string)
|
|
def on_webhook(self, path, request):
|
|
pass
|
|
|
|
# called when the plugin is loaded
|
|
def on_loaded(self):
|
|
logging.warning("WARNING: this plugin should be disabled! options = " % self.options)
|
|
|
|
# called before the plugin is unloaded
|
|
def on_unload(self, ui):
|
|
pass
|
|
|
|
# called hen there's internet connectivity
|
|
def on_internet_available(self, agent):
|
|
pass
|
|
|
|
# called to setup the ui elements
|
|
def on_ui_setup(self, ui):
|
|
# add custom UI elements
|
|
ui.add_element('ups', LabeledValue(color=BLACK, label='UPS', value='0%/0V', position=(ui.width() / 2 - 25, 0),
|
|
label_font=fonts.Bold, text_font=fonts.Medium))
|
|
|
|
# called when the ui is updated
|
|
def on_ui_update(self, ui):
|
|
# update those elements
|
|
some_voltage = 0.1
|
|
some_capacity = 100.0
|
|
ui.set('ups', "%4.2fV/%2i%%" % (some_voltage, some_capacity))
|
|
|
|
# called when the hardware display setup is done, display is an hardware specific object
|
|
def on_display_setup(self, display):
|
|
pass
|
|
|
|
# called when everything is ready and the main loop is about to start
|
|
def on_ready(self, agent):
|
|
logging.info("unit is ready")
|
|
# you can run custom bettercap commands if you want
|
|
# agent.run('ble.recon on')
|
|
# or set a custom state
|
|
# agent.set_bored()
|
|
|
|
# called when a non overlapping wifi channel is found to be free
|
|
def on_free_channel(self, agent, channel):
|
|
pass
|
|
|
|
# called when the status is set to bored
|
|
def on_bored(self, agent):
|
|
pass
|
|
|
|
# called when the status is set to sad
|
|
def on_sad(self, agent):
|
|
pass
|
|
|
|
# called when the status is set to excited
|
|
def on_excited(self, agent):
|
|
pass
|
|
|
|
# called when the status is set to lonely
|
|
def on_lonely(self, agent):
|
|
pass
|
|
|
|
# called when the agent is rebooting the board
|
|
def on_rebooting(self, agent):
|
|
pass
|
|
|
|
# called when the agent is waiting for t seconds
|
|
def on_wait(self, agent, t):
|
|
pass
|
|
|
|
# called when the agent is sleeping for t seconds
|
|
def on_sleep(self, agent, t):
|
|
pass
|
|
|
|
# called when the agent refreshed its access points list
|
|
def on_wifi_update(self, agent, access_points):
|
|
pass
|
|
|
|
# called when the agent refreshed an unfiltered access point list
|
|
# this list contains all access points that were detected BEFORE filtering
|
|
def on_unfiltered_ap_list(self, agent, access_points):
|
|
pass
|
|
|
|
# called when the agent is sending an association frame
|
|
def on_association(self, agent, access_point):
|
|
pass
|
|
|
|
# called when the agent is deauthenticating a client station from an AP
|
|
def on_deauthentication(self, agent, access_point, client_station):
|
|
pass
|
|
|
|
# callend when the agent is tuning on a specific channel
|
|
def on_channel_hop(self, agent, channel):
|
|
pass
|
|
|
|
# called when a new handshake is captured, access_point and client_station are json objects
|
|
# if the agent could match the BSSIDs to the current list, otherwise they are just the strings of the BSSIDs
|
|
def on_handshake(self, agent, filename, access_point, client_station):
|
|
pass
|
|
|
|
# called when an epoch is over (where an epoch is a single loop of the main algorithm)
|
|
def on_epoch(self, agent, epoch, epoch_data):
|
|
pass
|
|
|
|
# called when a new peer is detected
|
|
def on_peer_detected(self, agent, peer):
|
|
pass
|
|
|
|
# called when a known peer is lost
|
|
def on_peer_lost(self, agent, peer):
|
|
pass
|