Ejemplo n.º 1
0
 def show_analysis(self, uid, selected_analysis=None, root_uid=None):
     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.uid
             other_versions = sc.get_other_versions_of_firmware(file_obj)
         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_correct_template(selected_analysis, file_obj),
         uid=uid,
         firmware=file_obj,
         selected_analysis=selected_analysis,
         all_analyzed_flag=included_fo_analysis_complete,
         root_uid=none_to_none(root_uid),
         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']
         )
     )
Ejemplo n.º 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()

        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'))
        else:
            return render_template('uid_not_found.html', uid=uid)
Ejemplo n.º 3
0
 def _start_single_file_analysis(self, uid):
     if user_has_privilege(current_user, privilege='submit_analysis'):
         with ConnectTo(FrontEndDbInterface, self._config) as database:
             file_object = database.get_object(uid)
         file_object.scheduled_analysis = request.form.getlist('analysis_systems')
         with ConnectTo(InterComFrontEndBinding, self._config) as intercom:
             intercom.add_single_file_task(file_object)
     else:
         flash('You have insufficient rights to add additional analyses')
Ejemplo n.º 4
0
def test_is_superuser(input_data, expected):
    proxied_object = LocalProxy(input_data)
    assert user_has_privilege(proxied_object) == expected
Ejemplo n.º 5
0
def user_has_role(current_user, role):
    return current_user.is_authenticated and user_has_privilege(
        current_user, role)