App Extraction Added

This commit is contained in:
Kevin Rode 2019-10-02 01:11:09 -04:00
parent bc36d2bead
commit f7c287068e
6 changed files with 107 additions and 8 deletions

View File

@ -15,6 +15,11 @@ A compiled version is available in the releases tab
+ Add options to extract all data on the phone + Add options to extract all data on the phone
## Changelog ## Changelog
v1.1
+ App extraction added
+ Downloading twrp now happens without user interaction
+ Root checking option added
v1.0.1 v1.0.1
+ Updated zip with correct files for rooting + Updated zip with correct files for rooting
+ Spelling fixes + Spelling fixes

22
amt.py
View File

@ -6,21 +6,24 @@ Last Updated Sep 28 2019
""" """
import sys import sys
from helpers import root from helpers import root
from helpers import extract
def menu(): def menu():
while True: while True:
print("[1] Root Device (WIP)\n[2] Extract Data (Coming Soon)\n[99] Quit") print("[1] Root Device\n[2] Check root\n[3] Extract Data (WIP)\n[99] Quit")
choice = input("Please select a number: ") choice = input("Please select a number: ")
if int(choice) == 1: if int(choice) == 1:
root.root_device() root.root_device()
elif int(choice) == 2: elif int(choice) == 2:
print("Data extraction is coming soon.") root.root_check()
time.sleep(2) elif int(choice) == 3:
extract.extract_menu()
elif int(choice) == 99: elif int(choice) == 99:
print("Goodbye!") print("Goodbye!")
sys.exit() sys.exit()
else:
print("Unknown input")
def show_help(): def show_help():
print("Android Mobile Toolkit v1.1") print("Android Mobile Toolkit v1.1")
@ -33,6 +36,8 @@ def show_help():
print(" -i : alias for --interactive") print(" -i : alias for --interactive")
print(" --root : root a connected Android device") print(" --root : root a connected Android device")
print(" -r : alias for --root") print(" -r : alias for --root")
print(" --check-root : checks if the device is rooted")
print(" -Ae : Extract data in app extract mode. Add -o to specify an output directory")
print(" --help : print this message") print(" --help : print this message")
print(" -h : alias for --help") print(" -h : alias for --help")
@ -45,6 +50,15 @@ def main():
root.root_device() root.root_device()
elif "--help" in sys.argv[1:] or "-h" in sys.argv[1:]: elif "--help" in sys.argv[1:] or "-h" in sys.argv[1:]:
show_help() show_help()
elif "--check-root" in sys.argv[1:]:
root.root_check()
elif "-Ae" in sys.argv[1:]:
if "-o" in sys.argv[1:]:
output_index = sys.argv.index("-o")
output = sys.argv[output_index+1]
extract.app_extract(output)
else:
extract.app_extract()
else: else:
show_help() show_help()

Binary file not shown.

69
helpers/extract.py Normal file
View File

@ -0,0 +1,69 @@
import adbutils
from helpers import root
import os
import sys
def recovery_boot():
adb = "platform-tools\\adb.exe"
adbcheck = os.popen(adb+" devices").read()
if "recovery" in adbcheck:
pass
else:
device = root.adb_connect()
root.twrp_download(device)
root.push_files(device)
root.reboot_bootloader()
adb = "platform-tools\\adb.exe"
fastboot = "platform-tools\\fastboot.exe"
files = os.listdir(os.curdir)
for file in files:
if "twrp" in file:
twrp = file
os.system(fastboot + " boot "+twrp)
input("Press Enter when TWRP has booted")
def list_apps():
adb = "platform-tools\\adb.exe"
apps = os.popen(adb+" shell (ls /data/data)").read()
app_array = apps.split("\n")
for i in app_array:
print(i)
def download_app(o=None):
app = input("Please enter the name of the app you would like to download: ")
adb = "platform-tools\\adb.exe"
os.system(adb+" shell (cp -R /data/data/"+app+" /sdcard/"+app+")")
if o == None:
output = input("Please enter the output directory for the app files. Leave blank to download to current directory: ")
if output != None:
os.makedirs(output)
os.system(adb+" pull /sdcard/"+app+" "+output)
else:
os.system(adb+" pull /sdcard/"+app)
else:
os.makedirs(o)
os.system(adb+" pull /sdcard/"+app+" "+o)
def app_extract(output=None):
recovery_boot()
list_apps()
download_app(output)
def extract_menu():
while True:
print("How would you like to extract data")
print("[1] App extraction\n[2] Whole Phone Extraction (via Android Backup)(COMING SOON)\n[3] Whole Phone Extraction (via adb shell)(COMING SOON)\n[99] Main Menu")
choice = input()
if int(choice) == 1:
app_extract()
elif int(choice) == 2:
print()
elif int(choice) == 3:
print()
elif int(choice) == 99:
break

View File

@ -40,9 +40,11 @@ def twrp_download(d):
downloads.append(i) downloads.append(i)
url_to_download = "https://dl.twrp.me"+downloads[0] url_to_download = "https://dl.twrp.me"+downloads[0]
url_to_download = url_to_download.replace('.html', '') url_to_download = url_to_download.replace('.html', '')
print("Use this link to download twrp for your connected device: "+url_to_download) s = requests.Session()
print("Ensure that the downloaded file is moved to the same folder as the script before continuing") s.headers.update({'referer':url_to_download})
input("Press Enter to continue...") img = s.get(url_to_download)
with open("twrp.img",'wb') as f:
f.write(img.content)
files = os.listdir(os.curdir) files = os.listdir(os.curdir)
for file in files: for file in files:
if "twrp" in file: if "twrp" in file:
@ -95,3 +97,12 @@ def root_device():
print("Follow the onscreen directions to install Magisk (Located at the bottom of the install window)") print("Follow the onscreen directions to install Magisk (Located at the bottom of the install window)")
print("After Magisk installs click [Reboot] then [Do Not Install]") print("After Magisk installs click [Reboot] then [Do Not Install]")
input("Press Enter when the device has rebooted") input("Press Enter when the device has rebooted")
def root_check():
device = adb_connect()
rootcheck = device.shell("ls /sbin | grep su")
if rootcheck != None:
print("Device is rooted")
else:
print("Device is not rooted")