Merge branch 'master' into add-spacing-to-gps

This commit is contained in:
evilsocket 2019-11-15 12:05:00 +01:00 committed by GitHub
commit 16afa87112
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 23 deletions

View File

@ -337,8 +337,9 @@ class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer):
(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: %s (%s) -> %s [%s (%s)] !!!" % ( \
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)
@ -393,8 +394,8 @@ class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer):
self._view.on_assoc(ap)
try:
logging.info("sending association frame to %s (%s %s) on channel %d [%d clients]..." % ( \
ap['hostname'], ap['mac'], ap['vendor'], ap['channel'], len(ap['clients'])))
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:
@ -414,8 +415,8 @@ class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer):
self._view.on_deauth(sta)
try:
logging.info("deauthing %s (%s) from %s (%s %s) on channel %d ..." % (
sta['mac'], sta['vendor'], ap['hostname'], ap['mac'], ap['vendor'], ap['channel']))
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:

View File

@ -9,41 +9,43 @@ from pwnagotchi.ui.view import BLACK
class GPS(plugins.Plugin):
__author__ = 'evilsocket@gmail.com'
__version__ = '1.0.0'
__license__ = 'GPL3'
__description__ = 'Save GPS coordinates whenever an handshake is captured.'
__author__ = "evilsocket@gmail.com"
__version__ = "1.0.0"
__license__ = "GPL3"
__description__ = "Save GPS coordinates whenever an handshake is captured."
def __init__(self):
self.running = False
self.coordinates = None
def on_loaded(self):
logging.info("gps plugin loaded for %s" % self.options['device'])
logging.info(f"gps plugin loaded for {self.options['device']}")
def on_ready(self, agent):
if os.path.exists(self.options['device']):
logging.info("enabling bettercap's gps module for %s" % self.options['device'])
if os.path.exists(self.options["device"]):
logging.info(
f"enabling bettercap's gps module for {self.options['device']}"
)
try:
agent.run('gps off')
agent.run("gps off")
except Exception:
pass
agent.run('set gps.device %s' % self.options['device'])
agent.run('set gps.baudrate %d' % self.options['speed'])
agent.run('gps on')
agent.run(f"set gps.device {self.options['device']}")
agent.run(f"set gps.baudrate {self.options['speed']}")
agent.run("gps on")
self.running = True
else:
logging.warning('no GPS detected')
logging.warning("no GPS detected")
def on_handshake(self, agent, filename, access_point, client_station):
if self.running:
info = agent.session()
self.coordinates = info['gps']
gps_filename = filename.replace('.pcap', '.gps.json')
self.coordinates = info["gps"]
gps_filename = filename.replace(".pcap", ".gps.json")
logging.info("saving GPS to %s (%s)" % (gps_filename, self.coordinates))
with open(gps_filename, 'w+t') as fp:
logging.info(f"saving GPS to {gps_filename} ({self.coordinates})")
with open(gps_filename, "w+t") as fp:
json.dump(self.coordinates, fp)
def on_ui_setup(self, ui):

View File

@ -338,7 +338,7 @@ class PositionFile:
lat = self._json['Latitude']
if self.type() == PositionFile.GEO:
lat = self._json['location']['lat']
if lat > 0:
if lat != 0:
return lat
raise ValueError("Lat is 0")
except KeyError:
@ -351,7 +351,7 @@ class PositionFile:
lng = self._json['Longitude']
if self.type() == PositionFile.GEO:
lng = self._json['location']['lng']
if lng > 0:
if lng != 0:
return lng
raise ValueError("Lng is 0")
except KeyError: