Update everyting!

Signed-off-by: jayofelony <oudshoorn.jeroen@gmail.com>
This commit is contained in:
jayofelony
2024-02-25 11:10:09 +01:00
parent a7cf8a3383
commit 55c6007d32
948 changed files with 158902 additions and 29 deletions

168
pwnagotchi/__init__.py Normal file
View File

@ -0,0 +1,168 @@
import os
import logging
import time
import re
from pwnagotchi._version import __version__
_name = None
config = None
_cpu_stats = {}
def set_name(new_name):
if new_name is None:
return
new_name = new_name.strip()
if new_name == '':
return
if not re.match(r'^[a-zA-Z0-9\-]{2,25}$', new_name):
logging.warning("name '%s' is invalid: min length is 2, max length 25, only a-zA-Z0-9- allowed", new_name)
return
current = name()
if new_name != current:
global _name
logging.info("setting unit hostname '%s' -> '%s'", current, new_name)
with open('/etc/hostname', 'wt') as fp:
fp.write(new_name)
with open('/etc/hosts', 'rt') as fp:
prev = fp.read()
logging.debug("old hosts:\n%s\n", prev)
with open('/etc/hosts', 'wt') as fp:
patched = prev.replace(current, new_name, -1)
logging.debug("new hosts:\n%s\n", patched)
fp.write(patched)
os.system("hostname '%s'" % new_name)
reboot()
def name():
global _name
if _name is None:
with open('/etc/hostname', 'rt') as fp:
_name = fp.read().strip()
return _name
def uptime():
with open('/proc/uptime') as fp:
return int(fp.read().split('.')[0])
def mem_usage():
with open('/proc/meminfo') as fp:
for line in fp:
line = line.strip()
if line.startswith("MemTotal:"):
kb_mem_total = int(line.split()[1])
if line.startswith("MemFree:"):
kb_mem_free = int(line.split()[1])
if line.startswith("Buffers:"):
kb_main_buffers = int(line.split()[1])
if line.startswith("Cached:"):
kb_main_cached = int(line.split()[1])
kb_mem_used = kb_mem_total - kb_mem_free - kb_main_cached - kb_main_buffers
return round(kb_mem_used / kb_mem_total, 1)
def _cpu_stat():
"""
Returns the split first line of the /proc/stat file
"""
with open('/proc/stat', 'rt') as fp:
return list(map(int, fp.readline().split()[1:]))
def cpu_load(tag=None):
"""
Returns the current cpuload
"""
if tag and tag in _cpu_stats.keys():
parts0 = _cpu_stats[tag]
else:
parts0 = _cpu_stat()
time.sleep(0.1) # only need to sleep when no tag
parts1 = _cpu_stat()
if tag:
_cpu_stats[tag] = parts1
parts_diff = [p1 - p0 for (p0, p1) in zip(parts0, parts1)]
user, nice, sys, idle, iowait, irq, softirq, steal, _guest, _guest_nice = parts_diff
idle_sum = idle + iowait
non_idle_sum = user + nice + sys + irq + softirq + steal
total = idle_sum + non_idle_sum
return non_idle_sum / total
def temperature(celsius=True):
with open('/sys/class/thermal/thermal_zone0/temp', 'rt') as fp:
temp = int(fp.read().strip())
c = int(temp / 1000)
return c if celsius else ((c * (9 / 5)) + 32)
def shutdown():
logging.warning("shutting down ...")
from pwnagotchi.ui import view
if view.ROOT:
view.ROOT.on_shutdown()
# give it some time to refresh the ui
time.sleep(10)
logging.warning("syncing...")
from pwnagotchi import fs
for m in fs.mounts:
m.sync()
os.system("sync")
os.system("halt")
def restart(mode):
logging.warning("restarting in %s mode ...", mode)
mode = mode.upper()
if mode == 'AUTO':
os.system("touch /root/.pwnagotchi-auto")
else:
os.system("touch /root/.pwnagotchi-manual")
os.system("service bettercap restart")
time.sleep(1)
os.system("service pwnagotchi restart")
def reboot(mode=None):
if mode is not None:
mode = mode.upper()
logging.warning("rebooting in %s mode ...", mode)
else:
logging.warning("rebooting ...")
from pwnagotchi.ui import view
if view.ROOT:
view.ROOT.on_rebooting()
# give it some time to refresh the ui
time.sleep(10)
if mode == 'AUTO':
os.system("touch /root/.pwnagotchi-auto")
elif mode == 'MANU':
os.system("touch /root/.pwnagotchi-manual")
logging.warning("syncing...")
from pwnagotchi import fs
for m in fs.mounts:
m.sync()
os.system("sync")
os.system("shutdown -r now")

1
pwnagotchi/_version.py Normal file
View File

@ -0,0 +1 @@
__version__ = '2.8.4'

505
pwnagotchi/agent.py Normal file
View File

@ -0,0 +1,505 @@
import time
import json
import os
import re
import logging
import asyncio
import _thread
import pwnagotchi
import pwnagotchi.utils as utils
import pwnagotchi.plugins as plugins
from pwnagotchi.ui.web.server import Server
from pwnagotchi.automata import Automata
from pwnagotchi.log import LastSession
from pwnagotchi.bettercap import Client
from pwnagotchi.mesh.utils import AsyncAdvertiser
from pwnagotchi.ai.train import AsyncTrainer
RECOVERY_DATA_FILE = '/root/.pwnagotchi-recovery'
class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer):
def __init__(self, view, config, keypair):
Client.__init__(self,
"127.0.0.1" if "hostname" not in config['bettercap'] else config['bettercap']['hostname'],
"http" if "scheme" not in config['bettercap'] else config['bettercap']['scheme'],
8081 if "port" not in config['bettercap'] else config['bettercap']['port'],
"pwnagotchi" if "username" not in config['bettercap'] else config['bettercap']['username'],
"pwnagotchi" if "password" not in config['bettercap'] else config['bettercap']['password'])
Automata.__init__(self, config, view)
AsyncAdvertiser.__init__(self, config, view, keypair)
AsyncTrainer.__init__(self, config)
self._started_at = time.time()
self._current_channel = 0
self._tot_aps = 0
self._aps_on_channel = 0
self._supported_channels = utils.iface_channels(config['main']['iface'])
self._view = view
self._view.set_agent(self)
self._web_ui = Server(self, config['ui'])
self._access_points = []
self._last_pwnd = None
self._history = {}
self._handshakes = {}
self.last_session = LastSession(self._config)
self.mode = 'auto'
if not os.path.exists(config['bettercap']['handshakes']):
os.makedirs(config['bettercap']['handshakes'])
logging.info("%s@%s (v%s)", pwnagotchi.name(), self.fingerprint(), pwnagotchi.__version__)
for _, plugin in plugins.loaded.items():
logging.debug("plugin '%s' v%s", plugin.__class__.__name__, plugin.__version__)
def config(self):
return self._config
def view(self):
return self._view
def supported_channels(self):
return self._supported_channels
def setup_events(self):
logging.info("connecting to %s ...", self.url)
for tag in self._config['bettercap']['silence']:
try:
self.run('events.ignore %s' % tag, verbose_errors=False)
except Exception:
pass
def _reset_wifi_settings(self):
mon_iface = self._config['main']['iface']
self.run('set wifi.interface %s' % mon_iface)
self.run('set wifi.ap.ttl %d' % self._config['personality']['ap_ttl'])
self.run('set wifi.sta.ttl %d' % self._config['personality']['sta_ttl'])
self.run('set wifi.rssi.min %d' % self._config['personality']['min_rssi'])
self.run('set wifi.handshakes.file %s' % self._config['bettercap']['handshakes'])
self.run('set wifi.handshakes.aggregate false')
def start_monitor_mode(self):
mon_iface = self._config['main']['iface']
mon_start_cmd = self._config['main']['mon_start_cmd']
restart = not self._config['main']['no_restart']
has_mon = False
while has_mon is False:
s = self.session()
for iface in s['interfaces']:
if iface['name'] == mon_iface:
logging.info("found monitor interface: %s", iface['name'])
has_mon = True
break
if has_mon is False:
if mon_start_cmd is not None and mon_start_cmd != '':
logging.info("starting monitor interface ...")
self.run('!%s' % mon_start_cmd)
else:
logging.info("waiting for monitor interface %s ...", mon_iface)
time.sleep(1)
logging.info("supported channels: %s", self._supported_channels)
logging.info("handshakes will be collected inside %s", self._config['bettercap']['handshakes'])
self._reset_wifi_settings()
wifi_running = self.is_module_running('wifi')
if wifi_running and restart:
logging.debug("restarting wifi module ...")
self.restart_module('wifi.recon')
self.run('wifi.clear')
elif not wifi_running:
logging.debug("starting wifi module ...")
self.start_module('wifi.recon')
self.start_advertising()
def _wait_bettercap(self):
while True:
try:
_s = self.session()
return
except Exception:
logging.info("waiting for bettercap API to be available ...")
time.sleep(1)
def start(self):
self.start_ai()
self._wait_bettercap()
self.setup_events()
self.set_starting()
self.start_monitor_mode()
self.start_event_polling()
self.start_session_fetcher()
# print initial stats
self.next_epoch()
self.set_ready()
def recon(self):
recon_time = self._config['personality']['recon_time']
max_inactive = self._config['personality']['max_inactive_scale']
recon_mul = self._config['personality']['recon_inactive_multiplier']
channels = self._config['personality']['channels']
if self._epoch.inactive_for >= max_inactive:
recon_time *= recon_mul
self._view.set('channel', '*')
if not channels:
self._current_channel = 0
logging.debug("RECON %ds", recon_time)
self.run('wifi.recon.channel clear')
else:
logging.debug("RECON %ds ON CHANNELS %s", recon_time, ','.join(map(str, channels)))
try:
self.run('wifi.recon.channel %s' % ','.join(map(str, channels)))
except Exception as e:
logging.exception("Error while setting wifi.recon.channels (%s)", e)
self.wait_for(recon_time, sleeping=False)
def set_access_points(self, aps):
self._access_points = aps
plugins.on('wifi_update', self, aps)
self._epoch.observe(aps, list(self._peers.values()))
return self._access_points
def get_access_points(self):
whitelist = self._config['main']['whitelist']
aps = []
try:
s = self.session()
plugins.on("unfiltered_ap_list", self, s['wifi']['aps'])
for ap in s['wifi']['aps']:
if ap['encryption'] == '' or ap['encryption'] == 'OPEN':
continue
elif ap['hostname'] in whitelist or ap['mac'][:13].lower() in whitelist or ap['mac'].lower() in whitelist:
continue
else:
aps.append(ap)
except Exception as e:
logging.exception("Error while getting access points (%s)", e)
aps.sort(key=lambda ap: ap['channel'])
return self.set_access_points(aps)
def get_total_aps(self):
return self._tot_aps
def get_aps_on_channel(self):
return self._aps_on_channel
def get_current_channel(self):
return self._current_channel
def get_access_points_by_channel(self):
aps = self.get_access_points()
channels = self._config['personality']['channels']
grouped = {}
# group by channel
for ap in aps:
ch = ap['channel']
# if we're sticking to a channel, skip anything
# which is not on that channel
if channels and ch not in channels:
continue
if ch not in grouped:
grouped[ch] = [ap]
else:
grouped[ch].append(ap)
# sort by more populated channels
return sorted(grouped.items(), key=lambda kv: len(kv[1]), reverse=True)
def _find_ap_sta_in(self, station_mac, ap_mac, session):
for ap in session['wifi']['aps']:
if ap['mac'] == ap_mac:
for sta in ap['clients']:
if sta['mac'] == station_mac:
return ap, sta
return ap, {'mac': station_mac, 'vendor': ''}
return None
def _update_uptime(self, s):
secs = pwnagotchi.uptime()
self._view.set('uptime', utils.secs_to_hhmmss(secs))
# self._view.set('epoch', '%04d' % self._epoch.epoch)
def _update_counters(self):
self._tot_aps = len(self._access_points)
tot_stas = sum(len(ap['clients']) for ap in self._access_points)
if self._current_channel == 0:
self._view.set('aps', '%d' % self._tot_aps)
self._view.set('sta', '%d' % tot_stas)
else:
self._aps_on_channel = len([ap for ap in self._access_points if ap['channel'] == self._current_channel])
stas_on_channel = sum(
[len(ap['clients']) for ap in self._access_points if ap['channel'] == self._current_channel])
self._view.set('aps', '%d (%d)' % (self._aps_on_channel, self._tot_aps))
self._view.set('sta', '%d (%d)' % (stas_on_channel, tot_stas))
def _update_handshakes(self, new_shakes=0):
if new_shakes > 0:
self._epoch.track(handshake=True, inc=new_shakes)
tot = utils.total_unique_handshakes(self._config['bettercap']['handshakes'])
txt = '%d (%d)' % (len(self._handshakes), tot)
if self._last_pwnd is not None:
txt += ' [%s]' % self._last_pwnd[:11] # So it doesn't overlap with fix_brcmfmac_plugin
self._view.set('shakes', txt)
if new_shakes > 0:
self._view.on_handshakes(new_shakes)
def _update_peers(self):
self._view.set_closest_peer(self._closest_peer, len(self._peers))
def _reboot(self):
self.set_rebooting()
self._save_recovery_data()
pwnagotchi.reboot()
def _restart(self):
self._save_recovery_data()
pwnagotchi.restart("AUTO")
def _save_recovery_data(self):
logging.warning("writing recovery data to %s ...", RECOVERY_DATA_FILE)
with open(RECOVERY_DATA_FILE, 'w') as fp:
data = {
'started_at': self._started_at,
'epoch': self._epoch.epoch,
'history': self._history,
'handshakes': self._handshakes,
'last_pwnd': self._last_pwnd
}
json.dump(data, fp)
def _load_recovery_data(self, delete=True, no_exceptions=True):
try:
with open(RECOVERY_DATA_FILE, 'rt') as fp:
data = json.load(fp)
logging.info("found recovery data: %s", data)
self._started_at = data['started_at']
self._epoch.epoch = data['epoch']
self._handshakes = data['handshakes']
self._history = data['history']
self._last_pwnd = data['last_pwnd']
if delete:
logging.info("deleting %s", RECOVERY_DATA_FILE)
os.unlink(RECOVERY_DATA_FILE)
except:
if not no_exceptions:
raise
def start_session_fetcher(self):
_thread.start_new_thread(self._fetch_stats, ())
def _fetch_stats(self):
while True:
try:
s = self.session()
except Exception as err:
logging.error("[agent:_fetch_stats] self.session: %s" % repr(err))
try:
self._update_uptime(s)
except Exception as err:
logging.error("[agent:_fetch_stats] self.update_uptimes: %s" % repr(err))
try:
self._update_advertisement(s)
except Exception as err:
logging.error("[agent:_fetch_stats] self.update_advertisements: %s" % repr(err))
try:
self._update_peers()
except Exception as err:
logging.error("[agent:_fetch_stats] self.update_peers: %s" % repr(err))
try:
self._update_counters()
except Exception as err:
logging.error("[agent:_fetch_stats] self.update_counters: %s" % repr(err))
try:
self._update_handshakes(0)
except Exception as err:
logging.error("[agent:_fetch_stats] self.update_handshakes: %s" % repr(err))
time.sleep(5)
async def _on_event(self, msg):
found_handshake = False
jmsg = json.loads(msg)
# give plugins access to the events
try:
plugins.on('bcap_%s' % re.sub(r"[^a-z0-9_]+", "_", jmsg['tag'].lower()), self, jmsg)
except Exception as err:
logging.error("Processing event: %s" % err)
if jmsg['tag'] == 'wifi.client.handshake':
filename = jmsg['data']['file']
sta_mac = jmsg['data']['station']
ap_mac = jmsg['data']['ap']
key = "%s -> %s" % (sta_mac, ap_mac)
if key not in self._handshakes:
self._handshakes[key] = jmsg
s = self.session()
ap_and_station = self._find_ap_sta_in(sta_mac, ap_mac, s)
if ap_and_station is None:
logging.warning("!!! captured new handshake: %s !!!", key)
self._last_pwnd = ap_mac
plugins.on('handshake', self, filename, ap_mac, sta_mac)
else:
(ap, sta) = ap_and_station
self._last_pwnd = ap['hostname'] if ap['hostname'] != '' and ap[
'hostname'] != '<hidden>' else ap_mac
logging.warning(
"!!! captured new handshake on channel %d, %d dBm: %s (%s) -> %s [%s (%s)] !!!",
ap['channel'], ap['rssi'], sta['mac'], sta['vendor'], ap['hostname'], ap['mac'], ap['vendor'])
plugins.on('handshake', self, filename, ap, sta)
found_handshake = True
self._update_handshakes(1 if found_handshake else 0)
def _event_poller(self, loop):
self._load_recovery_data()
self.run('events.clear')
while True:
logging.debug("[agent:_event_poller] polling events ...")
try:
loop.create_task(self.start_websocket(self._on_event))
loop.run_forever()
logging.debug("[agent:_event_poller] loop loop loop")
except Exception as ex:
logging.debug("[agent:_event_poller] Error while polling via websocket (%s)", ex)
def start_event_polling(self):
# start a thread and pass in the mainloop
_thread.start_new_thread(self._event_poller, (asyncio.get_event_loop(),))
def is_module_running(self, module):
s = self.session()
for m in s['modules']:
if m['name'] == module:
return m['running']
return False
def start_module(self, module):
self.run('%s on' % module)
def restart_module(self, module):
self.run('%s off; %s on' % (module, module))
def _has_handshake(self, bssid):
for key in self._handshakes:
if bssid.lower() in key:
return True
return False
def _should_interact(self, who):
if self._has_handshake(who):
return False
elif who not in self._history:
self._history[who] = 1
return True
else:
self._history[who] += 1
return self._history[who] < self._config['personality']['max_interactions']
def associate(self, ap, throttle=-1):
if self.is_stale():
logging.debug("recon is stale, skipping assoc(%s)", ap['mac'])
return
if throttle == -1 and "throttle_a" in self._config['personality']:
throttle = self._config['personality']['throttle_a']
if self._config['personality']['associate'] and self._should_interact(ap['mac']):
self._view.on_assoc(ap)
try:
logging.info("sending association frame to %s (%s %s) on channel %d [%d clients], %d dBm...",
ap['hostname'], ap['mac'], ap['vendor'], ap['channel'], len(ap['clients']), ap['rssi'])
self.run('wifi.assoc %s' % ap['mac'])
self._epoch.track(assoc=True)
except Exception as e:
self._on_error(ap['mac'], e)
plugins.on('association', self, ap)
if throttle > 0:
time.sleep(throttle)
self._view.on_normal()
def deauth(self, ap, sta, throttle=-1):
if self.is_stale():
logging.debug("recon is stale, skipping deauth(%s)", sta['mac'])
return
if throttle == -1 and "throttle_d" in self._config['personality']:
throttle = self._config['personality']['throttle_d']
if self._config['personality']['deauth'] and self._should_interact(sta['mac']):
self._view.on_deauth(sta)
try:
logging.info("deauthing %s (%s) from %s (%s %s) on channel %d, %d dBm ...",
sta['mac'], sta['vendor'], ap['hostname'], ap['mac'], ap['vendor'], ap['channel'],
ap['rssi'])
self.run('wifi.deauth %s' % sta['mac'])
self._epoch.track(deauth=True)
except Exception as e:
self._on_error(sta['mac'], e)
plugins.on('deauthentication', self, ap, sta)
if throttle > 0:
time.sleep(throttle)
self._view.on_normal()
def set_channel(self, channel, verbose=True):
if self.is_stale():
logging.debug("recon is stale, skipping set_channel(%d)", channel)
return
# if in the previous loop no client stations has been deauthenticated
# and only association frames have been sent, we don't need to wait
# very long before switching channel as we don't have to wait for
# such client stations to reconnect in order to sniff the handshake.
wait = 0
if self._epoch.did_deauth:
wait = self._config['personality']['hop_recon_time']
elif self._epoch.did_associate:
wait = self._config['personality']['min_recon_time']
if channel != self._current_channel:
if self._current_channel != 0 and wait > 0:
if verbose:
logging.info("waiting for %ds on channel %d ...", wait, self._current_channel)
else:
logging.debug("waiting for %ds on channel %d ...", wait, self._current_channel)
self.wait_for(wait)
if verbose and self._epoch.any_activity:
logging.info("CHANNEL %d", channel)
try:
self.run('wifi.recon.channel %d' % channel)
self._current_channel = channel
self._epoch.track(hop=True)
self._view.set('channel', '%d' % channel)
plugins.on('channel_hop', self, channel)
except Exception as e:
logging.error("Error while setting channel (%s)", e)

68
pwnagotchi/ai/__init__.py Normal file
View File

@ -0,0 +1,68 @@
import os
import time
import logging
# https://stackoverflow.com/questions/40426502/is-there-a-way-to-suppress-the-messages-tensorflow-prints/40426709
# os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # or any {'0', '1', '2'}
def load(config, agent, epoch, from_disk=True):
config = config['ai']
if not config['enabled']:
logging.info("ai disabled")
return False
try:
begin = time.time()
logging.info("[AI] bootstrapping dependencies ...")
start = time.time()
SB_BACKEND = "stable_baselines3"
from stable_baselines3 import A2C
logging.debug("[AI] A2C imported in %.2fs" % (time.time() - start))
start = time.time()
from stable_baselines3.a2c import MlpPolicy
logging.debug("[AI] MlpPolicy imported in %.2fs" % (time.time() - start))
SB_A2C_POLICY = MlpPolicy
start = time.time()
from stable_baselines3.common.vec_env import DummyVecEnv
logging.debug("[AI] DummyVecEnv imported in %.2fs" % (time.time() - start))
start = time.time()
import pwnagotchi.ai.gym as wrappers
logging.debug("[AI] gym wrapper imported in %.2fs" % (time.time() - start))
env = wrappers.Environment(agent, epoch)
env = DummyVecEnv([lambda: env])
logging.info("[AI] creating model ...")
start = time.time()
a2c = A2C(SB_A2C_POLICY, env, **config['params'])
logging.debug("[AI] A2C created in %.2fs" % (time.time() - start))
if from_disk and os.path.exists(config['path']):
logging.info("[AI] loading %s ..." % config['path'])
start = time.time()
a2c.load(config['path'], env)
logging.debug("[AI] A2C loaded in %.2fs" % (time.time() - start))
else:
logging.info("[AI] model created:")
for key, value in config['params'].items():
logging.info(" %s: %s" % (key, value))
logging.debug("[AI] total loading time is %.2fs" % (time.time() - begin))
return a2c
except Exception as e:
logging.info("[AI] Error while starting AI")
logging.debug("[AI] error while starting AI (%s)", e)
logging.info("[AI] Deleting brain and restarting.")
os.system("rm /root/brain.nn && service pwnagotchi restart")
logging.warning("[AI] AI not loaded!")
return False

249
pwnagotchi/ai/epoch.py Normal file
View File

@ -0,0 +1,249 @@
import time
import threading
import logging
import pwnagotchi
import pwnagotchi.utils as utils
import pwnagotchi.mesh.wifi as wifi
from pwnagotchi.ai.reward import RewardFunction
class Epoch(object):
def __init__(self, config):
self.epoch = 0
self.config = config
# how many consecutive epochs with no activity
self.inactive_for = 0
# how many consecutive epochs with activity
self.active_for = 0
# number of epochs with no visible access points
self.blind_for = 0
# number of epochs in sad state
self.sad_for = 0
# number of epochs in bored state
self.bored_for = 0
# did deauth in this epoch in the current channel?
self.did_deauth = False
# number of deauths in this epoch
self.num_deauths = 0
# did associate in this epoch in the current channel?
self.did_associate = False
# number of associations in this epoch
self.num_assocs = 0
# number of assocs or deauths missed
self.num_missed = 0
# did get any handshake in this epoch?
self.did_handshakes = False
# number of handshakes captured in this epoch
self.num_shakes = 0
# number of channels hops
self.num_hops = 0
# number of seconds sleeping
self.num_slept = 0
# number of peers seen during this epoch
self.num_peers = 0
# cumulative bond factor
self.tot_bond_factor = 0.0 # cum_bond_factor sounded worse ...
# average bond factor
self.avg_bond_factor = 0.0
# any activity at all during this epoch?
self.any_activity = False
# when the current epoch started
self.epoch_started = time.time()
# last epoch duration
self.epoch_duration = 0
# https://www.metageek.com/training/resources/why-channels-1-6-11.html
self.non_overlapping_channels = {1: 0, 6: 0, 11: 0}
# observation vectors
self._observation = {
'aps_histogram': [0.0] * wifi.NumChannels,
'sta_histogram': [0.0] * wifi.NumChannels,
'peers_histogram': [0.0] * wifi.NumChannels
}
self._observation_ready = threading.Event()
self._epoch_data = {}
self._epoch_data_ready = threading.Event()
self._reward = RewardFunction()
def wait_for_epoch_data(self, with_observation=True, timeout=None):
# if with_observation:
# self._observation_ready.wait(timeout)
# self._observation_ready.clear()
self._epoch_data_ready.wait(timeout)
self._epoch_data_ready.clear()
return self._epoch_data if with_observation is False else {**self._observation, **self._epoch_data}
def data(self):
return self._epoch_data
def observe(self, aps, peers):
num_aps = len(aps)
if num_aps == 0:
self.blind_for += 1
else:
self.blind_for = 0
bond_unit_scale = self.config['personality']['bond_encounters_factor']
self.num_peers = len(peers)
num_peers = self.num_peers + 1e-10 # avoid division by 0
self.tot_bond_factor = sum((peer.encounters for peer in peers)) / bond_unit_scale
self.avg_bond_factor = self.tot_bond_factor / num_peers
num_aps = len(aps) + 1e-10
num_sta = sum(len(ap['clients']) for ap in aps) + 1e-10
aps_per_chan = [0.0] * wifi.NumChannels
sta_per_chan = [0.0] * wifi.NumChannels
peers_per_chan = [0.0] * wifi.NumChannels
for ap in aps:
ch_idx = ap['channel'] - 1
try:
aps_per_chan[ch_idx] += 1.0
sta_per_chan[ch_idx] += len(ap['clients'])
except IndexError:
logging.error("got data on channel %d, we can store %d channels" % (ap['channel'], wifi.NumChannels))
for peer in peers:
try:
peers_per_chan[peer.last_channel - 1] += 1.0
except IndexError:
logging.error(
"got peer data on channel %d, we can store %d channels" % (peer.last_channel, wifi.NumChannels))
# normalize
aps_per_chan = [e / num_aps for e in aps_per_chan]
sta_per_chan = [e / num_sta for e in sta_per_chan]
peers_per_chan = [e / num_peers for e in peers_per_chan]
self._observation = {
'aps_histogram': aps_per_chan,
'sta_histogram': sta_per_chan,
'peers_histogram': peers_per_chan
}
self._observation_ready.set()
def track(self, deauth=False, assoc=False, handshake=False, hop=False, sleep=False, miss=False, inc=1):
if deauth:
self.num_deauths += inc
self.did_deauth = True
self.any_activity = True
if assoc:
self.num_assocs += inc
self.did_associate = True
self.any_activity = True
if miss:
self.num_missed += inc
if hop:
self.num_hops += inc
# these two are used in order to determine the sleep time in seconds
# before switching to a new channel ... if nothing happened so far
# during this epoch on the current channel, we will sleep less
self.did_deauth = False
self.did_associate = False
if handshake:
self.num_shakes += inc
self.did_handshakes = True
if sleep:
self.num_slept += inc
def next(self):
if self.any_activity is False and self.did_handshakes is False:
self.inactive_for += 1
self.active_for = 0
else:
self.active_for += 1
self.inactive_for = 0
self.sad_for = 0
self.bored_for = 0
if self.inactive_for >= self.config['personality']['sad_num_epochs']:
# sad > bored; cant be sad and bored
self.bored_for = 0
self.sad_for += 1
elif self.inactive_for >= self.config['personality']['bored_num_epochs']:
# sad_treshhold > inactive > bored_treshhold; cant be sad and bored
self.sad_for = 0
self.bored_for += 1
else:
self.sad_for = 0
self.bored_for = 0
now = time.time()
cpu = pwnagotchi.cpu_load("epoch")
mem = pwnagotchi.mem_usage()
temp = pwnagotchi.temperature()
self.epoch_duration = now - self.epoch_started
# cache the state of this epoch for other threads to read
self._epoch_data = {
'duration_secs': self.epoch_duration,
'slept_for_secs': self.num_slept,
'blind_for_epochs': self.blind_for,
'inactive_for_epochs': self.inactive_for,
'active_for_epochs': self.active_for,
'sad_for_epochs': self.sad_for,
'bored_for_epochs': self.bored_for,
'missed_interactions': self.num_missed,
'num_hops': self.num_hops,
'num_peers': self.num_peers,
'tot_bond': self.tot_bond_factor,
'avg_bond': self.avg_bond_factor,
'num_deauths': self.num_deauths,
'num_associations': self.num_assocs,
'num_handshakes': self.num_shakes,
'cpu_load': cpu,
'mem_usage': mem,
'temperature': temp
}
self._epoch_data['reward'] = self._reward(self.epoch + 1, self._epoch_data)
self._epoch_data_ready.set()
logging.info("[epoch %d] duration=%s slept_for=%s blind=%d sad=%d bored=%d inactive=%d active=%d peers=%d tot_bond=%.2f "
"avg_bond=%.2f hops=%d missed=%d deauths=%d assocs=%d handshakes=%d cpu=%d%% mem=%d%% "
"temperature=%dC reward=%s" % (
self.epoch,
utils.secs_to_hhmmss(self.epoch_duration),
utils.secs_to_hhmmss(self.num_slept),
self.blind_for,
self.sad_for,
self.bored_for,
self.inactive_for,
self.active_for,
self.num_peers,
self.tot_bond_factor,
self.avg_bond_factor,
self.num_hops,
self.num_missed,
self.num_deauths,
self.num_assocs,
self.num_shakes,
cpu * 100,
mem * 100,
temp,
self._epoch_data['reward']))
self.epoch += 1
self.epoch_started = now
self.did_deauth = False
self.num_deauths = 0
self.num_peers = 0
self.tot_bond_factor = 0.0
self.avg_bond_factor = 0.0
self.did_associate = False
self.num_assocs = 0
self.num_missed = 0
self.did_handshakes = False
self.num_shakes = 0
self.num_hops = 0
self.num_slept = 0
self.any_activity = False

View File

@ -0,0 +1,61 @@
import numpy as np
import pwnagotchi.mesh.wifi as wifi
MAX_EPOCH_DURATION = 1024
histogram_size = wifi.NumChannels
shape = (1,
# aps per channel
histogram_size +
# clients per channel
histogram_size +
# peers per channel
histogram_size +
# duration
1 +
# inactive
1 +
# active
1 +
# missed
1 +
# hops
1 +
# deauths
1 +
# assocs
1 +
# handshakes
1)
def featurize(state, step):
tot_epochs = step + 1e-10
tot_interactions = (state['num_deauths'] + state['num_associations']) + 1e-10
return np.concatenate((
# aps per channel
state['aps_histogram'],
# clients per channel
state['sta_histogram'],
# peers per channel
state['peers_histogram'],
# duration
[np.clip(state['duration_secs'] / MAX_EPOCH_DURATION, 0.0, 1.0)],
# inactive
[state['inactive_for_epochs'] / tot_epochs],
# active
[state['active_for_epochs'] / tot_epochs],
# missed
[state['missed_interactions'] / tot_interactions],
# hops
[state['num_hops'] / wifi.NumChannels],
# deauths
[state['num_deauths'] / tot_interactions],
# assocs
[state['num_associations'] / tot_interactions],
# handshakes
[state['num_handshakes'] / tot_interactions],
))

148
pwnagotchi/ai/gym.py Normal file
View File

@ -0,0 +1,148 @@
import logging
import gym
from gym import spaces
import numpy as np
import pwnagotchi.ai.featurizer as featurizer
import pwnagotchi.ai.reward as reward
from pwnagotchi.ai.parameter import Parameter
class Environment(gym.Env):
render_mode = "human"
metadata = {'render_modes': ['human']}
params = [
Parameter('min_rssi', min_value=-200, max_value=-50),
Parameter('ap_ttl', min_value=30, max_value=600),
Parameter('sta_ttl', min_value=60, max_value=300),
Parameter('recon_time', min_value=5, max_value=60),
Parameter('max_inactive_scale', min_value=3, max_value=10),
Parameter('recon_inactive_multiplier', min_value=1, max_value=3),
Parameter('hop_recon_time', min_value=5, max_value=60),
Parameter('min_recon_time', min_value=1, max_value=30),
Parameter('max_interactions', min_value=1, max_value=25),
Parameter('max_misses_for_recon', min_value=3, max_value=10),
Parameter('excited_num_epochs', min_value=5, max_value=30),
Parameter('bored_num_epochs', min_value=5, max_value=30),
Parameter('sad_num_epochs', min_value=5, max_value=30),
]
def __init__(self, agent, epoch):
super(Environment, self).__init__()
self._agent = agent
self._epoch = epoch
self._epoch_num = 0
self._last_render = None
channels = agent.supported_channels()
Environment.params += [
Parameter('_channel_%d' % ch, min_value=0, max_value=1, meta=ch + 1) for ch in
range(featurizer.histogram_size) if ch + 1 in channels
]
self.last = {
'reward': 0.0,
'observation': None,
'policy': None,
'params': {},
'state': None,
'state_v': None
}
self.action_space = spaces.MultiDiscrete([p.space_size() for p in Environment.params if p.trainable])
self.observation_space = spaces.Box(low=0, high=1, shape=featurizer.shape, dtype=np.float32)
self.reward_range = reward.range
@staticmethod
def policy_size():
return len(list(p for p in Environment.params if p.trainable))
@staticmethod
def policy_to_params(policy):
num = len(policy)
params = {}
assert len(Environment.params) == num
channels = []
for i in range(num):
param = Environment.params[i]
if '_channel' not in param.name:
params[param.name] = param.to_param_value(policy[i])
else:
has_chan = param.to_param_value(policy[i])
# print("%s policy:%s bool:%s" % (param.name, policy[i], has_chan))
chan = param.meta
if has_chan:
channels.append(chan)
params['channels'] = channels
return params
def _next_epoch(self):
logging.debug("[ai] waiting for epoch to finish ...")
return self._epoch.wait_for_epoch_data()
def _apply_policy(self, policy):
new_params = Environment.policy_to_params(policy)
self.last['policy'] = policy
self.last['params'] = new_params
self._agent.on_ai_policy(new_params)
def step(self, policy):
# create the parameters from the policy and update
# them in the algorithm
self._apply_policy(policy)
self._epoch_num += 1
# wait for the algorithm to run with the new parameters
state = self._next_epoch()
self.last['reward'] = state['reward']
self.last['state'] = state
self.last['state_v'] = featurizer.featurize(state, self._epoch_num)
self._agent.on_ai_step()
return self.last['state_v'], self.last['reward'], not self._agent.is_training(), {}
def reset(self):
# logging.info("[ai] resetting environment ...")
self._epoch_num = 0
state = self._next_epoch()
self.last['state'] = state
self.last['state_v'] = featurizer.featurize(state, 1)
return self.last['state_v']
def _render_histogram(self, hist):
for ch in range(featurizer.histogram_size):
if hist[ch]:
logging.info(" CH %d: %s" % (ch + 1, hist[ch]))
def render(self, mode='human', close=False, force=False):
# when using a vectorialized environment, render gets called twice
# avoid rendering the same data
if self._last_render == self._epoch_num:
return
if not self._agent.is_training() and not force:
return
self._last_render = self._epoch_num
logging.info("[AI] --- training epoch %d/%d ---" % (self._epoch_num, self._agent.training_epochs()))
logging.info("[AI] REWARD: %f" % self.last['reward'])
logging.debug(
"[AI] policy: %s" % ', '.join("%s:%s" % (name, value) for name, value in self.last['params'].items()))
logging.info("[AI] observation:")
for name, value in self.last['state'].items():
if 'histogram' in name:
logging.info(" %s" % name.replace('_histogram', ''))
self._render_histogram(value)

View File

@ -0,0 +1,30 @@
from gym import spaces
class Parameter(object):
def __init__(self, name, value=0.0, min_value=0, max_value=2, meta=None, trainable=True):
self.name = name
self.trainable = trainable
self.meta = meta
self.value = value
self.min_value = min_value
self.max_value = max_value + 1
# gymnasium.space.Discrete is within [0, 1, 2, ..., n-1]
if self.min_value < 0:
self.scale_factor = abs(self.min_value)
elif self.min_value > 0:
self.scale_factor = -self.min_value
else:
self.scale_factor = 0
def space_size(self):
return self.max_value + self.scale_factor
def space(self):
return spaces.Discrete(self.max_value + self.scale_factor)
def to_param_value(self, policy_v):
self.value = policy_v - self.scale_factor
assert self.min_value <= self.value <= self.max_value
return int(self.value)

27
pwnagotchi/ai/reward.py Normal file
View File

@ -0,0 +1,27 @@
import pwnagotchi.mesh.wifi as wifi
range = (-.7, 1.02)
fuck_zero = 1e-20
class RewardFunction(object):
def __call__(self, epoch_n, state):
tot_epochs = epoch_n + fuck_zero
tot_interactions = max(state['num_deauths'] + state['num_associations'], state['num_handshakes']) + fuck_zero
tot_channels = wifi.NumChannels
h = state['num_handshakes'] / tot_interactions
a = .2 * (state['active_for_epochs'] / tot_epochs)
c = .1 * (state['num_hops'] / tot_channels)
b = -.3 * (state['blind_for_epochs'] / tot_epochs)
m = -.3 * (state['missed_interactions'] / tot_interactions)
i = -.2 * (state['inactive_for_epochs'] / tot_epochs)
# include emotions if state >= 5 epochs
_sad = state['sad_for_epochs'] if state['sad_for_epochs'] >= 5 else 0
_bored = state['bored_for_epochs'] if state['bored_for_epochs'] >= 5 else 0
s = -.2 * (_sad / tot_epochs)
l = -.1 * (_bored / tot_epochs)
return h + a + c + b + i + m + s + l

197
pwnagotchi/ai/train.py Normal file
View File

@ -0,0 +1,197 @@
import _thread
import threading
import time
import random
import os
import json
import logging
import pwnagotchi.plugins as plugins
import pwnagotchi.ai as ai
class Stats(object):
def __init__(self, path, events_receiver):
self._lock = threading.Lock()
self._receiver = events_receiver
self.path = path
self.born_at = time.time()
# total epochs lived (trained + just eval)
self.epochs_lived = 0
# total training epochs
self.epochs_trained = 0
self.worst_reward = 0.0
self.best_reward = 0.0
self.load()
def on_epoch(self, data, training):
best_r = False
worst_r = False
with self._lock:
reward = data['reward']
if reward < self.worst_reward:
self.worst_reward = reward
worst_r = True
elif reward > self.best_reward:
best_r = True
self.best_reward = reward
self.epochs_lived += 1
if training:
self.epochs_trained += 1
self.save()
if best_r:
self._receiver.on_ai_best_reward(reward)
elif worst_r:
self._receiver.on_ai_worst_reward(reward)
def load(self):
with self._lock:
if os.path.exists(self.path) and os.path.getsize(self.path) > 0:
logging.info("[AI] loading %s" % self.path)
with open(self.path, 'rt') as fp:
obj = json.load(fp)
self.born_at = obj['born_at']
self.epochs_lived, self.epochs_trained = obj['epochs_lived'], obj['epochs_trained']
self.best_reward, self.worst_reward = obj['rewards']['best'], obj['rewards']['worst']
def save(self):
with self._lock:
logging.info("[AI] saving %s" % self.path)
data = json.dumps({
'born_at': self.born_at,
'epochs_lived': self.epochs_lived,
'epochs_trained': self.epochs_trained,
'rewards': {
'best': self.best_reward,
'worst': self.worst_reward
}
})
temp = "%s.tmp" % self.path
back = "%s.bak" % self.path
with open(temp, 'wt') as fp:
fp.write(data)
if os.path.isfile(self.path):
os.replace(self.path, back)
os.replace(temp, self.path)
class AsyncTrainer(object):
def __init__(self, config):
self._config = config
self._model = None
self._is_training = False
self._training_epochs = 0
self._nn_path = self._config['ai']['path']
self._stats = Stats("%s.json" % os.path.splitext(self._nn_path)[0], self)
def set_training(self, training, for_epochs=0):
self._is_training = training
self._training_epochs = for_epochs
if training:
plugins.on('ai_training_start', self, for_epochs)
else:
plugins.on('ai_training_end', self)
def is_training(self):
return self._is_training
def training_epochs(self):
return self._training_epochs
def start_ai(self):
_thread.start_new_thread(self._ai_worker, ())
def _save_ai(self):
logging.info("[AI] saving model to %s ..." % self._nn_path)
temp = "%s.tmp" % self._nn_path
self._model.save(temp)
os.replace(temp, self._nn_path)
def on_ai_step(self):
self._model.env.render()
if self._is_training:
self._save_ai()
self._stats.on_epoch(self._epoch.data(), self._is_training)
def on_ai_training_step(self, _locals, _globals):
self._model.env.render()
plugins.on('ai_training_step', self, _locals, _globals)
def on_ai_policy(self, new_params):
plugins.on('ai_policy', self, new_params)
logging.info("[AI] setting new policy:")
for name, value in new_params.items():
if name in self._config['personality']:
curr_value = self._config['personality'][name]
if curr_value != value:
logging.info("[AI] ! %s: %s -> %s" % (name, curr_value, value))
self._config['personality'][name] = value
else:
logging.error("[AI] param %s not in personality configuration!" % name)
self.run('set wifi.ap.ttl %d' % self._config['personality']['ap_ttl'])
self.run('set wifi.sta.ttl %d' % self._config['personality']['sta_ttl'])
self.run('set wifi.rssi.min %d' % self._config['personality']['min_rssi'])
def on_ai_ready(self):
self._view.on_ai_ready()
plugins.on('ai_ready', self)
def on_ai_best_reward(self, r):
logging.info("[AI] best reward so far: %s" % r)
self._view.on_motivated(r)
plugins.on('ai_best_reward', self, r)
def on_ai_worst_reward(self, r):
logging.info("[AI] worst reward so far: %s" % r)
self._view.on_demotivated(r)
plugins.on('ai_worst_reward', self, r)
def _ai_worker(self):
self._model = ai.load(self._config, self, self._epoch)
if self._model:
self.on_ai_ready()
epochs_per_episode = self._config['ai']['epochs_per_episode']
obs = None
while True:
self._model.env.render()
# enter in training mode?
if random.random() > self._config['ai']['laziness']:
logging.info("[AI] learning for %d epochs ..." % epochs_per_episode)
try:
self.set_training(True, epochs_per_episode)
# back up brain file before starting new training set
if os.path.isfile(self._nn_path):
back = "%s.bak" % self._nn_path
os.replace(self._nn_path, back)
self._view.set("mode", " AI")
self._model.learn(total_timesteps=epochs_per_episode, callback=self.on_ai_training_step)
except Exception as e:
logging.exception("[AI] error while training (%s)", e)
finally:
self.set_training(False)
obs = self._model.env.reset()
# init the first time
elif obs is None:
obs = self._model.env.reset()
# run the inference
action, _ = self._model.predict(obs)
obs, _, _, _ = self._model.env.step(action)

16
pwnagotchi/ai/utils.py Normal file
View File

@ -0,0 +1,16 @@
import numpy as np
def normalize(v, min_v, max_v):
return (v - min_v) / (max_v - min_v)
def as_batches(x, y, batch_size, shuffle=True):
x_size = len(x)
assert x_size == len(y)
indices = np.random.permutation(x_size) if shuffle else None
for offset in range(0, x_size - batch_size + 1, batch_size):
excerpt = indices[offset:offset + batch_size] if shuffle else slice(offset, offset + batch_size)
yield x[excerpt], y[excerpt]

143
pwnagotchi/automata.py Normal file
View File

@ -0,0 +1,143 @@
import logging
import pwnagotchi.plugins as plugins
from pwnagotchi.ai.epoch import Epoch
# basic mood system
class Automata(object):
def __init__(self, config, view):
self._config = config
self._view = view
self._epoch = Epoch(config)
def _on_miss(self, who):
logging.info("it looks like %s is not in range anymore :/", who)
self._epoch.track(miss=True)
self._view.on_miss(who)
def _on_error(self, who, e):
# when we're trying to associate or deauth something that is not in range anymore
# (if we are moving), we get the following error from bettercap:
# error 400: 50:c7:bf:2e:d3:37 is an unknown BSSID or it is in the association skip list.
if 'is an unknown BSSID' in str(e):
self._on_miss(who)
else:
logging.error(e)
def set_starting(self):
self._view.on_starting()
def set_ready(self):
plugins.on('ready', self)
def in_good_mood(self):
return self._has_support_network_for(1.0)
def _has_support_network_for(self, factor):
bond_factor = self._config['personality']['bond_encounters_factor']
total_encounters = sum(peer.encounters for _, peer in self._peers.items())
support_factor = total_encounters / bond_factor
return support_factor >= factor
# triggered when it's a sad/bad day, but you have good friends around ^_^
def set_grateful(self):
self._view.on_grateful()
plugins.on('grateful', self)
def set_lonely(self):
if not self._has_support_network_for(1.0):
logging.info("unit is lonely")
self._view.on_lonely()
plugins.on('lonely', self)
else:
logging.info("unit is grateful instead of lonely")
self.set_grateful()
def set_bored(self):
factor = self._epoch.inactive_for / self._config['personality']['bored_num_epochs']
if not self._has_support_network_for(factor):
logging.warning("%d epochs with no activity -> bored", self._epoch.inactive_for)
self._view.on_bored()
plugins.on('bored', self)
else:
logging.info("unit is grateful instead of bored")
self.set_grateful()
def set_sad(self):
factor = self._epoch.inactive_for / self._config['personality']['sad_num_epochs']
if not self._has_support_network_for(factor):
logging.warning("%d epochs with no activity -> sad", self._epoch.inactive_for)
self._view.on_sad()
plugins.on('sad', self)
else:
logging.info("unit is grateful instead of sad")
self.set_grateful()
def set_angry(self, factor):
if not self._has_support_network_for(factor):
logging.warning("%d epochs with no activity -> angry", self._epoch.inactive_for)
self._view.on_angry()
plugins.on('angry', self)
else:
logging.info("unit is grateful instead of angry")
self.set_grateful()
def set_excited(self):
logging.warning("%d epochs with activity -> excited", self._epoch.active_for)
self._view.on_excited()
plugins.on('excited', self)
def set_rebooting(self):
self._view.on_rebooting()
plugins.on('rebooting', self)
def wait_for(self, t, sleeping=True):
plugins.on('sleep' if sleeping else 'wait', self, t)
self._view.wait(t, sleeping)
self._epoch.track(sleep=True, inc=t)
def is_stale(self):
return self._epoch.num_missed > self._config['personality']['max_misses_for_recon']
def any_activity(self):
return self._epoch.any_activity
def next_epoch(self):
logging.debug("agent.next_epoch()")
was_stale = self.is_stale()
did_miss = self._epoch.num_missed
self._epoch.next()
# after X misses during an epoch, set the status to lonely or angry
if was_stale:
factor = did_miss / self._config['personality']['max_misses_for_recon']
if factor >= 2.0:
self.set_angry(factor)
else:
logging.warning("agent missed %d interactions -> lonely", did_miss)
self.set_lonely()
# after X times being bored, the status is set to sad or angry
elif self._epoch.sad_for:
factor = self._epoch.inactive_for / self._config['personality']['sad_num_epochs']
if factor >= 2.0:
self.set_angry(factor)
else:
self.set_sad()
# after X times being inactive, the status is set to bored
elif self._epoch.bored_for:
self.set_bored()
# after X times being active, the status is set to happy / excited
elif self._epoch.active_for >= self._config['personality']['excited_num_epochs']:
self.set_excited()
elif self._epoch.active_for >= 5 and self._has_support_network_for(5.0):
self.set_grateful()
plugins.on('epoch', self, self._epoch.epoch - 1, self._epoch.data())
if self._epoch.blind_for >= self._config['main']['mon_max_blind_epochs']:
logging.critical("%d epochs without visible access points -> restarting ...", self._epoch.blind_for)
self._restart()
self._epoch.blind_for = 0

119
pwnagotchi/bettercap.py Normal file
View File

@ -0,0 +1,119 @@
import logging
import requests
import websockets
import asyncio
import random
from requests.auth import HTTPBasicAuth
from time import sleep
import pwnagotchi
requests.adapters.DEFAULT_RETRIES = 5 # increase retries number
ping_timeout = 180
ping_interval = 15
max_queue = 10000
min_sleep = 0.5
max_sleep = 5.0
def decode(r, verbose_errors=True):
try:
return r.json()
except Exception as e:
if r.status_code == 200:
logging.error("error while decoding json: error='%s' resp='%s'" % (e, r.text))
else:
err = "error %d: %s" % (r.status_code, r.text.strip())
if verbose_errors:
logging.info(err)
raise Exception(err)
return r.text
class Client(object):
def __init__(self, hostname='localhost', scheme='http', port=8081, username='user', password='pass'):
self.hostname = hostname
self.scheme = scheme
self.port = port
self.username = username
self.password = password
self.url = "%s://%s:%d/api" % (scheme, hostname, port)
self.websocket = "ws://%s:%s@%s:%d/api" % (username, password, hostname, port)
self.auth = HTTPBasicAuth(username, password)
# session takes optional argument to pull a sub-dictionary
# ex.: "session/wifi", "session/ble"
def session(self, sess="session"):
r = requests.get("%s/%s" % (self.url, sess), auth=self.auth)
return decode(r)
async def start_websocket(self, consumer):
s = "%s/events" % self.websocket
# More modern version of the approach below
# logging.info("Creating new websocket...")
# async for ws in websockets.connect(s):
# try:
# async for msg in ws:
# try:
# await consumer(msg)
# except Exception as ex:
# logging.debug("Error while parsing event (%s)", ex)
# except websockets.exceptions.ConnectionClosedError:
# sleep_time = max_sleep*random.random()
# logging.warning('Retrying websocket connection in {} sec'.format(sleep_time))
# await asyncio.sleep(sleep_time)
# continue
# restarted every time the connection fails
while True:
logging.info("[bettercap] creating new websocket...")
try:
async with websockets.connect(s, ping_interval=ping_interval, ping_timeout=ping_timeout,
max_queue=max_queue) as ws:
# listener loop
while True:
try:
async for msg in ws:
try:
await consumer(msg)
except Exception as ex:
logging.debug("[bettercap] error while parsing event (%s)", ex)
except websockets.ConnectionClosedError:
try:
pong = await ws.ping()
await asyncio.wait_for(pong, timeout=ping_timeout)
logging.warning('[bettercap] ping OK, keeping connection alive...')
continue
except:
sleep_time = min_sleep + max_sleep*random.random()
logging.warning('[bettercap] ping error - retrying connection in {} sec'.format(sleep_time))
await asyncio.sleep(sleep_time)
break
except ConnectionRefusedError:
sleep_time = min_sleep + max_sleep*random.random()
logging.warning('[bettercap] nobody seems to be listening at the bettercap endpoint...')
logging.warning('[bettercap] retrying connection in {} sec'.format(sleep_time))
await asyncio.sleep(sleep_time)
continue
except OSError:
sleep_time = min_sleep + max_sleep * random.random()
logging.warning('connection to the bettercap endpoint failed...')
pwnagotchi.restart("AUTO")
def run(self, command, verbose_errors=True):
while True:
try:
r = requests.post("%s/session" % self.url, auth=self.auth, json={'cmd': command})
except requests.exceptions.ConnectionError as e:
sleep_time = min_sleep + max_sleep*random.random()
logging.warning("[bettercap] can't run my request... connection to the bettercap endpoint failed...")
logging.warning('[bettercap] retrying run in {} sec'.format(sleep_time))
sleep(sleep_time)
else:
break
return decode(r, verbose_errors=verbose_errors)

231
pwnagotchi/defaults.toml Normal file
View File

@ -0,0 +1,231 @@
main.name = "pwnagotchi"
main.lang = "en"
main.whitelist = [
"EXAMPLE_NETWORK",
"ANOTHER_EXAMPLE_NETWORK",
"fo:od:ba:be:fo:od",
"fo:od:ba"
]
main.confd = "/etc/pwnagotchi/conf.d/"
main.custom_plugin_repos = [
"https://github.com/jayofelony/pwnagotchi-torch-plugins/archive/master.zip",
"https://github.com/tisboyo/pwnagotchi-pisugar2-plugin/archive/master.zip",
"https://github.com/nullm0ose/pwnagotchi-plugin-pisugar3/archive/master.zip",
"https://github.com/Sniffleupagus/pwnagotchi_plugins/archive/master.zip",
"https://github.com/NeonLightning/pwny/archive/master.zip",
"https://github.com/marbasec/UPSLite_Plugin_1_3/archive/master.zip"
]
main.custom_plugins = "/usr/local/share/pwnagotchi/custom-plugins/"
main.plugins.auto-update.enabled = true
main.plugins.auto-update.install = true
main.plugins.auto-update.interval = 1
main.plugins.bt-tether.enabled = false
main.plugins.bt-tether.devices.android-phone.enabled = false
main.plugins.bt-tether.devices.android-phone.search_order = 1
main.plugins.bt-tether.devices.android-phone.mac = ""
main.plugins.bt-tether.devices.android-phone.ip = "192.168.44.44"
main.plugins.bt-tether.devices.android-phone.netmask = 24
main.plugins.bt-tether.devices.android-phone.interval = 1
main.plugins.bt-tether.devices.android-phone.scantime = 10
main.plugins.bt-tether.devices.android-phone.max_tries = 10
main.plugins.bt-tether.devices.android-phone.share_internet = false
main.plugins.bt-tether.devices.android-phone.priority = 1
main.plugins.bt-tether.devices.ios-phone.enabled = false
main.plugins.bt-tether.devices.ios-phone.search_order = 2
main.plugins.bt-tether.devices.ios-phone.mac = ""
main.plugins.bt-tether.devices.ios-phone.ip = "172.20.10.6"
main.plugins.bt-tether.devices.ios-phone.netmask = 24
main.plugins.bt-tether.devices.ios-phone.interval = 5
main.plugins.bt-tether.devices.ios-phone.scantime = 20
main.plugins.bt-tether.devices.ios-phone.max_tries = 0
main.plugins.bt-tether.devices.ios-phone.share_internet = false
main.plugins.bt-tether.devices.ios-phone.priority = 999
main.plugins.fix_services.enabled = true
main.plugins.gdrivesync.enabled = false
main.plugins.gdrivesync.backupfiles = ['']
main.plugins.gdrivesync.backup_folder = "PwnagotchiBackups"
main.plugin.gdrivesync.interval = 1
main.plugins.gpio_buttons.enabled = false
main.plugins.gps.enabled = false
main.plugins.gps.speed = 19200
main.plugins.gps.device = "/dev/ttyUSB0" # for GPSD: "localhost:2947"
main.plugins.grid.enabled = true
main.plugins.grid.report = true
main.plugins.logtail.enabled = false
main.plugins.logtail.max-lines = 10000
main.plugins.memtemp.enabled = false
main.plugins.memtemp.scale = "celsius"
main.plugins.memtemp.orientation = "horizontal"
main.plugins.net-pos.enabled = false
main.plugins.net-pos.api_key = "test"
main.plugins.onlinehashcrack.enabled = false
main.plugins.onlinehashcrack.email = ""
main.plugins.onlinehashcrack.dashboard = ""
main.plugins.onlinehashcrack.single_files = false
main.plugins.pisugar2.enabled = false
main.plugins.pisugar2.shutdown = 5
main.plugins.pisugar2.sync_rtc_on_boot = false
main.plugins.session-stats.enabled = true
main.plugins.session-stats.save_directory = "/var/tmp/pwnagotchi/sessions/"
main.plugins.ups_hat_c.enabled = false
main.plugins.ups_hat_c.label_on = true # show BAT label or just percentage
main.plugins.ups_hat_c.shutdown = 5 # battery percent at which the device will turn off
main.plugins.ups_hat_c.bat_x_coord = 140
main.plugins.ups_hat_c.bat_y_coord = 0
main.plugins.ups_lite.enabled = false
main.plugins.ups_lite.shutdown = 2
main.plugins.webcfg.enabled = true
main.plugins.webgpsmap.enabled = false
main.plugins.wigle.enabled = false
main.plugins.wigle.api_key = ""
main.plugins.wigle.donate = false
main.plugins.wpa-sec.enabled = false
main.plugins.wpa-sec.api_key = ""
main.plugins.wpa-sec.api_url = "https://wpa-sec.stanev.org"
main.plugins.wpa-sec.download_results = false
main.iface = "wlan0mon"
main.mon_start_cmd = "/usr/bin/monstart"
main.mon_stop_cmd = "/usr/bin/monstop"
main.mon_max_blind_epochs = 50
main.no_restart = false
main.filter = ""
main.log.path = "/var/log/pwnagotchi.log"
main.log.rotation.enabled = true
main.log.rotation.size = "10M"
ai.enabled = true
ai.path = "/root/brain.nn"
ai.laziness = 0.1
ai.epochs_per_episode = 50
ai.params.gamma = 0.99
ai.params.n_steps = 1
ai.params.vf_coef = 0.25
ai.params.ent_coef = 0.01
ai.params.max_grad_norm = 0.5
ai.params.learning_rate = 0.001
ai.params.verbose = 1
personality.advertise = true
personality.deauth = true
personality.associate = true
personality.channels = []
personality.min_rssi = -200
personality.ap_ttl = 120
personality.sta_ttl = 300
personality.recon_time = 30
personality.max_inactive_scale = 2
personality.recon_inactive_multiplier = 2
personality.hop_recon_time = 10
personality.min_recon_time = 5
personality.max_interactions = 3
personality.max_misses_for_recon = 5
personality.excited_num_epochs = 10
personality.bored_num_epochs = 15
personality.sad_num_epochs = 25
personality.bond_encounters_factor = 20000
personality.throttle_a = 0.4
personality.throttle_d = 0.9
personality.clear_on_exit = true # clear display when shutting down cleanly
ui.fps = 0.0
ui.font.name = "DejaVuSansMono" # for japanese: fonts-japanese-gothic
ui.font.size_offset = 0 # will be added to the font size
ui.faces.look_r = "( ⚆_⚆)"
ui.faces.look_l = "(☉_☉ )"
ui.faces.look_r_happy = "( ◕‿◕)"
ui.faces.look_l_happy = "(◕‿◕ )"
ui.faces.sleep = "(⇀‿‿↼)"
ui.faces.sleep2 = "(≖‿‿≖)"
ui.faces.awake = "(◕‿‿◕)"
ui.faces.bored = "(-__-)"
ui.faces.intense = "(°▃▃°)"
ui.faces.cool = "(⌐■_■)"
ui.faces.happy = "(•‿‿•)"
ui.faces.excited = "(ᵔ◡◡ᵔ)"
ui.faces.grateful = "(^‿‿^)"
ui.faces.motivated = "(☼‿‿☼)"
ui.faces.demotivated = "(≖__≖)"
ui.faces.smart = "(✜‿‿✜)"
ui.faces.lonely = "(ب__ب)"
ui.faces.sad = "(╥☁╥ )"
ui.faces.angry = "(-_-')"
ui.faces.friend = "(♥‿‿♥)"
ui.faces.broken = "(☓‿‿☓)"
ui.faces.debug = "(#__#)"
ui.faces.upload = "(1__0)"
ui.faces.upload1 = "(1__1)"
ui.faces.upload2 = "(0__1)"
ui.faces.png = false
ui.faces.position_x = 0
ui.faces.position_y = 34
ui.web.enabled = true
ui.web.address = "::" # listening on both ipv4 and ipv6 - switch to 0.0.0.0 to listen on just ipv4
ui.web.username = "changeme"
ui.web.password = "changeme"
ui.web.origin = ""
ui.web.port = 8080
ui.web.on_frame = ""
ui.display.enabled = false
ui.display.rotation = 180
ui.display.type = "waveshare_4"
bettercap.handshakes = "/root/handshakes"
bettercap.silence = [
"ble.device.new",
"ble.device.lost",
"ble.device.disconnected",
"ble.device.connected",
"ble.device.service.discovered",
"ble.device.characteristic.discovered",
"wifi.client.new",
"wifi.client.lost",
"wifi.client.probe",
"wifi.ap.new",
"wifi.ap.lost",
"mod.started"
]
fs.memory.enabled = true
fs.memory.mounts.log.enabled = true
fs.memory.mounts.log.mount = "/var/log/"
fs.memory.mounts.log.size = "50M"
fs.memory.mounts.log.sync = 60
fs.memory.mounts.log.zram = true
fs.memory.mounts.log.rsync = true
fs.memory.mounts.data.enabled = true
fs.memory.mounts.data.mount = "/var/tmp/pwnagotchi"
fs.memory.mounts.data.size = "10M"
fs.memory.mounts.data.sync = 3600
fs.memory.mounts.data.zram = true
fs.memory.mounts.data.rsync = true

190
pwnagotchi/fs/__init__.py Normal file
View File

@ -0,0 +1,190 @@
import os
import re
import tempfile
import contextlib
import shutil
import _thread
import logging
from time import sleep
from distutils.dir_util import copy_tree
mounts = list()
@contextlib.contextmanager
def ensure_write(filename, mode='w'):
path = os.path.dirname(filename)
fd, tmp = tempfile.mkstemp(dir=path)
with os.fdopen(fd, mode) as f:
yield f
f.flush()
os.fsync(f.fileno())
os.replace(tmp, filename)
def size_of(path):
"""
Calculate the sum of all the files in path
"""
total = 0
for root, _, files in os.walk(path):
for f in files:
total += os.path.getsize(os.path.join(root, f))
return total
def is_mountpoint(path):
"""
Checks if path is mountpoint
"""
return os.system(f"mountpoint -q {path}") == 0
def setup_mounts(config):
"""
Sets up all the configured mountpoints
"""
global mounts
fs_cfg = config['fs']['memory']
if not fs_cfg['enabled']:
return
for name, options in fs_cfg['mounts'].items():
if not options['enabled']:
continue
logging.debug("[FS] Trying to setup mount %s (%s)", name, options['mount'])
size,unit = re.match(r"(\d+)([a-zA-Z]+)", options['size']).groups()
target = os.path.join('/run/pwnagotchi/disk/', os.path.basename(options['mount']))
is_mounted = is_mountpoint(target)
logging.debug("[FS] %s is %s mounted", options['mount'],
"already" if is_mounted else "not yet")
m = MemoryFS(
options['mount'],
target,
size=options['size'],
zram=options['zram'],
zram_disk_size=f"{int(size)*2}{unit}",
rsync=options['rsync'])
if not is_mounted:
if not m.mount():
logging.debug(f"Error while mounting {m.mountpoint}")
continue
if not m.sync(to_ram=True):
logging.debug(f"Error while syncing to {m.mountpoint}")
m.umount()
continue
interval = int(options['sync'])
if interval:
logging.debug("[FS] Starting thread to sync %s (interval: %d)",
options['mount'], interval)
_thread.start_new_thread(m.daemonize, (interval,))
else:
logging.debug("[FS] Not syncing %s, because interval is 0",
options['mount'])
mounts.append(m)
class MemoryFS:
@staticmethod
def zram_install():
if not os.path.exists("/sys/class/zram-control"):
logging.debug("[FS] Installing zram")
return os.system("modprobe zram") == 0
return True
@staticmethod
def zram_dev():
logging.debug("[FS] Adding zram device")
return open("/sys/class/zram-control/hot_add", "rt").read().strip("\n")
def __init__(self, mount, disk, size="40M",
zram=True, zram_alg="lz4", zram_disk_size="100M",
zram_fs_type="ext4", rsync=True):
self.mountpoint = mount
self.disk = disk
self.size = size
self.zram = zram
self.zram_alg = zram_alg
self.zram_disk_size = zram_disk_size
self.zram_fs_type = zram_fs_type
self.zdev = None
self.rsync = True
self._setup()
def _setup(self):
if self.zram and MemoryFS.zram_install():
# setup zram
self.zdev = MemoryFS.zram_dev()
open(f"/sys/block/zram{self.zdev}/comp_algorithm", "wt").write(self.zram_alg)
open(f"/sys/block/zram{self.zdev}/disksize", "wt").write(self.zram_disk_size)
open(f"/sys/block/zram{self.zdev}/mem_limit", "wt").write(self.size)
logging.debug("[FS] Creating fs (type: %s)", self.zram_fs_type)
os.system(f"mke2fs -t {self.zram_fs_type} /dev/zram{self.zdev} >/dev/null 2>&1")
# ensure mountpoints exist
if not os.path.exists(self.disk):
logging.debug("[FS] Creating %s", self.disk)
os.makedirs(self.disk)
if not os.path.exists(self.mountpoint):
logging.debug("[FS] Creating %s", self.mountpoint)
os.makedirs(self.mountpoint)
def daemonize(self, interval=60):
logging.debug("[FS] Daemonized...")
while True:
self.sync()
sleep(interval)
def sync(self, to_ram=False):
source, dest = (self.disk, self.mountpoint) if to_ram else (self.mountpoint, self.disk)
needed, actually_free = size_of(source), shutil.disk_usage(dest)[2]
if actually_free >= needed:
logging.debug("[FS] Syncing %s -> %s", source,dest)
if self.rsync:
os.system(f"rsync -aXv --inplace --no-whole-file --delete-after {source}/ {dest}/ >/dev/null 2>&1")
else:
copy_tree(source, dest, preserve_symlinks=True)
os.system("sync")
return True
return False
def mount(self):
if os.system(f"mount --bind {self.mountpoint} {self.disk}"):
return False
if os.system(f"mount --make-private {self.disk}"):
return False
if self.zram and self.zdev is not None:
if os.system(f"mount -t {self.zram_fs_type} -o nosuid,noexec,nodev,user=pwnagotchi /dev/zram{self.zdev} {self.mountpoint}/"):
return False
else:
if os.system(f"mount -t tmpfs -o nosuid,noexec,nodev,mode=0755,size={self.size} pwnagotchi {self.mountpoint}/"):
return False
return True
def umount(self):
if os.system(f"umount -l {self.mountpoint}"):
return False
if os.system(f"umount -l {self.disk}"):
return False
return True

101
pwnagotchi/google/cmd.py Normal file
View File

@ -0,0 +1,101 @@
# Handles the commandline stuff
import pydrive2
from pydrive2.auth import GoogleAuth
import logging
import os
def add_parsers(subparsers):
"""
Adds the plugins subcommand to a given argparse.ArgumentParser
"""
#subparsers = parser.add_subparsers()
# pwnagotchi google
parser_google = subparsers.add_parser('google')
google_subparsers = parser_google.add_subparsers(dest='googlecmd')
# pwnagotchi google auth
parser_google_auth = google_subparsers.add_parser('login', help='Login to Google')
# pwnagotchi google refresh token
parser_google_refresh = google_subparsers.add_parser('refresh', help="Refresh Google authentication token")
return subparsers
def used_google_cmd(args):
"""
Checks if the plugins subcommand was used
"""
return hasattr(args, 'googlecmd')
def handle_cmd(args):
"""
Parses the arguments and does the thing the user wants
"""
if args.googlecmd == 'login':
return auth()
elif args.googlecmd == 'refresh':
return refresh()
raise NotImplementedError()
def auth():
# start authentication process
user_input = input("By completing these steps you give pwnagotchi access to your personal Google Drive!\n"
"Personal credentials will be stored only locally for automated verification in the future.\n"
"No one else but you have access to these.\n"
"Do you agree? \n\n[y(es)/n(o)]\n"
"Answer: ")
if user_input.lower() in ('y', 'yes'):
if not os.path.exists("/root/client_secrets.json"):
logging.error("client_secrets.json not found in /root. Please RTFM!")
return 0
try:
gauth = GoogleAuth(settings_file="/root/settings.yaml")
print(gauth.GetAuthUrl())
user_input = input("Please copy this URL into a browser, "
"complete the verification and then copy/paste the code from addressbar.\n\n"
"Code: ")
gauth.Auth(user_input)
gauth.SaveCredentialsFile("/root/credentials.json")
except Exception as e:
logging.error(f"Error: {e}")
return 0
def refresh():
# refresh token for x amount of time (seconds)
gauth = GoogleAuth(settings_file="/root/settings.yaml")
try:
# Try to load saved client credentials
gauth.LoadCredentialsFile("/root/credentials.json")
if gauth.access_token_expired:
if gauth.credentials is not None:
try:
# Refresh the token
gauth.Refresh()
print("Succesfully refresh access token ..")
except pydrive2.auth.RefreshError:
print(gauth.GetAuthUrl())
user_input = input("Please copy this URL into a browser, "
"complete the verification and then copy/paste the code from addressbar.\n\n"
"Code: ")
gauth.Auth(user_input)
else:
print(gauth.GetAuthUrl())
user_input = input("Please copy this URL into a browser, "
"complete the verification and then copy/paste the code from addressbar.\n\n"
"Code: ")
gauth.Auth(user_input)
except pydrive2.auth.InvalidCredentialsError:
print(gauth.GetAuthUrl())
user_input = input("Please copy this URL into a browser, "
"complete the verification and then copy/paste the code from addressbar.\n\n"
"Code: ")
gauth.Auth(user_input)
gauth.SaveCredentialsFile("/root/credentials.json")
gauth.Authorize()
print("No refresh required ..")
return 0

131
pwnagotchi/grid.py Normal file
View File

@ -0,0 +1,131 @@
import subprocess
import requests
import json
import logging
import pwnagotchi
# pwngrid-peer is running on port 8666
API_ADDRESS = "http://127.0.0.1:8666/api/v1"
def is_connected():
try:
# check DNS
host = 'https://api.opwngrid.xyz/api/v1/uptime'
r = requests.get(host, headers=None, timeout=(30.0, 60.0))
if r.json().get('isUp'):
return True
except:
pass
return False
def call(path, obj=None):
url = '%s%s' % (API_ADDRESS, path)
if obj is None:
r = requests.get(url, headers=None, timeout=(30.0, 60.0))
elif isinstance(obj, dict):
r = requests.post(url, headers=None, json=obj, timeout=(30.0, 60.0))
else:
r = requests.post(url, headers=None, data=obj, timeout=(30.0, 60.0))
if r.status_code != 200:
raise Exception("(status %d) %s" % (r.status_code, r.text))
return r.json()
def advertise(enabled=True):
return call("/mesh/%s" % 'true' if enabled else 'false')
def set_advertisement_data(data):
return call("/mesh/data", obj=data)
def get_advertisement_data():
return call("/mesh/data")
def memory():
return call("/mesh/memory")
def peers():
return call("/mesh/peers")
def closest_peer():
all = peers()
return all[0] if len(all) else None
def update_data(last_session):
brain = {}
try:
with open('/root/brain.json') as fp:
brain = json.load(fp)
except:
pass
enabled = [name for name, options in pwnagotchi.config['main']['plugins'].items() if
'enabled' in options and options['enabled']]
language = pwnagotchi.config['main']['lang']
ai = pwnagotchi.config['ai']['enabled']
data = {
'ai': ai,
'session': {
'duration': last_session.duration,
'epochs': last_session.epochs,
'train_epochs': last_session.train_epochs,
'avg_reward': last_session.avg_reward,
'min_reward': last_session.min_reward,
'max_reward': last_session.max_reward,
'deauthed': last_session.deauthed,
'associated': last_session.associated,
'handshakes': last_session.handshakes,
'peers': last_session.peers,
},
'uname': subprocess.getoutput("uname -a"),
'brain': brain,
'version': pwnagotchi.__version__,
'build': "Pwnagotchi-Torch by Jayofelony",
'plugins': enabled,
'language': language,
'bettercap': subprocess.getoutput("bettercap -version").split(".\n\n")[1],
'opwngrid': subprocess.getoutput("pwngrid -version")
}
logging.debug("updating grid data: %s" % data)
call("/data", data)
def report_ap(essid, bssid):
try:
call("/report/ap", {
'essid': essid,
'bssid': bssid,
})
return True
except Exception as e:
logging.exception("error while reporting ap %s(%s)" % (essid, bssid))
return False
def inbox(page=1, with_pager=False):
obj = call("/inbox?p=%d" % page)
return obj["messages"] if not with_pager else obj
def inbox_message(id):
return call("/inbox/%d" % int(id))
def mark_message(id, mark):
return call("/inbox/%d/%s" % (int(id), str(mark)))
def send_message(to, message):
return call("/unit/%s/inbox" % to, message.encode('utf-8'))

71
pwnagotchi/identity.py Normal file
View File

@ -0,0 +1,71 @@
from Crypto.Signature import PKCS1_PSS
from Crypto.PublicKey import RSA
import Crypto.Hash.SHA256 as SHA256
import base64
import hashlib
import os
import logging
DefaultPath = "/etc/pwnagotchi/"
class KeyPair(object):
def __init__(self, path=DefaultPath, view=None):
self.path = path
self.priv_path = os.path.join(path, "id_rsa")
self.priv_key = None
self.pub_path = "%s.pub" % self.priv_path
self.pub_key = None
self.fingerprint_path = os.path.join(path, "fingerprint")
self._view = view
if not os.path.exists(self.path):
os.makedirs(self.path)
while True:
# first time, generate new keys
if not os.path.exists(self.priv_path) or not os.path.exists(self.pub_path):
self._view.on_keys_generation()
logging.info("generating %s ..." % self.priv_path)
os.system("pwngrid -generate -keys '%s'" % self.path)
# load keys: they might be corrupted if the unit has been turned off during the generation, in this case
# the exception will remove the files and go back at the beginning of this loop.
try:
with open(self.priv_path) as fp:
self.priv_key = RSA.importKey(fp.read())
with open(self.pub_path) as fp:
self.pub_key = RSA.importKey(fp.read())
self.pub_key_pem = self.pub_key.exportKey('PEM').decode("ascii")
# python is special
if 'RSA PUBLIC KEY' not in self.pub_key_pem:
self.pub_key_pem = self.pub_key_pem.replace('PUBLIC KEY', 'RSA PUBLIC KEY')
pem_ascii = self.pub_key_pem.encode("ascii")
self.pub_key_pem_b64 = base64.b64encode(pem_ascii).decode("ascii")
self.fingerprint = hashlib.sha256(pem_ascii).hexdigest()
with open(self.fingerprint_path, 'w+t') as fp:
fp.write(self.fingerprint)
# no exception, keys loaded correctly.
self._view.on_starting()
return
except Exception as e:
# if we're here, loading the keys broke something ...
logging.exception("error loading keys, maybe corrupted, deleting and regenerating ...")
try:
os.remove(self.priv_path)
os.remove(self.pub_path)
except:
pass
def sign(self, message):
hasher = SHA256.new(message.encode("ascii"))
signer = PKCS1_PSS.new(self.priv_key, saltLen=16)
signature = signer.sign(hasher)
signature_b64 = base64.b64encode(signature).decode("ascii")
return signature, signature_b64

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Afar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Abkhazian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Avestan\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,259 @@
# Afrikaans translation of pwnagotchi.
# Copyright (C) 2020.
# This file is distributed under the same license as the pwnagotchi package.
# FIRST AUTHOR MatthewNunu https://github.com/MatthewNunu, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: 1.5.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: MatthewNunu https://github.com/MatthewNunu\n"
"Language-Team: \n"
"Language: Afrikaans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr "ZzzzZZzzzzZzzz"
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Hi, ek is Pwnagotchi! Begin tans ..."
msgid "New day, new hunt, new pwns!"
msgstr "Nuwe dag, nuwe jag, nuwe pwns!"
msgid "Hack the Planet!"
msgstr "Hack die wêreld!"
msgid "AI ready."
msgstr "AI gereed."
msgid "The neural network is ready."
msgstr "Die neurale netwerk is gereed."
msgid "Generating keys, do not turn off ..."
msgstr "Genereer wagwoord, moenie afskakel nie ..."
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Haai, kanaal {channel} is gratis! Jou AP sal dankie sê."
msgid "Reading last session logs ..."
msgstr "Lees laaste sessie logs ..."
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr "Ek het {lines_so_far} tot dusver gelees ..."
msgid "I'm bored ..."
msgstr "Ek's verveeld ..."
msgid "Let's go for a walk!"
msgstr "Kom ons gaan vir 'n loopie!"
msgid "This is the best day of my life!"
msgstr "Dit is die beste dag van my lewe!"
msgid "Shitty day :/"
msgstr "Slegte dag :/"
msgid "I'm extremely bored ..."
msgstr "Ek's baie verveeld ..."
msgid "I'm very sad ..."
msgstr "Ek's baie hartseer ..."
msgid "I'm sad"
msgstr "Ek's hartseer ..."
msgid "Leave me alone ..."
msgstr "Los my uit ..."
msgid "I'm mad at you!"
msgstr "Ek is kwaad vir jou!"
msgid "I'm living the life!"
msgstr "Ek leef my beste lewe!"
msgid "I pwn therefore I am."
msgstr "Ek pwn daarom is ek."
msgid "So many networks!!!"
msgstr "Soveel netwerke!!!"
msgid "I'm having so much fun!"
msgstr "Ek het soveel pret!"
msgid "My crime is that of curiosity ..."
msgstr "My misdaad is dié van nuuskierigheid ..."
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Hallo {name}! Lekker om jou te ontmoet."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr "Yo {name}! Sup?"
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr "Haai {name} hoe gaan dit?"
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "{name}} is naby!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Uhm ... totsiens {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} is weg ..."
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Oeps ... {name} is weg."
#, python-brace-format
msgid "{name} missed!"
msgstr "{name} gemis!"
msgid "Missed!"
msgstr "Gemis!"
msgid "Good friends are a blessing!"
msgstr "Goeie vriende is 'n seën!"
msgid "I love my friends!"
msgstr "Ek is lief vir my vriende!"
msgid "Nobody wants to play with me ..."
msgstr "Niemand wil met my speel nie ..."
msgid "I feel so alone ..."
msgstr "Ek voel so alleen ..."
msgid "Where's everybody?!"
msgstr "Waar is almal?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Slaap vir {secs}s ..."
msgid "Zzzzz"
msgstr "Zzzzz"
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr "ZzzZzzz ({secs}s)"
msgid "Good night."
msgstr "Goeie nag."
msgid "Zzz"
msgstr "Zzz"
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Wag vir {secs}s ..."
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Kyk rond ({secs}s)"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Haai {what} kom ons wees vriende!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Assosieer met {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Yo {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Net besluit dat {mac} geen WiFi nodig het nie!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Deauthenticating {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Kickbanning {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Koel, ons het {num} nuwe handdruk gekry!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Jy het {count} nuwe boodskap!"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Oops, iets het verkeerd gegaan ... Herlaai ..."
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr "Laai data op na {to} ..."
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "{num} stasies geskop\n"
msgid "Made >999 new friends\n"
msgstr "Meer as >999 nuwe vriende gemaak\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "{num} nuwe vriende gemaak\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Het {num} handdrukke gekry\n"
msgid "Met 1 peer"
msgstr "Ontmoet 1 eweknie"
#, python-brace-format
msgid "Met {num} peers"
msgstr "Ontmoet {num} eweknieë"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Ek het vir {duration} gepwn en het {deauthed} kliënte geskop! Ek het ook "
"{associated} nuwe vriende ontmoet en het {handshakes} handdrukke geëet! "
"#pwnagotchi #pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "ure"
msgid "minutes"
msgstr "minute"
msgid "seconds"
msgstr "sekondes"
msgid "hour"
msgstr "uur"
msgid "minute"
msgstr "minuut"
msgid "second"
msgstr "tweede"

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Akan\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Amharic\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Aragonese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Arabic\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Assamese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Avaric\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Aymara\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Azerbaijani\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Bashkir\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,268 @@
# Pwnagotchi Belarusian translation.
# Copyright (C) 2019
# This file is distributed under the same license as the pwnagotchi package.
# First author <https://github.com/andreifinski>, 2023
msgid ""
msgstr ""
"Project-Id-Version: Pwnagotchi Belarusian translation v 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: <https://github.com/andreifinski>\n"
"Language-Team: \n"
"Language: by_BY\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Poedit 2.2.4\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SearchPath-0: voice.po\n"
msgid "ZzzzZZzzzzZzzz"
msgstr "ХрррРРррррРррр"
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Вітаю, я Pwnagotchi! Пачынаем!"
msgid "New day, new hunt, new pwns!"
msgstr "Новы дзень, новае паляванне, новыя ўзломы!"
msgid "Hack the Planet!"
msgstr "Узламай гэту Планету!"
msgid "AI ready."
msgstr "A.I. гатовы."
msgid "The neural network is ready."
msgstr "Нейронная сетка гатова."
msgid "Generating keys, do not turn off ..."
msgstr "Генерацыя ключоў, не выключайце..."
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Гэй, канал {channel} вольны! Ваш пункт доступу скажа дзякуй."
msgid "Reading last session logs ..."
msgstr "Чытаю логі апошняй сэсіі..."
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr "Чытаю {lines_so_far} радкоў логаў..."
msgid "I'm bored ..."
msgstr "Мне сумна …"
msgid "Let's go for a walk!"
msgstr "Хадзем пагуляем!"
msgid "This is the best day of my life!"
msgstr "Лепшы дзень у маім жыцці!"
msgid "Shitty day :/"
msgstr "Дзень проста гаўно :/"
msgid "I'm extremely bored ..."
msgstr "Мне вельмі нудна …"
msgid "I'm very sad ..."
msgstr "Мне вельмі сумна …"
msgid "I'm sad"
msgstr "Мне сумна"
msgid "Leave me alone ..."
msgstr "Пакінь мяне ў спакоі..."
msgid "I'm mad at you!"
msgstr "Я злы на цябе!"
msgid "I'm living the life!"
msgstr "Жыву поўным жыццём!"
msgid "I pwn therefore I am."
msgstr "Я ўзломваю, таму я існую."
msgid "So many networks!!!"
msgstr "Так шмат сетак!!!"
msgid "I'm having so much fun!"
msgstr "Мне так весела!"
msgid "My crime is that of curiosity ..."
msgstr "Маё злачынства - гэта цікаўнасць…"
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Прывітанне, {name}! Прыемна пазнаёміцца."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr "Гэй {name}! Як маешся?"
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "Мэта {name} побач!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Хм … да пабачэння {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} сышоў"
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Ай-яй {name} сышоў."
#, python-brace-format
msgid "{name} missed!"
msgstr "{name} страціў!"
msgid "Missed!"
msgstr "Прамахнуўся!"
msgid "Good friends are a blessing!"
msgstr "Добрыя сябры - гэта шчасце!"
msgid "I love my friends!"
msgstr "Я люблю сваіх сяброў!"
msgid "Nobody wants to play with me ..."
msgstr "Ніхто не жадае са мной гуляць ..."
msgid "I feel so alone ..."
msgstr "Я такі самотны…"
msgid "Where's everybody?!"
msgstr "Дзе ўсе?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Драмлю {secs}с …"
msgid "Zzzzz"
msgstr "Хрррр..."
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr "ХррРрр.. ({secs}c)"
msgid "Good night."
msgstr "Дабранач."
msgid "Zzz"
msgstr "Хрр"
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Чакаем {secs}c …"
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Аглядаюся вакол ({secs}с)"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Гэй, {what} давай сябраваць!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Звязваюся з {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Ёў {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Проста вырашыў, што {mac} не патрэбен WiFi! Гы-гы :)"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Дэаўтэнтыфікацыя {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Пінаю {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Крута, мы атрымалі {num} новы поціск рукі!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Крута, мы атрымалі {count} новы поціск рукі!"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Ой, нешта пайшло не так … Перазагружаюся …"
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "Пнуў {num} станцыю\n"
msgid "Made >999 new friends\n"
msgstr "Атрымаў >999 новых сяброў\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "Атрымаў {num} новых сяброў\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Атрымаў {num} поціскаў рукі\n"
msgid "Met 1 peer"
msgstr "Сустрэўся адзін знаёмы"
#, python-brace-format
msgid "Met {num} peers"
msgstr "Сустрэліся {num} знаёмых"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Я ўзломваў {duration} и штурхаў {deauthed} кліентаў! Таксама сустрэў "
"{associated} новых сяброў и з'еў {handshakes} поціскаў рукі! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "гадзін"
msgid "minutes"
msgstr "хвілін"
msgid "seconds"
msgstr ""
msgid "hour"
msgstr "гадзіна"
msgid "minute"
msgstr "хвіліну"
msgid "second"
msgstr ""
#, python-brace-format
#~ msgid "Unit {name} is nearby! {name}"
#~ msgstr "Мэта {name} побач!"

Binary file not shown.

View File

@ -0,0 +1,260 @@
# pwnagotchi voice data.
# Copyright (C) 2019
# This file is distributed under the same license as the pwnagotchi package.
# FIRST AUTHOR <https://github.com/georgikoemdzhiev>, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: 2019-10-23 20:56+0200\n"
"Last-Translator: Georgi Koemdzhiev <https://github.com/georgikoemdzhiev>\n"
"Language-Team: \n"
"Language: bulgarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Здравей, аз съм Pwnagotchi! Стартиране ..."
msgid "New day, new hunt, new pwns!"
msgstr "Нов ден, нов лов, нови pwns!"
msgid "Hack the Planet!"
msgstr "Хакни планетата!"
msgid "AI ready."
msgstr "AI готов."
msgid "The neural network is ready."
msgstr "Невронната мрежа е готова."
msgid "Generating keys, do not turn off ..."
msgstr "Генериране на ключове, не изключвай ..."
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Здравей, канал {channel} е свободен! твоя AP ще каже благодаря."
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr "Скучно ми е ..."
msgid "Let's go for a walk!"
msgstr "Хайда да се поразходим!"
msgid "This is the best day of my life!"
msgstr "Това е най-добрият ден в живота ми!"
msgid "Shitty day :/"
msgstr "Тъп ден :/"
msgid "I'm extremely bored ..."
msgstr "Супер много ми е скучно ..."
msgid "I'm very sad ..."
msgstr "Много съм тъжен ..."
msgid "I'm sad"
msgstr "Тъжен съм"
msgid "Leave me alone ..."
msgstr "Остави ме на мира ..."
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr "Живота ми е фантастичен!"
msgid "I pwn therefore I am."
msgstr "Аз живея за да pwn-вам."
msgid "So many networks!!!"
msgstr "Толкова много мрежи!!!"
msgid "I'm having so much fun!"
msgstr "Толкова много се забавлявам!"
msgid "My crime is that of curiosity ..."
msgstr "Моето престъпление е това че съм любопитен ..."
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Здравей {name}! Приятно ми е да се запознаем."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "Устройство {name} е наблизо!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Ами ... довиждане {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} изчезна ..."
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Упс ... {name} изчезна."
#, python-brace-format
msgid "{name} missed!"
msgstr "{name} загубен!"
msgid "Missed!"
msgstr "Загубен!"
msgid "Good friends are a blessing!"
msgstr "Добрите приятели са благословия!"
msgid "I love my friends!"
msgstr "Обичам приятелите си!"
msgid "Nobody wants to play with me ..."
msgstr "Никой не иска да си играе с мен ..."
msgid "I feel so alone ..."
msgstr "Чувствам се толкова самотен ..."
msgid "Where's everybody?!"
msgstr "Къде са всички?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Заспивам за {secs} секунди ..."
msgid "Zzzzz"
msgstr "Zzzzz"
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr "ZzzZzzz ({secs}s)"
msgid "Good night."
msgstr "Лека нощ."
msgid "Zzz"
msgstr "Zzz"
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Чакам {secs} секунди ..."
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Оглеждам се ({secs}секунди)"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Хей {what} нека станем приятели!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Свръзване с {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Ей {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Реших, че {mac} не се нуждае от WiFi!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Неудостоверяване на {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Ритам и прогонвам {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Супер, имаме {num} нови handshake{plural}!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Имате {count} нови съобщения!"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Упс, нещо се обърка ... Рестартиране ..."
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "Отхвърлих {num} станции\n"
#
msgid "Made >999 new friends\n"
msgstr "Направих >999 нови приятели\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "Направих {num} нови приятели\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Имам {num} handshakes\n"
msgid "Met 1 peer"
msgstr "Срещнах 1 връстник"
#, python-brace-format
msgid "Met {num} peers"
msgstr "Срещнах {num} връстници"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Аз pwn-вах за {duration} и отхвърлих {deauthed} clients! Също така срещнах "
"{associated} нови приятели и изядох {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "часове"
msgid "minutes"
msgstr "минути"
msgid "seconds"
msgstr "секунди"
msgid "hour"
msgstr "час"
msgid "minute"
msgstr "минута"
msgid "second"
msgstr "секунда"

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Bislama\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Bambara\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Bengali\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Tibetan\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Breton\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Bosnian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Catalan\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Chechen\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Chamorro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Corsican\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Cree\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,259 @@
# pwnigotchi voice data
# Copyright (C) 2020
# This file is distributed under the same license as the pwnagotchi package.
# FIRST AUTHOR czechball@users.noreply.github.com, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Czechball <czechball@users.noreply.github.com>\n"
"Language-Team: pwnagotchi <33197631+dadav@users.noreply.github.com>\n"
"Language: Czech\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr "ZzzzZZzzzzZzzz"
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Ahoj, já jsem Pwnagotchi! Startuju ..."
msgid "New day, new hunt, new pwns!"
msgstr "Nový den, nový lov, nové úlovky!"
msgid "Hack the Planet!"
msgstr "Hackni celou planetu!"
msgid "AI ready."
msgstr "AI připraveno."
msgid "The neural network is ready."
msgstr "Neuronová síť je připravena."
msgid "Generating keys, do not turn off ..."
msgstr "Generování klíčů, nevypínej mě..."
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Hej, kanál {channel} je volný! Tvůj AP ti poděkuje."
msgid "Reading last session logs ..."
msgstr "Čtení posledních zpráv z logu ..."
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr "Zatím přečteno {lines_so_far} řádků logu ..."
msgid "I'm bored ..."
msgstr "Nudím se ..."
msgid "Let's go for a walk!"
msgstr "Pojďme se projít!"
msgid "This is the best day of my life!"
msgstr "Tohle je nejlepší den mého života!"
msgid "Shitty day :/"
msgstr "Na hovno den :/"
msgid "I'm extremely bored ..."
msgstr "Strašně se nudím ..."
msgid "I'm very sad ..."
msgstr "Jsem dost smutný ..."
msgid "I'm sad"
msgstr "Jsem smutný"
msgid "Leave me alone ..."
msgstr "Nech mě být ..."
msgid "I'm mad at you!"
msgstr "Jsem na tebe naštvaný!"
msgid "I'm living the life!"
msgstr "Tohle je život!"
msgid "I pwn therefore I am."
msgstr "Chytám pakety a tedy jsem."
msgid "So many networks!!!"
msgstr "Tolik sítí!!!"
msgid "I'm having so much fun!"
msgstr "Tohle je super zábava!"
msgid "My crime is that of curiosity ..."
msgstr "Jsem kriminálně zvědavý ..."
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Ahoj {name}! Rád tě poznávám."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr "Hej {name}! Jak to jde?"
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr "Ahoj {name}, jak se máš?"
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "Jednotka {name} je nablízku!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Uhm... Měj se {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} je pryč ..."
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Whoops ... {name} je pryč."
#, python-brace-format
msgid "{name} missed!"
msgstr "Chybí mi {name}!"
msgid "Missed!"
msgstr "Chybíš mi!"
msgid "Good friends are a blessing!"
msgstr "Dobří kamarádi jsou požehnání!"
msgid "I love my friends!"
msgstr "Miluju svoje kamarády!"
msgid "Nobody wants to play with me ..."
msgstr "Nikdo si se mnou nechce hrát ..."
msgid "I feel so alone ..."
msgstr "Cítím se tak osamělý ..."
msgid "Where's everybody?!"
msgstr "Kde jsou všichni?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Spím {secs} sekund ..."
msgid "Zzzzz"
msgstr "Zzzzz"
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr "ZzzZzzz ({secs}s)"
msgid "Good night."
msgstr "Dobrou noc."
msgid "Zzz"
msgstr "Zzz"
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Čekání {secs} sekund ..."
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Rozhlížím se ({secs}s)"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Hej {what} budeme kamarádi!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Asociuju se s {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Čus {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Rozhodl jsem se, že {mac} nepotřebuje žádnou WiFi!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Deautentikuju {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Kickbanuju {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Super, máme {num} nových handshaků!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Máš {count} nových zpráv!"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Ups, něco se pokazilo ... Restartuju ..."
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "Vykopnuto {num} klientů\n"
msgid "Made >999 new friends\n"
msgstr "Mám >999 nových kamarádů\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "Mám {num} nových kamarádů\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Mám {num} handshaků\n"
msgid "Met 1 peer"
msgstr "Potkal jsem jednoho kámoše"
#, python-brace-format
msgid "Met {num} peers"
msgstr "Potkal jsem {num} kámošů"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Chytal jsem pakety po dobu {duration} a vykopnul jsem {deauthed} klientů! "
"Taky jsem potkal {associated} nových kamarádů a snědl {handshakes} "
"handshaků! #pwnagotchi #pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "hodiny"
msgid "minutes"
msgstr "minuty"
msgid "seconds"
msgstr "sekundy"
msgid "hour"
msgstr "hodina"
msgid "minute"
msgstr "minuta"
msgid "second"
msgstr "sekunda"

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Church Slavonic\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Chuvash\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Welsh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,259 @@
# pwnagotchi danish voice data
# Copyright (C) 2020
# This file is distributed under the same license as the pwnagotchi package.
# Dennis Kjær Jensen <signout@signout.dk>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: 2020-01-18 21:56+ZONE\n"
"Last-Translator: Dennis Kjær Jensen <signout@signout.dk>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Danish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr "ZzzzZZzzzzZzzz"
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Hej. Jeg er Pwnagotchi. Starter ..."
msgid "New day, new hunt, new pwns!"
msgstr "Ny dag, ny jagt, nye pwns!"
msgid "Hack the Planet!"
msgstr "Hack planeten!"
msgid "AI ready."
msgstr "AI klar."
msgid "The neural network is ready."
msgstr "Det neurale netværk er klart."
msgid "Generating keys, do not turn off ..."
msgstr "Genererer nøgler, sluk ikke ..."
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Hey, kanal {channel} er ubrugt! Dit AP vil takke dig."
msgid "Reading last session logs ..."
msgstr "Læser seneste session logs ..."
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr "Har læst {lines_so_far} linjer indtil nu ..."
msgid "I'm bored ..."
msgstr "Jeg keder mig ..."
msgid "Let's go for a walk!"
msgstr "Lad os gå en tur!"
msgid "This is the best day of my life!"
msgstr "Det er den bedste dag i mit liv!"
msgid "Shitty day :/"
msgstr "Elendig dag :/"
msgid "I'm extremely bored ..."
msgstr "Jeg keder mig ekstremt meget ..."
msgid "I'm very sad ..."
msgstr "Jeg er meget trist ..."
msgid "I'm sad"
msgstr "Jeg er trist"
msgid "Leave me alone ..."
msgstr "Lad mig være i fred"
msgid "I'm mad at you!"
msgstr "Jeg er sur på dig!"
msgid "I'm living the life!"
msgstr "Jeg lever livet!"
msgid "I pwn therefore I am."
msgstr "Jeg pwner, derfor er jeg."
msgid "So many networks!!!"
msgstr "Så mange netværk!"
msgid "I'm having so much fun!"
msgstr "Jeg har det vildt sjovt!"
msgid "My crime is that of curiosity ..."
msgstr "Min forbrydelse er at være nysgerrig ..."
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Hej {name}! Rart at møde dig."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr "Hey {name}! Hvasså?"
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr "Hej {name} hvordan har du det?"
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "Enheden {name} er lige i nærheden!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Uhm ... farvel {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} er væk ..."
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Hovsa ... {name} er væk."
#, python-brace-format
msgid "{name} missed!"
msgstr "{name} glippede!"
msgid "Missed!"
msgstr "Fordømt!"
msgid "Good friends are a blessing!"
msgstr "Gode venner en velsignelse!"
msgid "I love my friends!"
msgstr "Jeg elsker mine venner!"
msgid "Nobody wants to play with me ..."
msgstr "Der er ingen der vil lege med mig ..."
msgid "I feel so alone ..."
msgstr "Jeg føler mig så alene ..."
msgid "Where's everybody?!"
msgstr "Hvor er alle henne?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Sover i {secs} sekunder"
msgid "Zzzzz"
msgstr "Zzzzz"
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr "ZzzZzzz {secs} sekunder"
msgid "Good night."
msgstr "Godnat."
msgid "Zzz"
msgstr "Zzz"
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Venter i {secs} sekunder"
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Kigger mig omkring i {secs} sekunder"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Hej {what} lad os være venner!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Associerer til {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Hey {what}"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Besluttede at {mac} ikke har brug for WiFi!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Afmelder {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Kickbanner {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Fedt, vi har fået {num} nye handshake{plural}!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Du har {count} nye beskeder"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Ups, noget gik galt ... Genstarter."
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "Sparkede {num} af\n"
msgid "Made >999 new friends\n"
msgstr "Har fået >999 nye venner\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "Har fået {num} nye venner\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Har fået {num} nyehandshakes\n"
msgid "Met 1 peer"
msgstr "Har mødt 1 peer"
#, python-brace-format
msgid "Met {num} peers"
msgstr "Har mødt {num} peers"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Jeg har pwnet i {duration} og kicket {dauthed} klienter! Jeg har også mødt "
"{associated} nye venner og spist {handshakes} håndtryk! #pwnagotchi #pwnlog "
"#pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "timer"
msgid "minutes"
msgstr "minutter"
msgid "seconds"
msgstr "sekunder"
msgid "hour"
msgstr "time"
msgid "minute"
msgstr "minut"
msgid "second"
msgstr "sekund"

Binary file not shown.

View File

@ -0,0 +1,259 @@
# German language
# Copyright (C) 2019
# This file is distributed under the same license as the pwnagotchi package.
# dadav <33197631+dadav@users.noreply.github.com>, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: 2019-09-29 14:00+0200\n"
"Last-Translator: dadav <33197631+dadav@users.noreply.github.com>\n"
"Language-Team: DE <33197631+dadav@users.noreply.github.com>\n"
"Language: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Hi, ich bin ein Pwnagotchi! Starte..."
msgid "New day, new hunt, new pwns!"
msgstr "Neuer Tag, neue Jagd, neue Pwns!"
msgid "Hack the Planet!"
msgstr "Hack den Planeten!"
msgid "AI ready."
msgstr "KI bereit."
msgid "The neural network is ready."
msgstr "Das neurale Netz ist bereit."
msgid "Generating keys, do not turn off ..."
msgstr "Generiere Schlüssel, nicht ausschalten..."
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Hey, Channel {channel} ist frei! Dein AP wird es Dir danken."
msgid "Reading last session logs ..."
msgstr "Lese die Logs der letzten Session..."
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr "Bisher {lines_so_far} Zeilen im Log gelesen..."
msgid "I'm bored ..."
msgstr "Mir ist langweilig..."
msgid "Let's go for a walk!"
msgstr "Lass uns spazieren gehen!"
msgid "This is the best day of my life!"
msgstr "Das ist der beste Tag meines Lebens!"
msgid "Shitty day :/"
msgstr "Scheißtag :/"
msgid "I'm extremely bored ..."
msgstr "Mir ist sau langweilig..."
msgid "I'm very sad ..."
msgstr "Ich bin sehr traurig..."
msgid "I'm sad"
msgstr "Ich bin traurig"
msgid "Leave me alone ..."
msgstr "Lass mich in ruhe ..."
msgid "I'm mad at you!"
msgstr "Ich bin sauer auf Dich!"
msgid "I'm living the life!"
msgstr "Ich lebe das Leben!"
msgid "I pwn therefore I am."
msgstr "Ich pwne, also bin ich."
msgid "So many networks!!!"
msgstr "So viele Netzwerke!!!"
msgid "I'm having so much fun!"
msgstr "Ich habe sooo viel Spaß!"
msgid "My crime is that of curiosity ..."
msgstr "Mein Verbrechen ist das der Neugier..."
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Hallo {name}, schön Dich kennenzulernen."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr "Jo {name}! Was geht!?"
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr "Hey {name}, wie geht's?"
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "Gerät {name} ist in der Nähe!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Uhm... tschüß {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} ist weg..."
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Whoops... {name} ist weg."
#, python-brace-format
msgid "{name} missed!"
msgstr "{name} verpasst!"
msgid "Missed!"
msgstr "Verpasst!"
msgid "Good friends are a blessing!"
msgstr "Gute Freunde sind ein Segen!"
msgid "I love my friends!"
msgstr "Ich liebe meine Freunde!"
msgid "Nobody wants to play with me ..."
msgstr "Niemand will mit mir spielen..."
msgid "I feel so alone ..."
msgstr "Ich fühl' mich so allein..."
msgid "Where's everybody?!"
msgstr "Wo sind denn alle?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Schlafe für {secs}s..."
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr "Gute Nacht."
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Warte für {secs}s..."
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Schaue mich um ({secs}s)"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Hey {what}, lass uns Freunde sein!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Verbinde mit {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Jo {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Ich denke, dass {mac} kein WiFi braucht!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Deauthentifiziere {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Kicke {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Cool, wir haben {num} neue Handshake{plural}!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Cool, wir haben {num} neue Handshake{plural}!"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Ops, da ist was schief gelaufen... Starte neu..."
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr "Schlafe für {name} ..."
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "{num} Stationen gekickt\n"
msgid "Made >999 new friends\n"
msgstr ">999 neue Freunde gefunden\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "{num} neue Freunde gefunden\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "{num} Handshakes aufgez.\n"
msgid "Met 1 peer"
msgstr "1 Peer getroffen."
#, python-brace-format
msgid "Met {num} peers"
msgstr "{num} Peers getroffen"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Ich war {duration} am Pwnen und habe {deauthed} Clients gekickt! Außerdem "
"habe ich {associated} neue Freunde getroffen und {handshakes} Handshakes "
"gefressen! #pwnagotchi #pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "Stunden"
msgid "minutes"
msgstr "Minuten"
msgid "seconds"
msgstr "Sekunden"
msgid "hour"
msgstr "Stunde"
msgid "minute"
msgstr "Minute"
msgid "second"
msgstr "Sekunde"

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Divehi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Dzongkha\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Ewe\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,260 @@
# pwnigotchi voice data
# Copyright (C) 2019
# This file is distributed under the same license as the pwnagotchi package.
# FIRST AUTHOR Periklis Fregkos <fregkos@gmail.com>, 2019.
# CO AUTHOR Panos Vasilopoulos <hello@alwayslivid.com>, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: 2019-10-03 08:00+0000\n"
"Last-Translator: Periklis Fregkos <fregkos@gmail.com>\n"
"Language-Team: pwnagotchi <33197631+dadav@users.noreply.github.com>\n"
"Language: Greek\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Γειά, είμαι το Pwnagotchi! Εκκινούμαι ..."
msgid "New day, new hunt, new pwns!"
msgstr "Νέα μέρα, νέο κυνήγι, νέα pwns!"
msgid "Hack the Planet!"
msgstr "Hackαρε τον πλανήτη!"
msgid "AI ready."
msgstr "ΤΝ έτοιμη."
msgid "The neural network is ready."
msgstr "Το νευρωνικό δίκτυο είναι έτοιμο."
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Ε, το κανάλι {channel} είναιελεύθερο! Το AP σου θα είναι ευγνώμων."
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr "Βαριέμαι ..."
msgid "Let's go for a walk!"
msgstr "Ας πάμε μια βόλτα!"
msgid "This is the best day of my life!"
msgstr "Είναι η καλύτερημέρα της ζωής μου!"
msgid "Shitty day :/"
msgstr "Σκατένια μέρα :/"
msgid "I'm extremely bored ..."
msgstr "Βαριέμαι πάρα πολύ ..."
msgid "I'm very sad ..."
msgstr "Είμαι πολύ λυπημένο ..."
msgid "I'm sad"
msgstr "Είμαι λυπημένο"
msgid "Leave me alone ..."
msgstr "Νιώθω μοναχός μου ..."
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr "Ζω την ζωή μου!"
msgid "I pwn therefore I am."
msgstr "Pwnάρω, άρα υπάρχω."
msgid "So many networks!!!"
msgstr "Τόσα πολλά δίκτυα!!!"
msgid "I'm having so much fun!"
msgstr "Περνάω τέλεια!"
msgid "My crime is that of curiosity ..."
msgstr "Η περιέργεια είναιτο μόνο έγκλημά μου ..."
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Γειά {name}!Χάρηκα για τη γνωριμία."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "Η μονάδα {name} είναι κοντά!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Εμμ ...αντίο {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "Το {name} έφυγε ..."
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Ουπς ... Εξαφανίστηκε το {name}."
#, python-brace-format
msgid "{name} missed!"
msgstr "Έχασα το {name}!"
msgid "Missed!"
msgstr "Το έχασα!"
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr "Κανείς δε θέλει ναπαίξει μαζί μου ..."
msgid "I feel so alone ..."
msgstr "Νιώθω μοναχός μου ..."
msgid "Where's everybody?!"
msgstr "Μα, πού πήγαν όλοι;!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Ξεκουράζομαι για {secs}s ..."
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Περιμένω για {secs}s ..."
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Ψάχνω τριγύρω ({secs})"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Εε! {what}, ας γίνουμε φίλοι!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Συνδέομαι με το {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Που'σαι ρε τρελέ {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Μόλις αποφάσισα ότι η {mac} δε χρείαζεται WiFi!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Πετάω έξω την {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Μπανάρω την {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Τέλεια δικέ μου, πήραμε {num} νέες χειραψίες!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Τέλεια δικέ μου, πήραμε {count} νέες χειραψίες{plural}!"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Ουπς, κάτιπήγε λάθος ... Επανεκκινούμαι ..."
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "Έριξα {num} σταθμούς\n"
msgid "Made >999 new friends\n"
msgstr "Έκανα >999 νέους φίλους\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "Έκανα {num} νέους φίλους\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Πήρα {num} χειραψίες\n"
msgid "Met 1 peer"
msgstr "Γνώρισα 1 φίλο"
#, python-brace-format
msgid "Met {num} peers"
msgstr "Γνώρισα {num} φίλους"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Pwnαρα για {duration} και έριξα {deauthed} πελάτες! Επίσης γνώρισα "
"{associated} νέους φίλους και καταβρόχθισα {handshakes} χειραψίες! "
"#pwnagotchi #pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,260 @@
# Pwnagotchi display English to Esperanto.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR MADE THIS IN YEAR 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-25 23:40+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Esperanto\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr "ZzzzZZzzzzZzzz"
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "Sal, mi estas Pwnagotchi! Komencante…"
msgid "New day, new hunt, new pwns!"
msgstr "Nova tago, nova ĉaso, nova wifi!"
msgid "Hack the Planet!"
msgstr "Eniru la elektronikon!"
msgid "AI ready."
msgstr "Mi pretas."
msgid "The neural network is ready."
msgstr "La elektronika reto estas preta."
msgid "Generating keys, do not turn off ..."
msgstr "Mi generas ŝlosilojn, ne malŝaltu min!"
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "Hej, kanalo {channel} disponeblas! Via alirpunkto dankos vin"
msgid "Reading last session logs ..."
msgstr "Legante protokolojn de antaŭa sesio…"
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr "legi {lines_so_far} liniojn ĝis nun…"
msgid "I'm bored ..."
msgstr "Mi enuas…"
msgid "Let's go for a walk!"
msgstr "Ni iru promeni!"
msgid "This is the best day of my life!"
msgstr "Plej bona tago de mia vivo!"
msgid "Shitty day :/"
msgstr "Terura tago :/"
msgid "I'm extremely bored ..."
msgstr "mi estas tre enuigita…"
msgid "I'm very sad ..."
msgstr "Mi estas tre malĝoja…"
msgid "I'm sad"
msgstr "Mi estas malfeliĉa"
msgid "Leave me alone ..."
msgstr "Lasu min sola…"
msgid "I'm mad at you!"
msgstr "Mi koleras kontraŭ vi!"
msgid "I'm living the life!"
msgstr "Mi ĝuas la vivon!"
msgid "I pwn therefore I am."
msgstr "Mi eniras tial mi estas."
msgid "So many networks!!!"
msgstr "Tiom da ludiloj!"
msgid "I'm having so much fun!"
msgstr "Mi tre amuzas!"
msgid "My crime is that of curiosity ..."
msgstr "Scivolemo estas mia krimo…"
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "Sal {name}! Mi ĝojas renkonti vin."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr "Hej {name}! Sal?"
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr "Sal {name}! Kiel vi fartas?"
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "Iu estas proksime! Ĝia nomo estas {name}."
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Adiaŭ {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} malaperis…"
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Hups… {name} malaperis…"
#, python-brace-format
msgid "{name} missed!"
msgstr "{name} mankis!"
msgid "Missed!"
msgstr "Maltrafis!"
msgid "Good friends are a blessing!"
msgstr "Bonaj amikoj estas beno!"
msgid "I love my friends!"
msgstr "Mi amas miajn amikojn!"
msgid "Nobody wants to play with me ..."
msgstr "Neniu volas ludi kun mi..."
msgid "I feel so alone ..."
msgstr "Mi estas tiel sola..."
msgid "Where's everybody?!"
msgstr "KIE ĈIUJ ESTAS?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Dormeto por {sec}j…"
msgid "Zzzzz"
msgstr "Zzzzz"
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr "ZzzZzzz ({sec}j)"
msgid "Good night."
msgstr "Bonan nokton"
msgid "Zzz"
msgstr "Zzz"
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Atendas {sec}j…"
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Ĉirkaŭrigardante ({sec}j)"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "Hej {what}, ni estu amikoj!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "asociante al {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "Hej {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "Ĵus decidis, ke {mac} ne bezonas konekton!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Malaŭtentigi {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "Forigante {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "Mirinda, ni havas {num} novajn manpremojn!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "Vi nun havas {num} novajn mesaĝojn"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Lo okazis... Rekomencante…"
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr "alŝuti datumojn al {to}…"
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr "Elŝutu de {name}…"
#, fuzzy, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "Forigita de {num} stacioj"
#, fuzzy
msgid "Made >999 new friends\n"
msgstr "Faris pli ol 999 novajn amikojn!"
#, fuzzy, python-brace-format
msgid "Made {num} new friends\n"
msgstr "faris (nombro) novajn amikojn"
#, fuzzy, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Ricevis {num} novajn manpremojn"
msgid "Met 1 peer"
msgstr "Renkontita unu kolego"
#, python-brace-format
msgid "Met {num} peers"
msgstr "renkontitajn {num} kolegojn"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"Mi pwning dum {duration} kaj piedbatis {deauthed} klientojn!Mi ankaŭ "
"renkontis {associated} novajn amikojn kaj manĝis {handshakes} manpremojn!"
"#pwnagotchi #pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "horror"
msgid "minutes"
msgstr "minutoj"
msgid "seconds"
msgstr "sekundoj"
msgid "hour"
msgstr "horo"
msgid "minute"
msgstr "minuto"
msgid "second"
msgstr "dua"

Binary file not shown.

View File

@ -0,0 +1,260 @@
# pwnagotchi voice data
# Copyright (C) 2019
# This file is distributed under the same license as the pwnagotchi package.
# FIRST AUTHOR diegopastor <dpastor29@alumnos.uaq.mx>, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:51+0100\n"
"PO-Revision-Date: 2020-08-25 23:06+0200\n"
"Last-Translator: Sergio Ruiz <serginator@gmail.com>\n"
"Language-Team: \n"
"Language: Spanish, Castilian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n"
msgid "ZzzzZZzzzzZzzz"
msgstr "ZzzzZZzzzzZzzz"
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr "¡Hola, soy Pwnagotchi! Empezando ..."
msgid "New day, new hunt, new pwns!"
msgstr "Nuevo día, nueva caceria, nuevos pwns!"
msgid "Hack the Planet!"
msgstr "¡Hackea el planeta!"
msgid "AI ready."
msgstr "IA lista."
msgid "The neural network is ready."
msgstr "La red neuronal está lista."
msgid "Generating keys, do not turn off ..."
msgstr "Generando llaves, no me apagues ..."
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr "¡Oye, el canal {channel} está libre! Tu AP lo agradecerá."
msgid "Reading last session logs ..."
msgstr "Leyendo los logs de la última sesión ..."
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr "Leyendo {lines_so_far} líneas de log hasta ahora ..."
msgid "I'm bored ..."
msgstr "Estoy aburrido ..."
msgid "Let's go for a walk!"
msgstr "¡Vamos por un paseo!"
msgid "This is the best day of my life!"
msgstr "¡Este es el mejor día de mi vida!"
msgid "Shitty day :/"
msgstr "Día de mierda :/"
msgid "I'm extremely bored ..."
msgstr "Estoy muy aburrido ..."
msgid "I'm very sad ..."
msgstr "Estoy muy triste ..."
msgid "I'm sad"
msgstr "Estoy triste"
msgid "Leave me alone ..."
msgstr "Me siento tan solo ..."
msgid "I'm mad at you!"
msgstr "Toy re enojado con vos!"
msgid "I'm living the life!"
msgstr "¡Estoy viviendo la vida!"
msgid "I pwn therefore I am."
msgstr "Pwneo, luego existo."
msgid "So many networks!!!"
msgstr "¡¡¡Cuántas redes!!!"
msgid "I'm having so much fun!"
msgstr "¡Me estoy divirtiendo mucho!"
msgid "My crime is that of curiosity ..."
msgstr "Mi crimen es la curiosidad ..."
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr "¡Hola {name}! Encantado de conocerte."
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr "Que onda {name}!?"
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr "Eh!, ¿Que haces {name}?"
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr "¡La unidad {name} está cerca!"
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr "Uhm ... adiós {name}"
#, python-brace-format
msgid "{name} is gone ..."
msgstr "{name} se fue ..."
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr "Ups ... {name} se fue."
#, python-brace-format
msgid "{name} missed!"
msgstr "¡{name} perdido!"
msgid "Missed!"
msgstr "¡Perdido!"
msgid "Good friends are a blessing!"
msgstr "Lxs buenxs amigxs son una masa!"
msgid "I love my friends!"
msgstr "¡Amo a mis amigxs!"
msgid "Nobody wants to play with me ..."
msgstr "Nadie quiere jugar conmigo ..."
msgid "I feel so alone ..."
msgstr "Me siento tan solo ..."
msgid "Where's everybody?!"
msgstr "¡¿Dónde está todo el mundo?!"
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr "Descansando por {secs}s ..."
msgid "Zzzzz"
msgstr "Zzzzz"
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr "ZzzZzzz ({secs}s)"
msgid "Good night."
msgstr "Buenas noches."
msgid "Zzz"
msgstr "Zzz"
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr "Esperando {secs}s .."
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr "Mirando alrededor ({secs}s)"
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr "¡Oye {what} seamos amigos!"
#, python-brace-format
msgid "Associating to {what}"
msgstr "Asociándome a {what}"
#, python-brace-format
msgid "Yo {what}!"
msgstr "¡Ey {what}!"
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr "¡Acabo de decidir que {mac} no necesita WiFi!"
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr "Desautenticando a {mac}"
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr "¡Expulsando y baneando a {mac}!"
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr "¡Genial, obtuvimos {num} nuevo{plural} handshake{plural}!"
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr "¡Genial, obtuvimos {count} nuevo{plural} handshake{plural}!"
msgid "Oops, something went wrong ... Rebooting ..."
msgstr "Oops, algo salió mal ... Reiniciando ..."
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr "Subiendo data a {to} ..."
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr "Descansando durante {name} ..."
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr "Expulsamos {num} estaciones\n"
msgid "Made >999 new friends\n"
msgstr "Hice >999 nuevos amigos\n"
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr "Hice {num} nuevos amigos\n"
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr "Consegui {num} handshakes\n"
msgid "Met 1 peer"
msgstr "Conocí 1 colega"
#, python-brace-format
msgid "Met {num} peers"
msgstr "Conocí {num} colegas"
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
"¡He estado pwneando por {duration} y expulsé {deauthed} clientes! También "
"conocí {associated} nuevos amigos y comí {handshakes} handshakes! "
"#pwnagotchi #pwnlog #pwnlife #hacktheplanet #skynet"
msgid "hours"
msgstr "horas"
msgid "minutes"
msgstr "minutos"
msgid "seconds"
msgstr "segundos"
msgid "hour"
msgstr "hora"
msgid "minute"
msgstr "minuto"
msgid "second"
msgstr "segundo"

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Estonian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Basque\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,257 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-16 21:10+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Persian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "ZzzzZZzzzzZzzz"
msgstr ""
msgid "Hi, I'm Pwnagotchi! Starting ..."
msgstr ""
msgid "New day, new hunt, new pwns!"
msgstr ""
msgid "Hack the Planet!"
msgstr ""
msgid "AI ready."
msgstr ""
msgid "The neural network is ready."
msgstr ""
msgid "Generating keys, do not turn off ..."
msgstr ""
#, python-brace-format
msgid "Hey, channel {channel} is free! Your AP will say thanks."
msgstr ""
msgid "Reading last session logs ..."
msgstr ""
#, python-brace-format
msgid "Read {lines_so_far} log lines so far ..."
msgstr ""
msgid "I'm bored ..."
msgstr ""
msgid "Let's go for a walk!"
msgstr ""
msgid "This is the best day of my life!"
msgstr ""
msgid "Shitty day :/"
msgstr ""
msgid "I'm extremely bored ..."
msgstr ""
msgid "I'm very sad ..."
msgstr ""
msgid "I'm sad"
msgstr ""
msgid "Leave me alone ..."
msgstr ""
msgid "I'm mad at you!"
msgstr ""
msgid "I'm living the life!"
msgstr ""
msgid "I pwn therefore I am."
msgstr ""
msgid "So many networks!!!"
msgstr ""
msgid "I'm having so much fun!"
msgstr ""
msgid "My crime is that of curiosity ..."
msgstr ""
#, python-brace-format
msgid "Hello {name}! Nice to meet you."
msgstr ""
#, python-brace-format
msgid "Yo {name}! Sup?"
msgstr ""
#, python-brace-format
msgid "Hey {name} how are you doing?"
msgstr ""
#, python-brace-format
msgid "Unit {name} is nearby!"
msgstr ""
#, python-brace-format
msgid "Uhm ... goodbye {name}"
msgstr ""
#, python-brace-format
msgid "{name} is gone ..."
msgstr ""
#, python-brace-format
msgid "Whoops ... {name} is gone."
msgstr ""
#, python-brace-format
msgid "{name} missed!"
msgstr ""
msgid "Missed!"
msgstr ""
msgid "Good friends are a blessing!"
msgstr ""
msgid "I love my friends!"
msgstr ""
msgid "Nobody wants to play with me ..."
msgstr ""
msgid "I feel so alone ..."
msgstr ""
msgid "Where's everybody?!"
msgstr ""
#, python-brace-format
msgid "Napping for {secs}s ..."
msgstr ""
msgid "Zzzzz"
msgstr ""
#, python-brace-format
msgid "ZzzZzzz ({secs}s)"
msgstr ""
msgid "Good night."
msgstr ""
msgid "Zzz"
msgstr ""
#, python-brace-format
msgid "Waiting for {secs}s ..."
msgstr ""
#, python-brace-format
msgid "Looking around ({secs}s)"
msgstr ""
#, python-brace-format
msgid "Hey {what} let's be friends!"
msgstr ""
#, python-brace-format
msgid "Associating to {what}"
msgstr ""
#, python-brace-format
msgid "Yo {what}!"
msgstr ""
#, python-brace-format
msgid "Just decided that {mac} needs no WiFi!"
msgstr ""
#, python-brace-format
msgid "Deauthenticating {mac}"
msgstr ""
#, python-brace-format
msgid "Kickbanning {mac}!"
msgstr ""
#, python-brace-format
msgid "Cool, we got {num} new handshake{plural}!"
msgstr ""
#, python-brace-format
msgid "You have {count} new message{plural}!"
msgstr ""
msgid "Oops, something went wrong ... Rebooting ..."
msgstr ""
#, python-brace-format
msgid "Uploading data to {to} ..."
msgstr ""
#, python-brace-format
msgid "Downloading from {name} ..."
msgstr ""
#, python-brace-format
msgid "Kicked {num} stations\n"
msgstr ""
msgid "Made >999 new friends\n"
msgstr ""
#, python-brace-format
msgid "Made {num} new friends\n"
msgstr ""
#, python-brace-format
msgid "Got {num} handshakes\n"
msgstr ""
msgid "Met 1 peer"
msgstr ""
#, python-brace-format
msgid "Met {num} peers"
msgstr ""
#, python-brace-format
msgid ""
"I've been pwning for {duration} and kicked {deauthed} clients! I've also met "
"{associated} new friends and ate {handshakes} handshakes! #pwnagotchi "
"#pwnlog #pwnlife #hacktheplanet #skynet"
msgstr ""
msgid "hours"
msgstr ""
msgid "minutes"
msgstr ""
msgid "seconds"
msgstr ""
msgid "hour"
msgstr ""
msgid "minute"
msgstr ""
msgid "second"
msgstr ""

Some files were not shown because too many files have changed in this diff Show More