From b886721e71aaacbda5357fbb0f1957fa64cbff39 Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Fri, 29 Sep 2023 14:17:08 +0200 Subject: [PATCH 1/8] v2.4.5 Signed-off-by: Jeroen Oudshoorn --- bin/pwnagotchi | 3 ++- pwnagotchi/_version.py | 2 +- pwnagotchi/ai/__init__.py | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bin/pwnagotchi b/bin/pwnagotchi index 4efc9def..f3e3aad5 100755 --- a/bin/pwnagotchi +++ b/bin/pwnagotchi @@ -150,7 +150,8 @@ if __name__ == '__main__': local = version_to_tuple(pwnagotchi.__version__) remote = version_to_tuple(latest_ver) if remote > local: - user_input = input("There is a new version available! Update from v%s to v%s?\n[y(es)/n(o)]" % (pwnagotchi.__version__, latest_ver)) + user_input = input("There is a new version available! Update from v%s to v%s?\n[y(es)/n(o)]" + % (pwnagotchi.__version__, latest_ver)) # input validation if user_input.lower() in ('y', 'yes'): os.system("rm /root/.auto-update && systemctl restart pwnagotchi") diff --git a/pwnagotchi/_version.py b/pwnagotchi/_version.py index 0d6ef5fb..25cb3b49 100644 --- a/pwnagotchi/_version.py +++ b/pwnagotchi/_version.py @@ -1 +1 @@ -__version__ = '2.4.4' +__version__ = '2.4.5' diff --git a/pwnagotchi/ai/__init__.py b/pwnagotchi/ai/__init__.py index a95caafd..ad41fc10 100644 --- a/pwnagotchi/ai/__init__.py +++ b/pwnagotchi/ai/__init__.py @@ -76,8 +76,8 @@ def load(config, agent, epoch, from_disk=True): return a2c except Exception as e: - logging.exception("error while starting AI (%s)", e) - logging.info("Deleting brain and restarting.") + logging.exception("[AI] error while starting AI (%s)", e) + logging.info("[AI] Deleting brain and restarting.") os.system("rm /root/brain.nn && systemctl restart pwnagotchi") logging.warning("[ai] AI not loaded!") From 03922370acecd398da154f9aea3530b747a3df28 Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Fri, 29 Sep 2023 14:18:43 +0200 Subject: [PATCH 2/8] v2.4.5 Signed-off-by: Jeroen Oudshoorn --- Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile b/Makefile index bc5d1cdf..5db27a31 100644 --- a/Makefile +++ b/Makefile @@ -54,8 +54,6 @@ $(PWN_RELEASE).img: | $(PACKER) $(PWN_RELEASE).img: $(SDIST) builder/pwnagotchi.json builder/pwnagotchi.yml $(shell find builder/data -type f) sudo $(PACKER) plugins install github.com/solo-io/arm-image cd builder && sudo $(UNSHARE) $(PACKER) build -var "pwn_hostname=$(PWN_HOSTNAME)" -var "pwn_version=$(PWN_VERSION)" pwnagotchi.json - sudo chown -R $$USER:$$USER ../../../ - mv builder/images/* ../../../ # If any of these files are updated, rebuild the checksums. $(PWN_RELEASE).sha256: $(PWN_RELEASE).img From a551021d176da21d914fc115a39226727771557e Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Fri, 29 Sep 2023 20:47:57 +0200 Subject: [PATCH 3/8] Update bettercap.py Signed-off-by: Jeroen Oudshoorn --- pwnagotchi/bettercap.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pwnagotchi/bettercap.py b/pwnagotchi/bettercap.py index 695c20ce..f7ba7a71 100644 --- a/pwnagotchi/bettercap.py +++ b/pwnagotchi/bettercap.py @@ -99,7 +99,8 @@ class Client(object): continue except OSError: logging.warning('[bettercap] connection to the bettercap endpoint failed...') - pwnagotchi.reboot() + sleep(10) + continue def run(self, command, verbose_errors=True): while True: @@ -113,4 +114,4 @@ class Client(object): else: break - return decode(r, verbose_errors=verbose_errors) \ No newline at end of file + return decode(r, verbose_errors=verbose_errors) From 9576909af0fad0ec4d8af5e752a82bfd36f85501 Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Fri, 29 Sep 2023 20:48:25 +0200 Subject: [PATCH 4/8] Update bettercap.service Signed-off-by: Jeroen Oudshoorn --- builder/data/etc/systemd/system/bettercap.service | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builder/data/etc/systemd/system/bettercap.service b/builder/data/etc/systemd/system/bettercap.service index 987d33ac..edf17bac 100644 --- a/builder/data/etc/systemd/system/bettercap.service +++ b/builder/data/etc/systemd/system/bettercap.service @@ -7,7 +7,7 @@ Wants=network.target Type=simple ExecStart=/usr/bin/bettercap-launcher Restart=always -RestartSec=30 +RestartSec=5 [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target From 661d93636448a3ecb50fd33444006e46bca5169d Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Fri, 29 Sep 2023 20:54:16 +0200 Subject: [PATCH 5/8] Update bettercap.py Signed-off-by: Jeroen Oudshoorn --- pwnagotchi/bettercap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnagotchi/bettercap.py b/pwnagotchi/bettercap.py index f7ba7a71..55fe9fb4 100644 --- a/pwnagotchi/bettercap.py +++ b/pwnagotchi/bettercap.py @@ -99,7 +99,7 @@ class Client(object): continue except OSError: logging.warning('[bettercap] connection to the bettercap endpoint failed...') - sleep(10) + await asyncio.sleep(10) continue def run(self, command, verbose_errors=True): From 6cdd8c0e360d443dc687bc5d72f97dd421471a9b Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Sat, 30 Sep 2023 15:21:21 +0200 Subject: [PATCH 6/8] Update bettercap.py --- pwnagotchi/bettercap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnagotchi/bettercap.py b/pwnagotchi/bettercap.py index 55fe9fb4..0bdd95ee 100644 --- a/pwnagotchi/bettercap.py +++ b/pwnagotchi/bettercap.py @@ -99,8 +99,8 @@ class Client(object): continue except OSError: logging.warning('[bettercap] connection to the bettercap endpoint failed...') - await asyncio.sleep(10) - continue + pwnagotchi.reboot() + def run(self, command, verbose_errors=True): while True: From 8db28055a6bf1004a240aca103bf5de4947b7789 Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Sat, 30 Sep 2023 15:30:27 +0200 Subject: [PATCH 7/8] Update __init__.py --- pwnagotchi/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pwnagotchi/__init__.py b/pwnagotchi/__init__.py index a7f549dd..4387579b 100644 --- a/pwnagotchi/__init__.py +++ b/pwnagotchi/__init__.py @@ -166,4 +166,3 @@ def reboot(mode=None): os.system("sync") os.system("shutdown -r now") - os.system("service pwnagotchi restart") From f4194988f1d91eedbb9b3c8c4cb797e712b951c3 Mon Sep 17 00:00:00 2001 From: Jeroen Oudshoorn Date: Sun, 1 Oct 2023 12:19:29 +0200 Subject: [PATCH 8/8] v2.4.5 Signed-off-by: Jeroen Oudshoorn --- builder/pwnagotchi.yml | 173 +++++++++++++++++++---------------------- pwnagotchi/__init__.py | 1 - 2 files changed, 79 insertions(+), 95 deletions(-) diff --git a/builder/pwnagotchi.yml b/builder/pwnagotchi.yml index 25ec666c..219420c4 100644 --- a/builder/pwnagotchi.yml +++ b/builder/pwnagotchi.yml @@ -34,6 +34,9 @@ - apt-daily-upgrade.service - bluetooth.service - ifup@wlan0.service + - dnsmasq.service + - wpa_supplicant.service + - triggerhappy.service packages: bettercap: # We will install bettercap from source @@ -43,9 +46,9 @@ # url: "https://github.com/evilsocket/pwngrid/releases/download/v1.10.3/pwngrid_linux_aarch64_v1.10.3.zip" apt: downgrade: - - libpcap0.8-dev_1.9.1-3_arm64.deb - - libpcap0.8_1.9.1-3_arm64.deb - - libpcap-dev_1.9.1-3_arm64.deb + - libpcap0.8-dev_1.9.1-4_arm64.deb + - libpcap0.8_1.9.1-4_arm64.deb + - libpcap-dev_1.9.1-4_arm64.deb hold: - libpcap-dev - libpcap0.8 @@ -61,89 +64,89 @@ - triggerhappy - wpasupplicant - nfs-common - - libraspberrypi0 - - libraspberrypi-dev - - libraspberrypi-doc - - libraspberrypi-bin install: - - bluez - - raspberrypi-kernel-headers - - git - - libgmp3-dev - - gawk - - qpdf - - bison - - flex - - make - - autoconf - - libtool - - texinfo - - gcc-arm-none-eabi - - wl - - libfl-dev - - g++ - - xxd - aircrack-ng - - time - - rsync - - vim - - wget - - screen + - autoconf + - bc + - bison + - bluez + - build-essential - build-essential - dkms - - python3-pip - - python3-smbus - - unzip - - libopenmpi-dev - - libatlas-base-dev - - libelf-dev - - libopenjp2-7 - - libtiff5 - - tcpdump - - lsof - - libgstreamer1.0-0 - - libavcodec58 - - libavformat58 - - libswscale5 - - libusb-1.0-0-dev - - libnetfilter-queue-dev - - libopenmpi3 - dphys-swapfile - - libdbus-1-dev - - libdbus-glib-1-dev - - liblapack-dev - - libhdf5-dev - - libc-ares-dev - - libeigen3-dev + - fbi + - flex - fonts-dejavu - fonts-dejavu-core - fonts-dejavu-extra - - python3-pil - - python3-smbus - - libfuse-dev - - libatlas-base-dev - - libopenblas-dev - - libblas-dev - - bc - - libgl1-mesa-glx - - libncursesw5-dev - - libssl-dev - - libsqlite3-dev - - tk-dev - - libgdbm-dev - - libc6-dev - - libbz2-dev - - libffi-dev - - zlib1g-dev - fonts-freefont-ttf - - fbi + - g++ + - gawk + - gcc-arm-none-eabi + - git + - libatlas-base-dev + - libatlas-base-dev + - libavcodec58 + - libavformat58 + - libblas-dev + - libbz2-dev + - libc-ares-dev + - libc6-dev + - libdbus-1-dev + - libdbus-glib-1-dev + - libeigen3-dev + - libelf-dev + - libffi-dev + - libfl-dev + - libfuse-dev + - libgdbm-dev + - libgl1-mesa-glx + - libgmp3-dev + - libgstreamer1.0-0 + - libhdf5-dev + - liblapack-dev + - libncursesw5-dev + - libnetfilter-queue-dev + - libnetfilter-queue-dev + - libopenblas-dev + - libopenjp2-7 + - libopenmpi-dev + - libopenmpi3 + - libpcap-dev + - libraspberrypi-bin + - libraspberrypi-dev + - libraspberrypi-doc + - libraspberrypi0 + - libsqlite3-dev + - libssl-dev + - libswscale5 + - libtiff5 + - libtool + - libusb-1.0-0-dev + - libusb-1.0-0-dev + - lsof + - make - python3-flask - python3-flask-cors - python3-flaskext.wtf - - build-essential - - libpcap-dev - - libusb-1.0-0-dev - - libnetfilter-queue-dev + - python3-pil + - python3-pip + - python3-smbus + - python3-smbus + - qpdf + - raspberrypi-kernel-headers + - rsync + - screen + - tcpdump + - texinfo + - time + - tk-dev + - unzip + - vim + - wget + - wl + - xxd + - zlib1g-dev environment: ARCHFLAGS: "-arch arm64" @@ -154,6 +157,7 @@ password: "{{ 'raspberry' | password_hash('sha512') }}" shell: /bin/bash generate_ssh_key: true + group: sudo - name: change hostname lineinfile: @@ -190,7 +194,6 @@ update_cache: yes - name: install packages - become_user: root apt: name: "{{ packages.apt.install }}" state: present @@ -456,19 +459,16 @@ fi - name: create /etc/pwnagotchi folder - become_user: root file: path: /etc/pwnagotchi state: directory - name: check if user configuration exists - become_user: root stat: path: /etc/pwnagotchi/config.toml register: user_config - name: create /etc/pwnagotchi/config.toml - become_user: root copy: dest: /etc/pwnagotchi/config.toml content: | @@ -479,13 +479,11 @@ when: not user_config.stat.exists - name: enable ssh on boot - become_user: root file: path: /boot/ssh state: touch - name: adjust /boot/config.txt - become_user: root lineinfile: dest: /boot/config.txt insertafter: EOF @@ -493,7 +491,6 @@ with_items: "{{system.boot_options}}" - name: adjust /etc/modules - become_user: root lineinfile: dest: /etc/modules insertafter: EOF @@ -501,7 +498,6 @@ with_items: "{{system.modules}}" - name: change root partition - become_user: root replace: dest: /boot/cmdline.txt backup: no @@ -509,7 +505,6 @@ replace: "root=/dev/mmcblk0p2" - name: configure /boot/cmdline.txt - become_user: root lineinfile: path: /boot/cmdline.txt backrefs: True @@ -532,12 +527,11 @@ - name: download old libpcap packages get_url: - url: "http://ports.ubuntu.com/pool/main/libp/libpcap/{{ item }}" + url: "https://old.kali.org/kali/pool/main/libp/libpcap/{{ item }}" dest: /usr/local/src/ with_items: "{{ packages.apt.downgrade }}" - name: install old libpcap packages - become_user: root apt: force: True state: present @@ -546,14 +540,12 @@ register: libpcap - name: remove old libpcap files - become_user: root file: path: "/usr/local/src/{{ item }}" state: absent with_items: "{{ packages.apt.downgrade }}" - name: add firmware packages to hold - become_user: root dpkg_selections: name: "{{ item }}" selection: hold @@ -561,7 +553,6 @@ when: libpcap.changed - name: disable unnecessary services - become_user: root systemd: name: "{{ item }}" state: stopped @@ -569,7 +560,6 @@ with_items: "{{ services.disable }}" - name: enable services - become_user: root systemd: name: "{{ item }}" enabled: true @@ -577,7 +567,6 @@ with_items: "{{ services.enable }}" - name: remove ssh keys - become_user: root file: state: absent path: "{{ item }}" @@ -585,24 +574,20 @@ - "/etc/ssh/ssh_host*_key*" - name: remove unnecessary apt packages - become_user: root apt: name: "{{ packages.apt.remove }}" state: absent purge: yes - name: clean apt cache - become_user: root apt: autoclean: true - name: remove dependencies that are no longer required - become_user: root apt: autoremove: yes handlers: - name: reload systemd services - become_user: root systemd: daemon_reload: yes \ No newline at end of file diff --git a/pwnagotchi/__init__.py b/pwnagotchi/__init__.py index a7f549dd..4387579b 100644 --- a/pwnagotchi/__init__.py +++ b/pwnagotchi/__init__.py @@ -166,4 +166,3 @@ def reboot(mode=None): os.system("sync") os.system("shutdown -r now") - os.system("service pwnagotchi restart")