mirror of
https://github.com/jayofelony/pwnagotchi.git
synced 2025-07-01 18:37:27 -04:00
Version 2.3.1
Signed-off-by: Jeroen Oudshoorn <oudshoorn.jeroen@gmail.com> Signed-off-by: Jeroen Oudshoorn <oudshoorn.jeroen@gmail.com>
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (pwnagotchi)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11 (pwnagotchi)" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
2
.idea/pwnagotchi.iml
generated
2
.idea/pwnagotchi.iml
generated
@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.12 (pwnagotchi)" jdkType="Python SDK" />
|
<orderEntry type="jdk" jdkName="Python 3.11 (pwnagotchi)" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PyDocumentationSettings">
|
<component name="PyDocumentationSettings">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Pwnagotchi
|
# Pwnagotchi
|
||||||
|
<a href="https://github.com/jayofelony/pwnagotchi/releases/latest"><img alt="Release" src="https://img.shields.io/github/release/jayofelony/pwnagotchi.svg?style=flat-square"></a><br/>
|
||||||
**This fork of Pwnagotchi has been overhauled to work solely on 64-bit Raspberry Pi's, it uses PyTorch as it's AI.**
|
**This fork of Pwnagotchi has been overhauled to work solely on 64-bit Raspberry Pi's, it uses PyTorch as it's AI.**
|
||||||
|
|
||||||
Patreon: [Pwnagotchi-Torch](https://www.patreon.com/pwnagotchi_torch)
|
Patreon: [Pwnagotchi-Torch](https://www.patreon.com/pwnagotchi_torch)
|
||||||
|
@ -6,7 +6,7 @@ import signal
|
|||||||
import sys
|
import sys
|
||||||
import toml
|
import toml
|
||||||
import requests
|
import requests
|
||||||
import json
|
import os
|
||||||
|
|
||||||
import pwnagotchi
|
import pwnagotchi
|
||||||
from pwnagotchi import utils
|
from pwnagotchi import utils
|
||||||
|
@ -4,6 +4,8 @@ import requests
|
|||||||
import websockets
|
import websockets
|
||||||
|
|
||||||
from requests.auth import HTTPBasicAuth
|
from requests.auth import HTTPBasicAuth
|
||||||
|
import asyncio # Add asyncio for async functionality
|
||||||
|
from time import sleep # Add sleep function
|
||||||
|
|
||||||
|
|
||||||
def decode(r, verbose_errors=True):
|
def decode(r, verbose_errors=True):
|
||||||
@ -49,11 +51,13 @@ class Client(object):
|
|||||||
logging.debug("Error while parsing event (%s)", ex)
|
logging.debug("Error while parsing event (%s)", ex)
|
||||||
except websockets.exceptions.ConnectionClosedError:
|
except websockets.exceptions.ConnectionClosedError:
|
||||||
logging.debug("Lost websocket connection. Reconnecting...")
|
logging.debug("Lost websocket connection. Reconnecting...")
|
||||||
|
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
|
||||||
except websockets.exceptions.WebSocketException as wex:
|
except websockets.exceptions.WebSocketException as wex:
|
||||||
logging.debug("Websocket exception (%s)", wex)
|
logging.debug("Websocket exception (%s)", wex)
|
||||||
|
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.exception("Other error while opening websocket (%s) with parameter %s", e, s)
|
logging.exception("Other error while opening websocket (%s) with parameter %s", e, s)
|
||||||
|
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
|
||||||
|
|
||||||
def run(self, command, verbose_errors=True):
|
def run(self, command, verbose_errors=True):
|
||||||
for _ in range(0, 2):
|
for _ in range(0, 2):
|
||||||
|
@ -13,10 +13,9 @@ API_ADDRESS = "http://127.0.0.1:8666/api/v1"
|
|||||||
def is_connected():
|
def is_connected():
|
||||||
try:
|
try:
|
||||||
# check DNS
|
# check DNS
|
||||||
host = socket.gethostbyname('api.pwnagotchi.ai')
|
host = 'https://api.opwngrid.xyz/api/v1/uptime'
|
||||||
if host:
|
r = requests.get(host, headers=None, timeout=(30.0, 60.0))
|
||||||
# check connectivity itself
|
if r.json().get('isUp'):
|
||||||
socket.create_connection((host, 443), timeout=30)
|
|
||||||
return True
|
return True
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
@ -36,6 +36,7 @@ class Fix_BRCMF(plugins.Plugin):
|
|||||||
self.pattern = re.compile(r'brcmf_cfg80211_nexmon_set_channel.*?Set Channel failed')
|
self.pattern = re.compile(r'brcmf_cfg80211_nexmon_set_channel.*?Set Channel failed')
|
||||||
self.pattern2 = re.compile(r'wifi error while hopping to channel')
|
self.pattern2 = re.compile(r'wifi error while hopping to channel')
|
||||||
self.pattern3 = re.compile(r'Firmware has halted or crashed')
|
self.pattern3 = re.compile(r'Firmware has halted or crashed')
|
||||||
|
self.pattern4 = re.compile(r'error 400: could not find interface wlan0mon')
|
||||||
self.isReloadingMon = False
|
self.isReloadingMon = False
|
||||||
self.connection = None
|
self.connection = None
|
||||||
self.LASTTRY = 0
|
self.LASTTRY = 0
|
||||||
@ -173,6 +174,21 @@ class Fix_BRCMF(plugins.Plugin):
|
|||||||
except Exception as err:
|
except Exception as err:
|
||||||
logging.error("[FixBRCMF monstart]: %s" % repr(err))
|
logging.error("[FixBRCMF monstart]: %s" % repr(err))
|
||||||
|
|
||||||
|
# Look for pattern 3
|
||||||
|
elif len(self.pattern3.findall(other_other_last_lines)) >= 1:
|
||||||
|
logging.info("[FixBRCMF] wlan0 is down!")
|
||||||
|
if hasattr(agent, 'view'):
|
||||||
|
display = agent.view()
|
||||||
|
display.set('status', 'Restarting wlan0 now!')
|
||||||
|
display.update(force=True)
|
||||||
|
try:
|
||||||
|
# Run the monstart command to restart wlan0mon
|
||||||
|
cmd_output = subprocess.check_output("ifconfig wlan0 up && monstart", shell=True)
|
||||||
|
self._status = "up"
|
||||||
|
logging.info("[FixBRCMF monstart]: %s" % repr(cmd_output))
|
||||||
|
except Exception as err:
|
||||||
|
logging.error("[FixBRCMF monstart]: %s" % repr(err))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("logs look good")
|
print("logs look good")
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Profile
|
|||||||
{% block script %}
|
{% block script %}
|
||||||
$(function(){
|
$(function(){
|
||||||
$('#qrcode').qrcode({
|
$('#qrcode').qrcode({
|
||||||
text: 'https://pwnagotchi.ai/pwnfile/#{{ fingerprint }}',
|
text: 'https://opwngrid.xyz/search/{{ fingerprint }}',
|
||||||
render: 'div',
|
render: 'div',
|
||||||
mode: 0,
|
mode: 0,
|
||||||
size: 400,
|
size: 400,
|
||||||
@ -25,7 +25,7 @@ $(function(){
|
|||||||
|
|
||||||
<label for="fingerprint">Fingerprint</label>
|
<label for="fingerprint">Fingerprint</label>
|
||||||
<h4 id="fingerprint">
|
<h4 id="fingerprint">
|
||||||
<a href="https://pwnagotchi.ai/pwnfile/#{{ fingerprint }}" target="_blank">{{ fingerprint }}</a>
|
<a href="https://opwngrid.xyz/search/#{{ fingerprint }}" target="_blank">{{ fingerprint }}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<div id="qrcode"></div>
|
<div id="qrcode"></div>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user