From ae6569125b147b2afb06a943ea2fe9310244d0d4 Mon Sep 17 00:00:00 2001
From: ar1k88 <ar1k88gamingllc@gmail.com>
Date: Fri, 22 Jan 2021 19:19:23 -0800
Subject: [PATCH] Fixed issues, added push device.config -

- Fixed Issues with SCP not pushing the correct inputted Variables for FULL PATH's.
- Added Push device.config to Shark Jack.
- Various fixes to prevent wrong files being pushed to the Shark Jack.
---
 sharkjack.sh | 62 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 57 insertions(+), 5 deletions(-)

diff --git a/sharkjack.sh b/sharkjack.sh
index 8cf4155..aa2432e 100755
--- a/sharkjack.sh
+++ b/sharkjack.sh
@@ -100,7 +100,7 @@ function locate_shark(){
 function ssh_connect(){
   printf "\n\tLogging into Shark Jack...\n\n"
   printf "\n\t[!] Ensure Shark Jack is in Arming Mode (middle switch position) or connection will be refused...\n\n\n"
-	ssh root@172.16.24.1 || return 1
+        ssh root@172.16.24.1 || return 1
 }
 
 function connect() {
@@ -121,6 +121,45 @@ function cleanup() {
   printf "\n%s\n" "[!] Cleaning up..."
 }
 
+function check_suffixdevice(){
+        if [[ -f $DEVICECONFIGPATH ]]; then
+                if [[ $DEVICECONFIGPATH != "*/device.config" ]]; then
+                        printf "\n%s\n" "[!] Directory or File was not a valid device.config file."
+                        printf "\n%s\n" "[!] Returning to Main Menu."
+                        main_menu;
+                fi
+        fi
+        if [[ -d $DEVICECONFIGPATH ]]; then
+                printf "\n%s\n" "[!] Defaulting to device.config since input was a directory."
+                DEVICECONFIGPATH=$(echo -e "$DEVICECONFIGPATH/device.config")
+        fi
+}
+
+function check_suffixpayload(){
+        if [[ -f $PAYLOADPATH ]]; then
+                if [[ $PAYLOADPATH != "*/payload.txt" || $PAYLOADPATH != "*/payload.sh" ]]; then
+                        printf "\n%s\n" "[!] Defaulting to payload.txt since input was a not a normal payload file."
+                        PAYLOADPATH=$(echo -e "$PAYLOADPATH/payload.txt")
+                fi
+        fi
+        if [[ -d $PAYLOADPATH ]]; then
+                printf "\n%s\n" "[!] Defaulting to payload.txt since input was a directory."
+                PAYLOADPATH=$(echo -e "$PAYLOADPATH/payload.txt")
+        fi
+}
+
+function get_deviceconfig_path(){
+  read -p "FULL PATH to the downloaded device.config file (q to return to menu): " DEVICECONFIGPATH
+  if [[ $DEVICECONFIGPATH == "q" ]]; then
+    cleart
+    printf "\n%s\n" "[!] Returning to main menu..."
+    sleep 2
+    main_menu
+  else
+    [[ ! -e $DEVICECONFIGPATH ]] && printf "\n%s\n" "[!] $DEVICECONFIGPATH does not exist" && sleep 2 && main_menu
+  fi
+}
+
 function get_payload_path(){
   read -p "FULL PATH to payload (q to return to menu): " PAYLOADPATH
   if [[ $PAYLOADPATH == "q" ]]; then
@@ -133,14 +172,25 @@ function get_payload_path(){
   fi
 }
 
+function push_deviceconfig(){
+  echo -e "\n [+] Push device.config to Shark Jack"
+  echo -e "\n----------------------------------------"
+  get_deviceconfig_path
+  locate_shark
+  check_suffixdevice
+  echo -e "\n [+] Pushing device.config to device..."
+  scp -r "$DEVICECONFIGPATH" "root@172.16.24.1:/etc/device.config" && echo -e "\n [+] Device.config copied to Shark" || echo -e "\n [!] ERROR copying device.config to Shark"
+  exitscript 0
+}
+
 function push_payload(){
   echo -e "\n [+] Push Payload to Shark Jack"
   echo -e "\n----------------------------------------"
   get_payload_path
   locate_shark
+  check_suffixpayload
   echo -e "\n [+] Pushing payload to device..."
-  EXPANDEDPATH=$(echo $PAYLOADPATH |cd)
-  scp -r $EXPANDEDPATH root@172.16.24.1:/root/payload/payload.txt && echo -e "\n [+] Payload copied to Shark" || echo -e "\n [!] ERROR copying paylod to Shark"
+  scp -r "$PAYLOADPATH" "root@172.16.24.1:/root/payload/payload.txt" && echo -e "\n [+] Payload copied to Shark" || echo -e "\n [!] ERROR copying payload to Shark"
   exitscript 0
 }
 
@@ -329,6 +379,7 @@ function main_menu() {
    [$(tput bold)C$(tput sgr0)]onnect - get a shell on your Shark Jack\n\
    [$(tput bold)U$(tput sgr0)]pgrade firmware\n\
    [$(tput bold)P$(tput sgr0)]ush payload to Shark Jack\n\
+   Push [$(tput bold)D$(tput sgr0)]evice.config to Shark Jack\n\
    [$(tput bold)G$(tput sgr0)]et loot saved on Shark Jack\n\n\
    [$(tput bold)R$(tput sgr0)]eset known_hosts keys for the Shark Jack on this system\n\
    [$(tput bold)S$(tput sgr0)]etup ssh keys for easy access\n\
@@ -337,11 +388,12 @@ function main_menu() {
    read -r -sn1 key
    case "$key" in
           [cC]) connect;;
- 	  [uU]) upgrade_process_menu;;
-	  [pP]) push_payload;;
+          [uU]) upgrade_process_menu;;
+          [pP]) push_payload;;
           [gG]) get_loot;;
           [rR]) reset_key;;
           [sS]) setup_shark;;
+          [dD]) push_deviceconfig;;
           [qQ]) exitscript 0;;
           *) main_menu;;
    esac