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

2
.idea/pwnagotchi.iml generated
View File

@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</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" />
</component>
<component name="PyDocumentationSettings">

View File

@ -1,5 +1,5 @@
# 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.**
Patreon: [Pwnagotchi-Torch](https://www.patreon.com/pwnagotchi_torch)

View File

@ -6,7 +6,7 @@ import signal
import sys
import toml
import requests
import json
import os
import pwnagotchi
from pwnagotchi import utils

View File

@ -4,6 +4,8 @@ import requests
import websockets
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):
@ -49,11 +51,13 @@ class Client(object):
logging.debug("Error while parsing event (%s)", ex)
except websockets.exceptions.ConnectionClosedError:
logging.debug("Lost websocket connection. Reconnecting...")
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
except websockets.exceptions.WebSocketException as wex:
logging.debug("Websocket exception (%s)", wex)
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
except Exception as e:
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):
for _ in range(0, 2):

View File

@ -13,10 +13,9 @@ API_ADDRESS = "http://127.0.0.1:8666/api/v1"
def is_connected():
try:
# check DNS
host = socket.gethostbyname('api.pwnagotchi.ai')
if host:
# check connectivity itself
socket.create_connection((host, 443), timeout=30)
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

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.pattern2 = re.compile(r'wifi error while hopping to channel')
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.connection = None
self.LASTTRY = 0
@ -173,6 +174,21 @@ class Fix_BRCMF(plugins.Plugin):
except Exception as 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:
print("logs look good")

View File

@ -8,7 +8,7 @@ Profile
{% block script %}
$(function(){
$('#qrcode').qrcode({
text: 'https://pwnagotchi.ai/pwnfile/#{{ fingerprint }}',
text: 'https://opwngrid.xyz/search/{{ fingerprint }}',
render: 'div',
mode: 0,
size: 400,
@ -25,7 +25,7 @@ $(function(){
<label for="fingerprint">Fingerprint</label>
<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>
<div id="qrcode"></div>