refactor
This commit is contained in:
parent
1ebec7691f
commit
ba15d1940a
sdcard/rootfs/root/pwnagotchi/scripts
@ -1,48 +0,0 @@
|
|||||||
import glob
|
|
||||||
import os
|
|
||||||
import time
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
def secs_to_hhmmss(secs):
|
|
||||||
mins, secs = divmod(secs, 60)
|
|
||||||
hours, mins = divmod(mins, 60)
|
|
||||||
return '%02d:%02d:%02d' % (hours, mins, secs)
|
|
||||||
|
|
||||||
|
|
||||||
def total_unique_handshakes(path):
|
|
||||||
expr = os.path.join(path, "*.pcap")
|
|
||||||
return len(glob.glob(expr))
|
|
||||||
|
|
||||||
|
|
||||||
def iface_address(ifname):
|
|
||||||
output = subprocess.getoutput("/usr/sbin/ifconfig %s" % ifname)
|
|
||||||
for line in output.split("\n"):
|
|
||||||
line = line.strip()
|
|
||||||
if line.startswith("inet "):
|
|
||||||
return line.split(' ')[1].strip()
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def iface_channels(ifname):
|
|
||||||
channels = []
|
|
||||||
output = subprocess.getoutput("/sbin/iwlist %s freq" % ifname)
|
|
||||||
for line in output.split("\n"):
|
|
||||||
line = line.strip()
|
|
||||||
if line.startswith("Channel "):
|
|
||||||
channels.append(int(line.split()[1]))
|
|
||||||
return channels
|
|
||||||
|
|
||||||
|
|
||||||
def led(on=True):
|
|
||||||
with open('/sys/class/leds/led0/brightness', 'w+t') as fp:
|
|
||||||
fp.write("%d" % (0 if on is True else 1))
|
|
||||||
|
|
||||||
|
|
||||||
def blink(times=1, delay=0.3):
|
|
||||||
for t in range(0, times):
|
|
||||||
led(True)
|
|
||||||
time.sleep(delay)
|
|
||||||
led(False)
|
|
||||||
time.sleep(delay)
|
|
||||||
led(True)
|
|
@ -9,6 +9,7 @@ import _thread
|
|||||||
|
|
||||||
import core
|
import core
|
||||||
|
|
||||||
|
import pwnagotchi.utils as utils
|
||||||
import pwnagotchi.plugins as plugins
|
import pwnagotchi.plugins as plugins
|
||||||
from bettercap.client import Client
|
from bettercap.client import Client
|
||||||
from pwnagotchi.mesh.utils import AsyncAdvertiser
|
from pwnagotchi.mesh.utils import AsyncAdvertiser
|
||||||
@ -30,7 +31,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
|
|||||||
self._started_at = time.time()
|
self._started_at = time.time()
|
||||||
self._filter = None if config['main']['filter'] is None else re.compile(config['main']['filter'])
|
self._filter = None if config['main']['filter'] is None else re.compile(config['main']['filter'])
|
||||||
self._current_channel = 0
|
self._current_channel = 0
|
||||||
self._supported_channels = core.iface_channels(config['main']['iface'])
|
self._supported_channels = utils.iface_channels(config['main']['iface'])
|
||||||
self._view = view
|
self._view = view
|
||||||
self._access_points = []
|
self._access_points = []
|
||||||
self._last_pwnd = None
|
self._last_pwnd = None
|
||||||
@ -252,7 +253,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
|
|||||||
|
|
||||||
def _update_uptime(self, s):
|
def _update_uptime(self, s):
|
||||||
secs = time.time() - self._started_at
|
secs = time.time() - self._started_at
|
||||||
self._view.set('uptime', core.secs_to_hhmmss(secs))
|
self._view.set('uptime', utils.secs_to_hhmmss(secs))
|
||||||
self._view.set('epoch', '%04d' % self._epoch.epoch)
|
self._view.set('epoch', '%04d' % self._epoch.epoch)
|
||||||
|
|
||||||
def _update_counters(self):
|
def _update_counters(self):
|
||||||
@ -272,7 +273,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
|
|||||||
if new_shakes > 0:
|
if new_shakes > 0:
|
||||||
self._epoch.track(handshake=True, inc=new_shakes)
|
self._epoch.track(handshake=True, inc=new_shakes)
|
||||||
|
|
||||||
tot = core.total_unique_handshakes(self._config['bettercap']['handshakes'])
|
tot = utils.total_unique_handshakes(self._config['bettercap']['handshakes'])
|
||||||
txt = '%d (%d)' % (len(self._handshakes), tot)
|
txt = '%d (%d)' % (len(self._handshakes), tot)
|
||||||
|
|
||||||
if self._last_pwnd is not None:
|
if self._last_pwnd is not None:
|
||||||
@ -285,7 +286,7 @@ class Agent(Client, AsyncAdvertiser, AsyncTrainer):
|
|||||||
|
|
||||||
def _update_advertisement(self, s):
|
def _update_advertisement(self, s):
|
||||||
run_handshakes = len(self._handshakes)
|
run_handshakes = len(self._handshakes)
|
||||||
tot_handshakes = core.total_unique_handshakes(self._config['bettercap']['handshakes'])
|
tot_handshakes = utils.total_unique_handshakes(self._config['bettercap']['handshakes'])
|
||||||
started = s['started_at'].split('.')[0]
|
started = s['started_at'].split('.')[0]
|
||||||
started = datetime.strptime(started, '%Y-%m-%dT%H:%M:%S')
|
started = datetime.strptime(started, '%Y-%m-%dT%H:%M:%S')
|
||||||
started = time.mktime(started.timetuple())
|
started = time.mktime(started.timetuple())
|
||||||
|
@ -2,8 +2,8 @@ import time
|
|||||||
import threading
|
import threading
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import core
|
|
||||||
import pwnagotchi
|
import pwnagotchi
|
||||||
|
import pwnagotchi.utils as utils
|
||||||
import pwnagotchi.mesh.wifi as wifi
|
import pwnagotchi.mesh.wifi as wifi
|
||||||
|
|
||||||
from pwnagotchi.ai.reward import RewardFunction
|
from pwnagotchi.ai.reward import RewardFunction
|
||||||
@ -174,22 +174,22 @@ class Epoch(object):
|
|||||||
self._epoch_data_ready.set()
|
self._epoch_data_ready.set()
|
||||||
|
|
||||||
logging.info("[epoch %d] duration=%s slept_for=%s blind=%d inactive=%d active=%d hops=%d missed=%d "
|
logging.info("[epoch %d] duration=%s slept_for=%s blind=%d inactive=%d active=%d hops=%d missed=%d "
|
||||||
"deauths=%d assocs=%d handshakes=%d cpu=%d%% mem=%d%% temperature=%dC reward=%s" % (
|
"deauths=%d assocs=%d handshakes=%d cpu=%d%% mem=%d%% temperature=%dC reward=%s" % (
|
||||||
self.epoch,
|
self.epoch,
|
||||||
core.secs_to_hhmmss(self.epoch_duration),
|
utils.secs_to_hhmmss(self.epoch_duration),
|
||||||
core.secs_to_hhmmss(self.num_slept),
|
utils.secs_to_hhmmss(self.num_slept),
|
||||||
self.blind_for,
|
self.blind_for,
|
||||||
self.inactive_for,
|
self.inactive_for,
|
||||||
self.active_for,
|
self.active_for,
|
||||||
self.num_hops,
|
self.num_hops,
|
||||||
self.num_missed,
|
self.num_missed,
|
||||||
self.num_deauths,
|
self.num_deauths,
|
||||||
self.num_assocs,
|
self.num_assocs,
|
||||||
self.num_shakes,
|
self.num_shakes,
|
||||||
cpu * 100,
|
cpu * 100,
|
||||||
mem * 100,
|
mem * 100,
|
||||||
temp,
|
temp,
|
||||||
self._epoch_data['reward']))
|
self._epoch_data['reward']))
|
||||||
|
|
||||||
self.epoch += 1
|
self.epoch += 1
|
||||||
self.epoch_started = now
|
self.epoch_started = now
|
||||||
|
@ -4,7 +4,7 @@ import time
|
|||||||
import logging
|
import logging
|
||||||
from PIL import Image, ImageDraw
|
from PIL import Image, ImageDraw
|
||||||
|
|
||||||
import core
|
import pwnagotchi.utils as utils
|
||||||
import pwnagotchi.plugins as plugins
|
import pwnagotchi.plugins as plugins
|
||||||
from pwnagotchi.voice import Voice
|
from pwnagotchi.voice import Voice
|
||||||
|
|
||||||
@ -86,8 +86,9 @@ class View(object):
|
|||||||
|
|
||||||
'face': Text(value=faces.SLEEP, position=face_pos, color=BLACK, font=fonts.Huge),
|
'face': Text(value=faces.SLEEP, position=face_pos, color=BLACK, font=fonts.Huge),
|
||||||
|
|
||||||
'friend_face': Text(value=None, position=(0, (self._height * 0.88) - 15 ), font=fonts.Bold, color=BLACK),
|
'friend_face': Text(value=None, position=(0, (self._height * 0.88) - 15), font=fonts.Bold, color=BLACK),
|
||||||
'friend_name': Text(value=None, position=(40,(self._height * 0.88) - 13 ), font=fonts.BoldSmall, color=BLACK),
|
'friend_name': Text(value=None, position=(40, (self._height * 0.88) - 13), font=fonts.BoldSmall,
|
||||||
|
color=BLACK),
|
||||||
|
|
||||||
'name': Text(value='%s>' % 'pwnagotchi', position=name_pos, color=BLACK, font=fonts.Bold),
|
'name': Text(value='%s>' % 'pwnagotchi', position=name_pos, color=BLACK, font=fonts.Bold),
|
||||||
|
|
||||||
@ -166,7 +167,7 @@ class View(object):
|
|||||||
self.set('channel', '-')
|
self.set('channel', '-')
|
||||||
self.set('aps', "%d" % log.associated)
|
self.set('aps', "%d" % log.associated)
|
||||||
self.set('shakes', '%d (%s)' % (log.handshakes, \
|
self.set('shakes', '%d (%s)' % (log.handshakes, \
|
||||||
core.total_unique_handshakes(self._config['bettercap']['handshakes'])))
|
utils.total_unique_handshakes(self._config['bettercap']['handshakes'])))
|
||||||
self.set_closest_peer(log.last_peer)
|
self.set_closest_peer(log.last_peer)
|
||||||
|
|
||||||
def is_normal(self):
|
def is_normal(self):
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
import yaml
|
|
||||||
import os
|
|
||||||
import logging
|
import logging
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import subprocess
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
# https://stackoverflow.com/questions/823196/yaml-merge-in-python
|
# https://stackoverflow.com/questions/823196/yaml-merge-in-python
|
||||||
@ -40,3 +43,38 @@ def setup_logging(args, config):
|
|||||||
console_handler = logging.StreamHandler()
|
console_handler = logging.StreamHandler()
|
||||||
console_handler.setFormatter(formatter)
|
console_handler.setFormatter(formatter)
|
||||||
root.addHandler(console_handler)
|
root.addHandler(console_handler)
|
||||||
|
|
||||||
|
|
||||||
|
def secs_to_hhmmss(secs):
|
||||||
|
mins, secs = divmod(secs, 60)
|
||||||
|
hours, mins = divmod(mins, 60)
|
||||||
|
return '%02d:%02d:%02d' % (hours, mins, secs)
|
||||||
|
|
||||||
|
|
||||||
|
def total_unique_handshakes(path):
|
||||||
|
expr = os.path.join(path, "*.pcap")
|
||||||
|
return len(glob.glob(expr))
|
||||||
|
|
||||||
|
|
||||||
|
def iface_channels(ifname):
|
||||||
|
channels = []
|
||||||
|
output = subprocess.getoutput("/sbin/iwlist %s freq" % ifname)
|
||||||
|
for line in output.split("\n"):
|
||||||
|
line = line.strip()
|
||||||
|
if line.startswith("Channel "):
|
||||||
|
channels.append(int(line.split()[1]))
|
||||||
|
return channels
|
||||||
|
|
||||||
|
|
||||||
|
def led(on=True):
|
||||||
|
with open('/sys/class/leds/led0/brightness', 'w+t') as fp:
|
||||||
|
fp.write("%d" % (0 if on is True else 1))
|
||||||
|
|
||||||
|
|
||||||
|
def blink(times=1, delay=0.3):
|
||||||
|
for t in range(0, times):
|
||||||
|
led(True)
|
||||||
|
time.sleep(delay)
|
||||||
|
led(False)
|
||||||
|
time.sleep(delay)
|
||||||
|
led(True)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user