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:
Jeroen Oudshoorn
2023-09-06 17:01:26 +02:00
parent d8f726745f
commit 6213e9803f
8 changed files with 30 additions and 11 deletions

2
.idea/misc.xml generated
View File

@ -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
View File

@ -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">

View File

@ -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)

View File

@ -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

View File

@ -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):

View File

@ -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

View File

@ -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")

View File

@ -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>