Exemplo n.º 1
0
    def _dump_phone(self, serial):
        print('DUMPING iOS INFO...')
        # FIXME: pathlib migration at some point
        hmac_serial = config.hmac_serial(serial)
        cmd = "'{}/ios_dump.sh' {} {Apps} {Info} {Jailbroken-FS} {Jailbroken-SSH}"\
            .format(config.SCRIPT_DIR, hmac_serial, **config.IOS_DUMPFILES)
        print(cmd)
        path = self.dump_path(serial, fkind='Dir')
        # dumped = catch_err(run_command(cmd)).strip()
        dumpf = os.path.join(path, config.IOS_DUMPFILES['Apps'])
        dumpfinfo = os.path.join(path, config.IOS_DUMPFILES['Info'])

        #dumped = catch_err(run_command(cmd)).strip()
        dumped = catch_err(run_command(cmd)).strip()
        print('iOS DUMP RESULTS for {}:'.format(hmac_serial))
        print(dumped)
        if dumped == serial or True:
            print("Dumped the data into: {}".format(dumpf))
            self.parse_dump = parse_dump.IosDump(dumpf, finfo=dumpfinfo)
            return True
        else:
            print(
                "Couldn't connect to the device. Trying to reconnect. This way."
            )
            #connected, connected_reason = self.setup()
            #if not connected:
            #    print(connected_reason)
            return False
Exemplo n.º 2
0
 def get_system_apps(self, serialno):
     dumpf = self.dump_file_name(serialno, 'json')
     if os.path.exists(dumpf):
         s = parse_dump.IosDump(dumpf)
         return s.system_apps()
     else:
         return []
Exemplo n.º 3
0
 def app_details(self, serialno, appid):
     try:
         d = pd.read_sql('select * from apps where appid=?',
                         self.app_info_conn,
                         params=(appid, ))
         if not isinstance(d.get('permissions', ''), list):
             d['permissions'] = d.get('permissions', pd.Series([]))
             d['permissions'] = d['permissions'].fillna('').str.split(', ')
         if 'descriptionHTML' not in d:
             d['descriptionHTML'] = d['description']
         dfname = self.dump_file_name(serialno)
         if self.device_type == 'ios':
             ddump = parse_dump.IosDump(dfname)
         else:
             ddump = parse_dump.AndroidDump(dfname)
         info = ddump.info(appid)
         if self.device_type == 'ios':
             d['permissions'] = [info['permissions']]
             d['title'] = [info['title']]
             #print(info['permissions'])
             del info['permissions']
         print("AppInfo: ", info, appid, dfname, ddump)
         # p = self.run_command(
         #     'bash scripts/android_scan.sh info {ser} {appid}',
         #     ser=serialno, appid=appid
         # ); p.wait()
         # d['info'] = p.stdout.read().decode().replace('\n', '<br/>')
         return d.fillna(''), info
     except KeyError as ex:
         print("Exception:::", ex)
         return pd.DataFrame([]), dict()
Exemplo n.º 4
0
 def get_apps(self, serialno):
     self.serialno = serialno
     # cmd = '{cli} -i {serial} install browse | tail -n +2 > {outf}'
     cmd = '{cli} -i {serial} -B | tail -n +3 > {outf}'
     dumpf = self.dump_file_name(serialno, 'json')
     if self.catch_err(self.run_command(cmd, serial=serialno, outf=dumpf)) != -1:
         print("Dumped the data into: {}".format(dumpf))
         s = parse_dump.IosDump(dumpf)
         self.installed_apps = s.installed_apps()
     else:
         self.installed_apps = []
     return self.installed_apps
Exemplo n.º 5
0
    def app_details(self, serialno, appid):
        try:
            d = pd.read_sql('select * from apps where appid=?',
                            self.app_info_conn,
                            params=(appid, ))
            if not isinstance(d.get('permissions', ''), list):
                d['permissions'] = d.get('permissions', pd.Series([]))
                d['permissions'] = d['permissions'].fillna('').str.split(', ')
            if 'descriptionHTML' not in d:
                d['descriptionHTML'] = d['description']
            dfname = self.dump_path(serialno)

            if self.device_type == 'ios':
                ddump = self.parse_dump
                if not ddump:
                    ddump = parse_dump.IosDump(dfname)
            else:
                ddump = parse_dump.AndroidDump(dfname)

            info = ddump.info(appid)

            print('BEGIN APP INFO')
            print("info={}".format(info))
            print('END APP INFO')
            # FIXME: sloppy iOS hack but should fix later, just add these to DF
            # directly.
            if self.device_type == 'ios':
                # TODO: add extra info about iOS? Like idevicediagnostics
                # ioregentry AppleARMPMUCharger or IOPMPowerSource or
                # AppleSmartBattery.
                d['permissions'] = pd.Series(info.get('permissions', ''))
                #d['permissions'] = [info.get('permissions','')]
                d['title'] = pd.Series(info.get('title', ''))
                del info['permissions']
            print("AppInfo: ", info, appid, dfname, ddump)
            return d.fillna(''), info
        except KeyError as ex:
            print(">>> Exception:::", ex, file=sys.stderr)
            return pd.DataFrame([]), dict()