예제 #1
0
    def extract_dumps(self, serial, folder):
        files = os.listdir(folder)

        self.internal_path = os.path.join(folder, "data", "data")
        self.external_path = os.path.join(folder, "data", "media", "0",
                                          "Android", "data")

        Utils.check_and_generate_folder(self.internal_path)
        Utils.check_and_generate_folder(self.external_path)

        if self.dsprocessor:
            self.progress.setProgressText(
                '  Handling extracted data from {}.\n  Please wait.'.format(
                    serial))
        else:
            self.progress.progress(
                'Handling extracted data from {}'.format(serial))

        for filename in files:
            if '_internal.tar.gz' in filename:
                Utils.extract_tar(
                    os.path.join(folder, filename),
                    os.path.join(self.internal_path,
                                 filename.replace('_internal.tar.gz', '')))
            elif '_external.tar.gz' in filename:
                Utils.extract_tar(
                    os.path.join(folder, filename),
                    os.path.join(self.external_path,
                                 filename.replace('_external.tar.gz', '')))

        return os.path.join(folder, "data")
예제 #2
0
파일: analyzer.py 프로젝트: rabea98/TikTok
    def generate_report(self):
        if not self.app_id:
            logging.critical("Module not found for application {}".format(
                self.app))
            return None

        if not self.app:
            logging.critical("Module not found for {} package".format(
                self.app_id))
            return None

        logging.info("Found module {} for {}".format(self.app, self.app_id))

        logging.info("Looking for {} data in {}".format(self.app, self.folder))

        # self.report_path = os.path.join(report_path, "report", self.report_name)
        Utils.check_and_generate_folder(self.report_path)

        self.internal_cache_path = os.path.join(self.report_path, "Contents",
                                                "internal")
        self.external_cache_path = os.path.join(self.report_path, "Contents",
                                                "external")

        if self.internal_path or self.external_path:
            logging.info("Dump file found. Extracting dump.")
            if self.internal_path:
                Utils.extract_tar(self.internal_path, self.internal_cache_path)

            if self.external_path:
                Utils.extract_tar(self.external_path, self.external_cache_path)
        else:
            self.internal_path = os.path.join("data", "data", self.app_id)
            self.external_path = os.path.join("data", "media", "0", "Android",
                                              "data", self.app_id)

            int_find = Utils.find_folder_has_folder(self.internal_path,
                                                    self.folder)
            if int_find:
                Utils.copy_tree(int_find, self.internal_cache_path)

            ext_find = Utils.find_folder_has_folder(self.external_path,
                                                    self.folder)
            if ext_find:
                Utils.copy_tree(ext_find, self.external_cache_path)

            if not int_find and not ext_find:
                logging.info("Application data for {} not found".format(
                    self.app))
                return None

        m = __import__("modules.report.{}".format(self.app), fromlist=[None])
        module = m.ModuleReport(self.internal_cache_path,
                                self.external_cache_path, self.report_path,
                                self.app, self.app_id)

        # Utils.remove_folder(os.path.join(self.report_path))

        return module.generate_report()