From a495ffb13627fb1c6256f58f75a4dc1c7ebf7da2 Mon Sep 17 00:00:00 2001 From: Justin-p Date: Wed, 2 Oct 2019 00:29:14 +0200 Subject: [PATCH 1/4] Add update script --- README.md | 14 +++++++ scripts/update_pwnagotchi.sh | 77 ++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 scripts/update_pwnagotchi.sh diff --git a/README.md b/README.md index a24bb052..35f79ba6 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,20 @@ usage: ./scripts/create_sibling.sh [OPTIONS] If you connect to the unit via `usb0` (thus using the data port), you might want to use the `scripts/linux_connection_share.sh` script to bring the interface up on your end and share internet connectivity from another interface, so you can update the unit and generally download things from the internet on it. +#### Update your pwnagotchi + +You can use the `scripts/update_pwnagotchi.sh` script to update to the most recent version of pwnagotchi. + +```shell +Usage: ./update_pwnagitchi.sh [-m | --master] [-c | --commit | --branch] [-bc | --backupconfig] [-rc | --restoreconfig] [-h | --help] + + -m, --master Update to the master branch. Used by default. + -c, --commit, --branch Update to the specific commit/branch. + -bc, --backupconfig Backup the current pwnagotchi config. + -rc, --restoreconfig Restore the current pwnagotchi config. -bc will be enabled. + -h, --help Shows this help. +``` + ### UI The UI is available either via display if installed, or via http://pwnagotchi.local:8080/ if you connect to the unit via `usb0` and set a static address on the network interface (change `pwnagotchi` with the hostname of your unit). diff --git a/scripts/update_pwnagotchi.sh b/scripts/update_pwnagotchi.sh new file mode 100644 index 00000000..c5cb7571 --- /dev/null +++ b/scripts/update_pwnagotchi.sh @@ -0,0 +1,77 @@ +#!/bin/bash +# Default variables +folder="/tmp/pwnagotchi" +version="master" +commit=0 +backupconfig=0 +restoreconfig=0 + +# functions +function display_help { + echo "Usage: $0 [-m | --master] [-c | --commit | --branch] [-bc | --backupconfig] [-rc | --restoreconfig] [-h | --help]" >&2 + echo + echo " -m, --master Update to the master branch. Used by default." + echo " -c, --commit, --branch Update to the specific commit/branch." + echo " -bc, --backupconfig Backup the current pwnagotchi config." + echo " -rc, --restoreconfig Restore the current pwnagotchi config. -bc will be enabled." + echo " -h, --help Shows this help." + echo "" + echo + exit 1 +} +function test_root { +# Check if we are running as root. + if ! [ $(id -u) = 0 ]; then + echo " [!] This script must be run as root." + exit 3 + fi +} +function test_github { + wget -q --spider https://github.com/evilsocket/pwnagotchi/ + if [ $? -ne 0 ]; then + echo " [!] Cannot reach github. This script requires internet access, ensure connection sharing is working." + exit 4 + fi +} + +# Commandline arguments +while [[ "$#" -gt 0 ]]; do case $1 in + -m|--master) version="master"; shift;; + -c|--commit|---branch) commit="$2" version="other"; shift;; + -bc|--backupconfig) backupconfig=1; shift;; + -rc|--restoreconfig) backupconfig=1 restoreconfig=1; shift;; + -h|--help) display_help;; + *) echo "Unknown parameter passed: $1"; exit 2;; +esac; shift; done + +echo " [+] Checking prerequisites." +test_root +test_github + +# clean up old files, clone master, set checkout to commit if needed. +echo " [+] Cloning to $folder..." +rm $folder -rf +git clone https://github.com/evilsocket/pwnagotchi $folder -q +cd $folder +if [ $version == "other" ]; then + git checkout $commit -q +fi +echo " [+] Installing $(git log -1 --format="%h")" + +echo " [+] Updating..." +if [ $backupconfig -eq 1 ]; then + echo " [+] Creating backup of config.yml" + mv /root/pwnagotchi/config.yml ~/config.yml.bak -f +fi +rm /root/pwnagotchi -rf +rsync -aPq $folder/sdcard/rootfs/* / +cd /tmp +rm $folder -rf +if [ $restoreconfig -eq 1 ]; then + echo " [+] Restoring backup of config.yml" + mv ~/config.yml.bak /root/pwnagotchi/config.yml -f +fi + +echo " [+] Restarting pwnagotchi in auto mode. $( screen -X -S pwnagotchi quit)" +sudo -H -u root /usr/bin/screen -dmS pwnagotchi -c /root/pwnagotchi/data/screenrc.auto +echo " [+] Finished" \ No newline at end of file From cd5be9c4cdd6a7bd0f236707a6b5b20352fd98cc Mon Sep 17 00:00:00 2001 From: Justin-p Date: Wed, 2 Oct 2019 10:14:26 +0200 Subject: [PATCH 2/4] Add /boot. Redo help. Replaced --commit/--branch with --version. Added --url to easly switch to other fork for testing --- scripts/update_pwnagotchi.sh | 93 +++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 44 deletions(-) diff --git a/scripts/update_pwnagotchi.sh b/scripts/update_pwnagotchi.sh index c5cb7571..60107214 100644 --- a/scripts/update_pwnagotchi.sh +++ b/scripts/update_pwnagotchi.sh @@ -1,77 +1,82 @@ #!/bin/bash # Default variables -folder="/tmp/pwnagotchi" +git_folder="/tmp/pwnagotchi" +git_url="https://github.com/evilsocket/pwnagotchi/" version="master" -commit=0 backupconfig=0 restoreconfig=0 -# functions -function display_help { - echo "Usage: $0 [-m | --master] [-c | --commit | --branch] [-bc | --backupconfig] [-rc | --restoreconfig] [-h | --help]" >&2 - echo - echo " -m, --master Update to the master branch. Used by default." - echo " -c, --commit, --branch Update to the specific commit/branch." - echo " -bc, --backupconfig Backup the current pwnagotchi config." - echo " -rc, --restoreconfig Restore the current pwnagotchi config. -bc will be enabled." - echo " -h, --help Shows this help." - echo "" - echo - exit 1 +# Functions +function usage() { + cat < Date: Wed, 2 Oct 2019 10:40:16 +0200 Subject: [PATCH 3/4] updated arguments to getopts. Added -m for restart mode. Moved prerequisites checks. --- scripts/update_pwnagotchi.sh | 119 ++++++++++++++++++++++------------- 1 file changed, 74 insertions(+), 45 deletions(-) diff --git a/scripts/update_pwnagotchi.sh b/scripts/update_pwnagotchi.sh index 60107214..34e4eedf 100644 --- a/scripts/update_pwnagotchi.sh +++ b/scripts/update_pwnagotchi.sh @@ -1,82 +1,111 @@ #!/bin/bash # Default variables -git_folder="/tmp/pwnagotchi" -git_url="https://github.com/evilsocket/pwnagotchi/" -version="master" -backupconfig=0 -restoreconfig=0 +GIT_FOLDER="/tmp/pwnagotchi" +GIT_URL="https://github.com/evilsocket/pwnagotchi/" +VERSION="master" +SUPPORTED_RESTART_MODES=( 'auto' 'manual' ) +MODE="auto" +BACKUPCONFIG=0 +RESTORECONFIG=0 # Functions function usage() { - cat < Date: Wed, 2 Oct 2019 10:41:42 +0200 Subject: [PATCH 4/4] Updated README --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 35f79ba6..24f0cec0 100644 --- a/README.md +++ b/README.md @@ -85,13 +85,16 @@ If you connect to the unit via `usb0` (thus using the data port), you might want You can use the `scripts/update_pwnagotchi.sh` script to update to the most recent version of pwnagotchi. ```shell -Usage: ./update_pwnagitchi.sh [-m | --master] [-c | --commit | --branch] [-bc | --backupconfig] [-rc | --restoreconfig] [-h | --help] +usage: ./update_pwnagitchi.sh [OPTIONS] + + Options: + -v # Version to update to, can be a branch or commit. (default: master) + -u # Url to clone from. (default: https://github.com/evilsocket/pwnagotchi) + -m # Mode to restart to. (Supported: auto manual; default: auto) + -b # Backup the current pwnagotchi config. + -r # Restore the current pwnagotchi config. -b will be enabled. + -h # Shows this help. Shows this help. - -m, --master Update to the master branch. Used by default. - -c, --commit, --branch Update to the specific commit/branch. - -bc, --backupconfig Backup the current pwnagotchi config. - -rc, --restoreconfig Restore the current pwnagotchi config. -bc will be enabled. - -h, --help Shows this help. ``` ### UI