Files
pwnagotchi_plugins/age.py

358 lines
14 KiB
Python
Raw Normal View History

Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
import os
import json
import logging
import time
2025-02-16 17:50:42 -08:00
import random
import threading
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
import pwnagotchi
import pwnagotchi.plugins as plugins
import pwnagotchi.ui.faces as faces
import pwnagotchi.ui.fonts as fonts
from pwnagotchi.ui.components import LabeledValue
from pwnagotchi.ui.view import BLACK
class Age(plugins.Plugin):
__author__ = 'AlienMajik'
__version__ = '2.0.3'
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
__license__ = 'MIT'
2025-02-16 20:30:15 -08:00
__description__ = ('Enhanced plugin with achievement tiers, configurable titles, decay mechanics, '
'progress tracking, and dynamic status messages.')
DEFAULT_AGE_TITLES = {
2025-02-16 17:50:42 -08:00
1000: "Neon Spawn",
2000: "Script Kiddie",
5000: "WiFi Outlaw",
2025-02-16 17:50:42 -08:00
10000: "Data Raider",
25000: "Prophet",
33333: "Off the Grid"
}
DEFAULT_STRENGTH_TITLES = {
2025-02-16 17:50:42 -08:00
500: "Fleshbag",
1500: "Lightweight",
2000: "Deauth King",
2025-02-16 20:30:15 -08:00
2500: "Handshake Hunter",
2025-02-16 17:50:42 -08:00
3333: "Unstoppable"
}
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
def __init__(self):
# Default UI positions (x, y)
self.default_positions = {
'age': (10, 40),
'strength': (80, 40),
'points': (10, 60),
2025-02-16 17:50:42 -08:00
'stars': (10, 80),
}
# Initialize core metrics
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
self.epochs = 0
self.train_epochs = 0
2024-12-15 14:56:57 -08:00
self.network_points = 0
self.handshake_count = 0
self.last_active_epoch = 0
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
self.data_path = '/root/age_strength.json'
2024-12-15 14:56:57 -08:00
self.log_path = '/root/network_points.log'
self.handshake_dir = '/home/pi/handshakes'
# Configurable settings with defaults
2024-12-15 14:56:57 -08:00
self.max_stars = 5
self.star_interval = 1000
self.decay_interval = 50
self.decay_amount = 10
self.age_titles = self.DEFAULT_AGE_TITLES
self.strength_titles = self.DEFAULT_STRENGTH_TITLES
# Achievement tracking attributes
self.prev_age_title = "Unborn"
self.prev_strength_title = "Untrained"
self.prev_stars = 0
# Additional configurations
self.points_map = {
'wpa3': 10,
'wpa2': 5,
'wep': 2,
'wpa': 2
}
self.motivational_quotes = [
"Keep going, you're crushing it!",
"You're a WiFi wizard in the making!",
"More handshakes, more power!",
"Don't stop now, you're almost there!",
"Keep evolving, don't let decay catch you!"
]
self.data_lock = threading.Lock()
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
def on_loaded(self):
# Load configuration options with fallbacks
self.max_stars = self.options.get('max_stars', 5)
self.star_interval = self.options.get('star_interval', 1000)
self.decay_interval = self.options.get('decay_interval', 50)
self.decay_amount = self.options.get('decay_amount', 10)
self.age_titles = self.options.get('age_titles', self.DEFAULT_AGE_TITLES)
self.strength_titles = self.options.get('strength_titles', self.DEFAULT_STRENGTH_TITLES)
self.points_map = self.options.get('points_map', self.points_map)
self.motivational_quotes = self.options.get('motivational_quotes', self.motivational_quotes)
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
self.load_data()
self.initialize_handshakes()
def initialize_handshakes(self):
"""Initialize handshake count based on existing .pcap files."""
2024-12-15 14:56:57 -08:00
if self.handshake_count == 0 and os.path.isdir(self.handshake_dir):
existing = [f for f in os.listdir(self.handshake_dir) if f.endswith('.pcap')]
if existing:
self.handshake_count = len(existing)
logging.info(f"[Age] Initialized with {self.handshake_count} handshakes")
self.save_data()
def get_age_title(self):
"""Determine age title based on epochs."""
thresholds = sorted(self.age_titles.keys(), reverse=True)
for t in thresholds:
if self.epochs >= t:
return self.age_titles[t]
return "Unborn"
def get_strength_title(self):
"""Determine strength title based on train_epochs."""
thresholds = sorted(self.strength_titles.keys(), reverse=True)
for t in thresholds:
if self.train_epochs >= t:
return self.strength_titles[t]
return "Untrained"
2025-02-16 17:50:42 -08:00
def random_motivational_quote(self):
"""Return a random motivational quote from the configurable list."""
return random.choice(self.motivational_quotes)
2025-02-16 17:50:42 -08:00
2025-02-16 20:30:15 -08:00
def random_inactivity_message(self, points_lost):
"""Return a random inactivity message with points lost."""
2025-02-16 17:50:42 -08:00
messages = [
"Time to wake up, you're rusting!",
"Decayed by {points_lost}, keep it active!",
"Stale, but you can still revive!",
"Don't let inactivity hold you back!",
"Keep moving, no room for decay!"
]
2025-02-16 20:30:15 -08:00
return random.choice(messages).format(points_lost=points_lost)
2025-02-16 17:50:42 -08:00
def check_achievements(self, agent):
"""Check and announce new age or strength achievements."""
current_age = self.get_age_title()
current_strength = self.get_strength_title()
if current_age != self.prev_age_title:
agent.view().set('face', faces.HAPPY)
2025-02-16 17:50:42 -08:00
agent.view().set('status', f"🎉 {current_age} Achieved! {self.random_motivational_quote()}")
logging.info(f"[Age] New age title: {current_age}")
self.prev_age_title = current_age
if current_strength != self.prev_strength_title:
agent.view().set('face', faces.MOTIVATED)
2025-02-16 17:50:42 -08:00
agent.view().set('status', f"💪 Evolved to {current_strength}!")
logging.info(f"[Age] New strength title: {current_strength}")
self.prev_strength_title = current_strength
def apply_decay(self, agent):
"""Apply decay to network points based on inactivity with refined mechanics."""
inactive_epochs = self.epochs - self.last_active_epoch
if inactive_epochs >= self.decay_interval:
decay_factor = inactive_epochs / self.decay_interval
points_lost = int(decay_factor * self.decay_amount)
self.network_points = max(0, self.network_points - points_lost)
if points_lost > 0:
agent.view().set('face', faces.SAD)
2025-02-16 20:30:15 -08:00
agent.view().set('status', self.random_inactivity_message(points_lost))
logging.info(f"[Age] Applied decay: lost {points_lost} points due to inactivity")
self.last_active_epoch = self.epochs
2024-12-15 14:56:57 -08:00
self.save_data()
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
def on_ui_setup(self, ui):
"""Set up UI elements with configurable positions."""
def get_position(element):
x = self.options.get(
f"{element}_x",
self.options.get(
f"{element}_x_coord", # Backwards compatibility
self.default_positions[element][0]
)
)
y = self.options.get(
f"{element}_y",
self.options.get(
f"{element}_y_coord", # Backwards compatibility
self.default_positions[element][1]
)
)
return (int(x), int(y))
positions = {
'age': get_position('age'),
'strength': get_position('strength'),
'points': get_position('points'),
2025-02-16 17:50:42 -08:00
'stars': get_position('stars'),
}
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
ui.add_element('Age', LabeledValue(
color=BLACK, label='Age', value="Newborn",
position=positions['age'], label_font=fonts.Bold, text_font=fonts.Medium))
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
ui.add_element('Strength', LabeledValue(
color=BLACK, label='Str', value="Rookie",
position=positions['strength'], label_font=fonts.Bold, text_font=fonts.Medium))
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
ui.add_element('Points', LabeledValue(
color=BLACK, label='★ Pts', value="0",
position=positions['points'], label_font=fonts.Bold, text_font=fonts.Medium))
2024-12-21 21:01:41 -08:00
ui.add_element('ReP', LabeledValue(
color=BLACK, label='ReP', value="",
position=positions['stars'], label_font=fonts.Bold, text_font=fonts.Medium))
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
def on_ui_update(self, ui):
"""Update UI elements with current values."""
ui.set('Age', self.get_age_title())
ui.set('Strength', self.get_strength_title())
ui.set('Points', self.abrev_number(self.network_points))
ui.set('ReP', self.get_star_string())
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
def on_epoch(self, agent, epoch, epoch_data):
"""Handle epoch events: increment counters, apply decay, and check achievements."""
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
self.epochs += 1
# Increment train_epochs every 10 epochs to simulate slower training progress
self.train_epochs += 1 if self.epochs % 10 == 0 else 0
logging.debug(f"[Age] Epoch {self.epochs}, Points: {self.network_points}")
self.apply_decay(agent)
self.check_achievements(agent)
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
if self.epochs % 100 == 0:
self.age_checkpoint(agent)
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
self.save_data()
def age_checkpoint(self, agent):
"""Display milestone message every 100 epochs."""
view = agent.view()
view.set('face', faces.HAPPY)
view.set('status', f"Epoch milestone: {self.epochs} epochs!")
view.update(force=True)
def on_handshake(self, agent, *args):
"""Handle handshake events with enhanced error handling and logging."""
try:
if len(args) < 3:
logging.warning("[Age] Insufficient arguments in on_handshake")
return
ap = args[2]
if isinstance(ap, dict):
enc = ap.get('encryption', '').lower()
essid = ap.get('essid', 'unknown')
else:
logging.warning(f"[Age] AP is a string, not a dictionary: {ap}. Skipping handshake processing.")
return
points = self.points_map.get(enc, 1)
self.network_points += points
self.handshake_count += 1
self.last_active_epoch = self.epochs
# Log handshake details with enhanced file I/O safety
try:
with open(self.log_path, 'a') as f:
f.write(f"{time.time()},{essid},{enc},{points}\n")
except Exception as e:
logging.error(f"[Age] Failed to log handshake: {str(e)}")
logging.info(f"[Age] Captured handshake: {essid}, encryption: {enc}, points gained: {points}")
self.new_star_checkpoint(agent)
self.save_data()
except Exception as e:
logging.error(f"[Age] Error in handshake processing: {str(e)}")
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
def new_star_checkpoint(self, agent):
"""Check and announce new star tier achievements."""
stars = self.get_stars_count()
if stars > self.prev_stars:
2024-12-15 17:00:36 -08:00
symbol = self.get_symbol_for_handshakes()
agent.view().set('face', faces.EXCITED)
agent.view().set('status', f"New {symbol} Tier Achieved!")
self.prev_stars = stars
2024-12-15 17:00:36 -08:00
def load_data(self):
"""Load saved data from JSON file with defaults for new installations."""
2025-02-16 17:50:42 -08:00
try:
if os.path.exists(self.data_path):
with open(self.data_path, 'r') as f:
data = json.load(f)
self.epochs = data.get('epochs', 0)
self.train_epochs = data.get('train_epochs', 0)
self.network_points = data.get('points', 0)
self.handshake_count = data.get('handshakes', 0)
self.last_active_epoch = data.get('last_active', 0)
self.prev_age_title = data.get('prev_age', self.get_age_title())
self.prev_strength_title = data.get('prev_strength', self.get_strength_title())
self.prev_stars = data.get('prev_stars', self.get_stars_count())
else:
# Set defaults for a new installation
self.epochs = 0
self.train_epochs = 0
self.network_points = 0
self.handshake_count = 0
self.last_active_epoch = 0
self.prev_age_title = self.get_age_title()
self.prev_strength_title = self.get_strength_title()
self.prev_stars = self.get_stars_count()
except Exception as e:
logging.error(f"[Age] Load error: {str(e)}")
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
def save_data(self):
"""Save current data to JSON file with thread safety."""
2025-02-16 17:50:42 -08:00
data = {
'epochs': self.epochs,
'train_epochs': self.train_epochs,
'points': self.network_points,
'handshakes': self.handshake_count,
'last_active': self.last_active_epoch,
'prev_age': self.get_age_title(),
'prev_strength': self.get_strength_title(),
2025-02-16 17:50:42 -08:00
'prev_stars': self.get_stars_count(),
Add files via upload Below is an example of how you can describe the plugin’s purpose, functionality, and installation instructions in a README.md file on your GitHub repository. You can adjust the wording and formatting as you see fit: Age, Strength, and Network Points Plugin for Pwnagotchi Author: AlienMajik Version: 1.0.4 License: MIT Description This Pwnagotchi plugin extends your Pwnagotchi’s user interface and functionality by adding three key stats: Age (♥ Age): Tracks how many epochs your Pwnagotchi has lived. Strength (Str): Indicates how much your Pwnagotchi has "trained," increasing every 10 epochs by default. Network Points (★ Pts): Awards points based on the type of network handshakes your Pwnagotchi captures. Stronger encryptions yield more points, weaker encryptions yield fewer. The points are logged for your reference. Network Points Scoring: WPA3: +10 points WPA2: +5 points WEP/WPA: +2 points Open/Unknown: +1 point Each time points are awarded, an entry is appended to /root/network_points.log with the ESSID, encryption type, points gained, and the updated total. All stats (age, strength, network points) are saved to /root/age_strength.json, ensuring that your Pwnagotchi remembers these values across reboots. Features Persistent Stats: Age, Strength, and Points survive restarts. UI Integration: Displays stats directly on the Pwnagotchi screen. Logging: Keeps a dedicated log file of network-related point gains. Customizable: You can tweak increments and positions via config options.
2024-12-14 23:19:32 -08:00
}
with self.data_lock:
try:
with open(self.data_path, 'w') as f:
json.dump(data, f, indent=2)
except Exception as e:
logging.error(f"[Age] Save error: {str(e)}")
def get_stars_count(self):
"""Calculate current number of stars."""
return min(self.handshake_count // self.star_interval, self.max_stars)
def get_symbol_for_handshakes(self):
"""Return symbol based on handshake count."""
return '' if self.handshake_count >= 10000 else '' if self.handshake_count >= 5000 else ''
def get_star_string(self):
"""Return string of star symbols."""
return self.get_symbol_for_handshakes() * self.get_stars_count()
def abrev_number(self, num):
"""Abbreviate large numbers (e.g., 1000 -> 1K)."""
for unit in ['','K','M','B']:
if abs(num) < 1000:
return f"{num:.1f}{unit}".rstrip('.0')
num /= 1000.0
return f"{num:.1f}T"
2024-12-15 17:00:36 -08:00
2025-02-16 17:50:42 -08:00