def main(options, arguments): if options.database == None or options.config == None: return s = dalvik_elsign.MSignature(options.database, options.config, options.verbose != None, ps=dalvik_elsign.PublicSignature) if options.input != None: ret_type = androconf.is_android(options.input) print os.path.basename(options.input), ":", sys.stdout.flush() if ret_type == "APK": try: a = apk.APK(options.input) if a.is_valid_APK(): display(s.check_apk(a), options.verbose) else: print "INVALID" except Exception, e: print "ERROR", e elif ret_type == "DEX": display(s.check_dex(open(options.input, "rb").read()), options.verbose)
def main(options, arguments): if options.database == None or options.config == None: return s = dalvik_elsign.MSignature(options.database, options.config, options.verbose != None, ps=dalvik_elsign.PublicSignature) if options.input != None: ret_type = androconf.is_android(options.input) print(os.path.basename(options.input), ":", end=' ') sys.stdout.flush() if ret_type == "APK": try: a = apk.APK(options.input) if a.is_valid_APK(): display(s.check_apk(a), options.verbose) else: print("INVALID") except Exception as e: print("ERROR", e) elif ret_type == "DEX": display(s.check_dex(read(options.input)), options.verbose) elif options.directory != None: for root, dirs, files in os.walk(options.directory, followlinks=True): if files != []: for f in files: real_filename = root if real_filename[-1] != "/": real_filename += "/" real_filename += f ret_type = androconf.is_android(real_filename) if ret_type == "APK": print(os.path.basename(real_filename), ":", end=' ') sys.stdout.flush() try: a = apk.APK(real_filename) if a.is_valid_APK(): display(s.check_apk(a), options.verbose) else: print("INVALID APK") except Exception as e: print("ERROR", e) elif ret_type == "DEX": try: print(os.path.basename(real_filename), ":", end=' ') sys.stdout.flush() display(s.check_dex(read(real_filename)), options.verbose) except Exception as e: print("ERROR", e) elif options.version != None: print("Androsign version %s" % androconf.ANDROGUARD_VERSION)
def check_db(self): if self.isvalid: signature = dalvik_elsign.MSignature( 'signatures/dbandroguard', 'signatures/dbconfig', False, ps=dalvik_elsign.PublicSignature) return signature.check_apk(self.app) else: if self.debug: print "[-] File was not a valid Android Application!" return ''
def main(options, arguments): sessionip = "127.0.0.1" sessionport = 31415 if options.remotehost: sessionip = options.remotehost if options.port: sessionport = int(options.port) newsession = Session(sessionip, sessionport, "bind") # Check if connection can be established if newsession.executeCommand("core", "ping", None).data == "pong": if options.list: request = {'filter': options.list, 'permissions': None} apks_info = newsession.executeCommand("packages", "info", {}).getPaddedErrorOrData() print apks_info elif options.input and options.output: s = None if options.database != None or options.config != None: s = dalvik_elsign.MSignature(options.database, options.config, options.verbose != None, ps=dalvik_elsign.PublicSignature) request = {'filter': options.input, 'permissions': None} apks_info = newsession.executeCommand( "packages", "info", request).getPaddedErrorOrData() print apks_info for i in apks_info.split("\n"): if re.match("APK path:", i) != None: name_app = i.split(":")[1][1:] print name_app, response = newsession.downloadFile(name_app, options.output) print response.data, response.error, if s != None: a = apk.APK(options.output + "/" + os.path.basename(name_app)) if a.is_valid_APK(): display(s.check_apk(a), options.verbose) print else: print "\n**Network Error** Could not connect to " + sessionip + ":" + str( sessionport) + "\n"