Exemple #1
0
 def _get_correct_template(self, selected_analysis: str,
                           fw_object: Union[Firmware, FileObject]):
     if selected_analysis and 'failed' in fw_object.processed_analysis[
             selected_analysis]:
         return get_template_as_string('analysis_plugins/fail.html')
     if selected_analysis:
         return self._get_analysis_view(selected_analysis)
     return get_template_as_string('show_analysis.html')
Exemple #2
0
 def _show_analysis_results(self,
                            uid,
                            selected_analysis=None,
                            root_uid=None):
     root_uid = none_to_none(root_uid)
     other_versions = None
     uids_for_comparison = get_comparison_uid_list_from_session()
     with ConnectTo(CompareDbInterface, self._config) as db_service:
         all_comparisons = db_service.page_compare_results()
         known_comparisons = [
             comparison for comparison in all_comparisons
             if uid in comparison[0]
         ]
     analysis_filter = [selected_analysis] if selected_analysis else []
     with ConnectTo(FrontEndDbInterface, self._config) as sc:
         file_obj = sc.get_object(uid, analysis_filter=analysis_filter)
     if isinstance(file_obj, Firmware):
         root_uid = file_obj.get_uid()
         other_versions = sc.get_other_versions_of_firmware(file_obj)
     if file_obj:
         view = self._get_analysis_view(
             selected_analysis
         ) if selected_analysis else get_template_as_string(
             'show_analysis.html')
         with ConnectTo(FrontEndDbInterface, self._config) as sc:
             summary_of_included_files = sc.get_summary(
                 file_obj, selected_analysis) if selected_analysis else None
             analysis_of_included_files_complete = not sc.all_uids_found_in_database(
                 list(file_obj.files_included))
         firmware_including_this_fo = self._get_firmware_ids_including_this_file(
             file_obj)
         with ConnectTo(InterComFrontEndBinding, self._config) as sc:
             analysis_plugins = sc.get_available_analysis_plugins()
         return render_template_string(
             view,
             uid=uid,
             firmware=file_obj,
             selected_analysis=selected_analysis,
             all_analyzed_flag=analysis_of_included_files_complete,
             summary_of_included_files=summary_of_included_files,
             root_uid=root_uid,
             firmware_including_this_fo=firmware_including_this_fo,
             analysis_plugin_dict=analysis_plugins,
             other_versions=other_versions,
             uids_for_comparison=uids_for_comparison,
             user_has_admin_clearance=user_has_privilege(
                 current_user, privilege='delete'),
             known_comparisons=known_comparisons)
     else:
         return render_template('uid_not_found.html', uid=uid)
Exemple #3
0
    def _show_analysis_results(self,
                               uid,
                               selected_analysis=None,
                               root_uid=None):
        if request.method == 'POST':
            self._start_single_file_analysis(uid)

        other_versions = None
        with ConnectTo(CompareDbInterface, self._config) as db_service:
            all_comparisons = db_service.page_compare_results()
            known_comparisons = [
                comparison for comparison in all_comparisons
                if uid in comparison[0]
            ]
        analysis_filter = [selected_analysis] if selected_analysis else []
        with ConnectTo(FrontEndDbInterface, self._config) as sc:
            file_obj = sc.get_object(uid, analysis_filter=analysis_filter)
            if not file_obj:
                return render_template('uid_not_found.html', uid=uid)
            if isinstance(file_obj, Firmware):
                root_uid = file_obj.get_uid()
                other_versions = sc.get_other_versions_of_firmware(file_obj)
            summary_of_included_files = sc.get_summary(
                file_obj, selected_analysis) if selected_analysis else None
            included_fo_analysis_complete = not sc.all_uids_found_in_database(
                list(file_obj.files_included))
        with ConnectTo(InterComFrontEndBinding, self._config) as sc:
            analysis_plugins = sc.get_available_analysis_plugins()
        return render_template_string(
            self._get_analysis_view(selected_analysis) if selected_analysis
            else get_template_as_string('show_analysis.html'),
            uid=uid,
            firmware=file_obj,
            selected_analysis=selected_analysis,
            all_analyzed_flag=included_fo_analysis_complete,
            summary_of_included_files=summary_of_included_files,
            root_uid=none_to_none(root_uid),
            firmware_including_this_fo=self.
            _get_firmware_ids_including_this_file(file_obj),
            analysis_plugin_dict=analysis_plugins,
            other_versions=other_versions,
            uids_for_comparison=get_comparison_uid_list_from_session(),
            user_has_admin_clearance=user_has_privilege(current_user,
                                                        privilege='delete'),
            known_comparisons=known_comparisons,
            available_plugins=self._get_used_and_unused_plugins(
                file_obj.processed_analysis,
                [x for x in analysis_plugins.keys() if x != 'unpacker']))
 def _get_compare_view(self, plugin_views):
     compare_view = get_template_as_string('compare/compare.html')
     return self._add_plugin_views_to_compare_view(compare_view,
                                                   plugin_views)