def run_sdk_manager(): """ Runs the SDK manager """ flag_no_ui = " --no-ui" android = common.getConfig('AndroidSDKPath') + "tools/android" # need to have execute permission on the android executable st = os.stat(android) os.chmod(android, st.st_mode | stat.S_IEXEC) # Android list sdk android_cmd1 = android + "list" + "sdk" + "-a" args1 = shlex.split(android_cmd1) p0 = Popen([android, 'list', 'sdk', '-a'], stdout=PIPE, stdin=PIPE, stderr=STDOUT) # regexpattern = re.compile(r'Android SDK Platform-tools|Android SDK Build-tools|SDK Platform Android 5.0.1|Android Support Repository|Android Support Library') regexpattern = re.compile( r'SDK Platform Android 5.0.1, API 21, revision 2|Android SDK Build-tools, revision 21.1.2|Android Support Repository|Android Support Library|Android SDK Platform-tools' ) selected_filters_list = [] for line in p0.stdout: if regexpattern.search(line): common.logger.debug( 'Selected the following packages for installation:\r\n') common.logger.debug(str(line.rstrip())) selected_filters_list.append(line.rstrip().split('-')[0].strip()) if len(selected_filters_list) == 5: # We have the basic filters needed to compile the exploit APL at this point. break # Android install build tools with selected filters in headless mode selected_filters = myString = ",".join(selected_filters_list) print selected_filters p1 = Popen([ android, 'update', 'sdk', '-a', '--filter', selected_filters, '--no-ui' ], stdout=PIPE, stdin=PIPE, stderr=STDOUT, bufsize=1) if not common.interactive_mode: p1.stdin.write(common.args.acceptterms) else: p1.stdin.write("y\n") for line in iter(p1.stdout.readline, b''): print line, if "Do you accept the license" in line: p1.stdin.flush() p1.stdin.write("y\n") output, err = p1.communicate("y\n") common.set_environment_variables()
def run_sdk_manager(): """ Runs the SDK manager """ flag_no_ui = " --no-ui" android = common.getConfig("AndroidSDKPath") + "tools/android" # need to have execute permission on the android executable st = os.stat(android) os.chmod(android, st.st_mode | stat.S_IEXEC) # Android list sdk android_cmd1 = android + "list" + "sdk" + "-a" args1 = shlex.split(android_cmd1) p0 = Popen([android, "list", "sdk", "-a"], stdout=PIPE, stdin=PIPE, stderr=STDOUT) # regexpattern = re.compile(r'Android SDK Platform-tools|Android SDK Build-tools|SDK Platform Android 5.0.1|Android Support Repository|Android Support Library') regexpattern = re.compile( r"SDK Platform Android 5.0.1, API 21, revision 2|Android SDK Build-tools, revision 21.1.2|Android Support Repository|Android Support Library|Android SDK Platform-tools" ) selected_filters_list = [] for line in p0.stdout: if regexpattern.search(line): common.logger.debug("Selected the following packages for installation:\r\n") common.logger.debug(str(line.rstrip())) selected_filters_list.append(line.rstrip().split("-")[0].strip()) if len(selected_filters_list) == 5: # We have the basic filters needed to compile the exploit APL at this point. break # Android install build tools with selected filters in headless mode selected_filters = myString = ",".join(selected_filters_list) print selected_filters p1 = Popen( [android, "update", "sdk", "-a", "--filter", selected_filters, "--no-ui"], stdout=PIPE, stdin=PIPE, stderr=STDOUT, bufsize=1, ) if not common.interactive_mode: p1.stdin.write(common.args.acceptterms) else: p1.stdin.write("y\n") for line in iter(p1.stdout.readline, b""): print line, if "Do you accept the license" in line: p1.stdin.flush() p1.stdin.write("y\n") output, err = p1.communicate("y\n") common.set_environment_variables()
common.logger.setLevel(int(common.args.debuglevel)) else: parser.error("Please provide a valid Debug level (10,20,30,40,50,60)") exploit_choice = 1 if common.args.version: version() if common.args.basesdk is not None: common.writeKey('AndroidSDKPath', str(common.args.basesdk).strip()) ####################################### #Reset any old report report.reset() common.set_environment_variables() #Copy the exploit code into a separate temp directory if not os.path.exists(common.getConfig("rootDir") + "/build"): shutil.copytree(common.getConfig("rootDir") + "/exploitAPKs", common.getConfig("rootDir") + "/build") common.logger.info(common.config.get('qarkhelper', 'STARTUP')) if not sdkManager.is_android_sdk_installed(): sdkManager.get_android_sdk_manager() else: common.logger.info( common.config.get('qarkhelper', 'SDK_INSTALLATION_IDENTIFIED')) common.minSdkVersion=1 def read_files(filename,rex): things_to_inspect=[]
common.logger.setLevel(int(common.args.debuglevel)) else: parser.error("Please provide a valid Debug level (10,20,30,40,50,60)") exploit_choice = 1 if common.args.version: version() if common.args.basesdk is not None: common.writeKey('AndroidSDKPath', str(common.args.basesdk).strip()) ####################################### #Reset any old report report.reset() common.set_environment_variables() #Copy the exploit code into a separate temp directory if not os.path.exists(common.getConfig("rootDir") + "/build"): shutil.copytree(common.getConfig("rootDir") + "/exploitAPKs", common.getConfig("rootDir") + "/build") common.logger.info(common.config.get('qarkhelper', 'STARTUP')) if not sdkManager.is_android_sdk_installed(): sdkManager.get_android_sdk_manager() else: common.logger.info( common.config.get('qarkhelper', 'SDK_INSTALLATION_IDENTIFIED')) common.minSdkVersion=1 #Begin common.logger.info('Initializing QARK\n')