Added root functionality and menu
This commit is contained in:
		
							parent
							
								
									ecb8abdf83
								
							
						
					
					
						commit
						d1ecdd5356
					
				
							
								
								
									
										
											BIN
										
									
								
								Magisk-v19.3.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Magisk-v19.3.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							@ -1,10 +1,11 @@
 | 
			
		||||
# Android-Mobile-Toolkit
 | 
			
		||||
This is the beginning of a program to root and extract data from android devices using adb
 | 
			
		||||
 | 
			
		||||
# Features
 | 
			
		||||
Automatically detect the correct version of TWRP for a plugged in device
 | 
			
		||||
## Features
 | 
			
		||||
+Automatically detect the correct version of TWRP for a plugged in device
 | 
			
		||||
+Root any device that is TWRP compatible
 | 
			
		||||
 | 
			
		||||
# To-Do
 | 
			
		||||
Implement a menu system\
 | 
			
		||||
Implement Fastboot and Magisk compatibility to root a device\
 | 
			
		||||
Implement utilities to pull and process app data
 | 
			
		||||
## To-Do
 | 
			
		||||
+~~Implement a menu system~~\
 | 
			
		||||
+~~Implement Fastboot and Magisk compatibility to root a device~~\
 | 
			
		||||
+Implement utilities to pull and process app data
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										113
									
								
								amt.py
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								amt.py
									
									
									
									
									
								
							@ -2,13 +2,16 @@
 | 
			
		||||
"""
 | 
			
		||||
Code to interact with an android device using ADB
 | 
			
		||||
Written by Kevin Rode
 | 
			
		||||
Last Updated Sep 27 2019
 | 
			
		||||
Last Updated Sep 28 2019
 | 
			
		||||
"""
 | 
			
		||||
import adbutils
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import re
 | 
			
		||||
import time
 | 
			
		||||
import requests
 | 
			
		||||
from lxml import html
 | 
			
		||||
from pyfiglet import Figlet
 | 
			
		||||
def adb_start():
 | 
			
		||||
    if "platform-tools" in os.environ['PATH']:
 | 
			
		||||
        print("ADB found in PATH")
 | 
			
		||||
@ -18,32 +21,106 @@ def adb_start():
 | 
			
		||||
 | 
			
		||||
def adb_connect():
 | 
			
		||||
    adb = adbutils.AdbClient(host="127.0.0.1", port=5037)
 | 
			
		||||
    print(adb.device_list())
 | 
			
		||||
    d = adb.device()
 | 
			
		||||
    if d != None:
 | 
			
		||||
        print("Device connected.")
 | 
			
		||||
    return d
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def twrp_download(d):
 | 
			
		||||
    cpu = d.shell('cat /proc/cpuinfo | grep Hardware')
 | 
			
		||||
    cpu = cpu.replace(" ","")
 | 
			
		||||
    cpu = re.sub(r'(.+:)', '', cpu)
 | 
			
		||||
    r = requests.get('https://dl.twrp.me/'+cpu)
 | 
			
		||||
    tree = html.fromstring(r.text)
 | 
			
		||||
    urls = tree.xpath('//a/@href')
 | 
			
		||||
    downloads = []
 | 
			
		||||
    for i in urls:
 | 
			
		||||
        if "img" in i:
 | 
			
		||||
            downloads.append(i)
 | 
			
		||||
    url_to_download = "https://dl.twrp.me"+downloads[0]
 | 
			
		||||
    url_to_download = url_to_download.replace('.html', '')
 | 
			
		||||
    print("Use this link to download twrp for your connected device: "+url_to_download)
 | 
			
		||||
    print("Ensure that the downloaded file is moved to the same folder as the script before continuing")
 | 
			
		||||
    found = 0
 | 
			
		||||
    files = os.listdir(os.curdir)
 | 
			
		||||
    for file in files:
 | 
			
		||||
        if "twrp" in file:
 | 
			
		||||
            found = 1
 | 
			
		||||
    if found != 1:
 | 
			
		||||
        cpu = d.shell('cat /proc/cpuinfo | grep Hardware')
 | 
			
		||||
        cpu = cpu.replace(" ","")
 | 
			
		||||
        cpu = re.sub(r'(.+:)', '', cpu)
 | 
			
		||||
        r = requests.get('https://dl.twrp.me/'+cpu)
 | 
			
		||||
        tree = html.fromstring(r.text)
 | 
			
		||||
        urls = tree.xpath('//a/@href')
 | 
			
		||||
        downloads = []
 | 
			
		||||
        for i in urls:
 | 
			
		||||
            if "img" in i:
 | 
			
		||||
                downloads.append(i)
 | 
			
		||||
        url_to_download = "https://dl.twrp.me"+downloads[0]
 | 
			
		||||
        url_to_download = url_to_download.replace('.html', '')
 | 
			
		||||
        print("Use this link to download twrp for your connected device: "+url_to_download)
 | 
			
		||||
        print("Ensure that the downloaded file is moved to the same folder as the script before continuing")
 | 
			
		||||
        input("Press Enter to continue...")
 | 
			
		||||
        files = os.listdir(os.curdir)
 | 
			
		||||
        for file in files:
 | 
			
		||||
            if "twrp" in file:
 | 
			
		||||
                found = 1
 | 
			
		||||
        while found != 1:
 | 
			
		||||
            print("File not found. Please confirm it has been moved to the correct directory")
 | 
			
		||||
            input("Press Enter to continue...")
 | 
			
		||||
            files = os.listdir(os.curdir)
 | 
			
		||||
            for file in files:
 | 
			
		||||
                if "twrp" in file:
 | 
			
		||||
                    found = 1
 | 
			
		||||
    else:
 | 
			
		||||
        print("twrp already downloaded")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def push_files(d):
 | 
			
		||||
    initcheck_magisk = d.shell("cd /sdcard && ls | grep Magisk")
 | 
			
		||||
    if initcheck_magisk == None and initcheck_twrp == None:
 | 
			
		||||
        d.sync.push("Magisk-v19.3.zip", "/sdcard/Magisk.zip")
 | 
			
		||||
        check_magisk = d.shell("cd /sdcard && ls | grep Magisk")
 | 
			
		||||
        if check != None:
 | 
			
		||||
            print("File copied successfully.")
 | 
			
		||||
        else:
 | 
			
		||||
            print("Something went wrong. Please try again.")
 | 
			
		||||
    else:
 | 
			
		||||
        print("Magisk already copied")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def reboot_bootloader():
 | 
			
		||||
    adb = "platform-tools\\adb.exe"
 | 
			
		||||
    fastboot = "platform-tools\\fastboot.exe"
 | 
			
		||||
    os.system(adb+" reboot bootloader")
 | 
			
		||||
    input("Press Enter when the device has rebooted")
 | 
			
		||||
    os.system(fastboot+" devices")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def root_device():
 | 
			
		||||
        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")
 | 
			
		||||
        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]")
 | 
			
		||||
        input("Press Enter when the device has rebooted")
 | 
			
		||||
 | 
			
		||||
def menu():
 | 
			
		||||
    while True:
 | 
			
		||||
        banner = Figlet(font='Standard')
 | 
			
		||||
        print(banner.renderText('Android Mobile Toolkit'))
 | 
			
		||||
        print("[1] Root Device (WIP)\n[2] Extract Data (Coming Soon)\n[99] Quit")
 | 
			
		||||
        choice = input("Please select a number: ")
 | 
			
		||||
        if int(choice) == 1:
 | 
			
		||||
            device = adb_connect()
 | 
			
		||||
            twrp_download(device)
 | 
			
		||||
            push_files(device)
 | 
			
		||||
            reboot_bootloader()
 | 
			
		||||
            root_device()
 | 
			
		||||
        elif int(choice) == 2:
 | 
			
		||||
            print("Data extraction is coming soon.")
 | 
			
		||||
            time.sleep(2)
 | 
			
		||||
        elif int(choice) == 99:
 | 
			
		||||
            print("Goodbye!")
 | 
			
		||||
            sys.exit()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    adb_start()
 | 
			
		||||
    device = adb_connect()
 | 
			
		||||
    twrp_download(device)
 | 
			
		||||
    menu()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
main()
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user