Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
 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 ''
Exemplo n.º 4
0
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"