Exemplo n.º 1
0
    def generate_html_report(reports, report_path):
        logging.info("Generating HTML report")

        Utils.copy_tree(os.path.join(Utils.get_base_path_folder(), "template"),
                        report_path)

        report_file_path = os.path.join(report_path, "report.html")

        try:
            os.remove(os.path.join(
                report_path, "index.html"))  #remove report.html from index
        except:
            pass

        if not reports.get("header"):
            reports["header"] = {}

        reports["header"]["case_name"] = os.environ.get("case_name".upper())
        reports["header"]["case_number"] = os.environ.get(
            "case_number".upper())
        reports["header"]["examiner"] = os.environ.get("examiner".upper())

        js_code = "var reportData = " + json.dumps(reports, indent=2)

        assets_folder = os.path.join(report_path, "assets")
        Utils.check_and_generate_folder(assets_folder)

        handler = open(os.path.join(assets_folder, "Report.js"), "w")
        handler.write(js_code)
        handler.close()

        return report_file_path
Exemplo n.º 2
0
    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()