OpenSnitch is a GNU/Linux interactive application firewall inspired by Little Snitch.
This report presents the forensic synthetic code analysis of evilsocket/opensnitch, a Python project with 13,876 GitHub stars. SynthScan v2.0 examined 178,460 lines of code across 428 source files, recording 885 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 5.6 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 885 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/tests/dialogs/test_preferences.py | 18 | def reset_settings(self): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 21 | except Exception: | CODE |
| MEDIUM | ui/opensnitch/service.py | 253 | def _on_switch_autostart(self): | CODE |
| MEDIUM | ui/opensnitch/service.py | 282 | def show_systray_msg(self, title, body, icon=None, callback=None, user_args=None | CODE |
| MEDIUM | ui/opensnitch/service.py | 301 | def _show_systray_msg_error(self): | CODE |
| MEDIUM | ui/opensnitch/service.py | 637 | def _build_missed_rule_msg(self, conn, rule, node, hostname): | CODE |
| MEDIUM | ui/opensnitch/service.py | 690 | def _delete_node(self, peer): | CODE |
| MEDIUM | ui/opensnitch/service.py | 914 | def Ping(self, request, context): | CODE |
| LOW | ui/opensnitch/service.py | 173 | except Exception as e: | CODE |
| LOW | ui/opensnitch/service.py | 256 | except Exception as e: | CODE |
| LOW | ui/opensnitch/service.py | 297 | except Exception as e: | CODE |
| LOW | ui/opensnitch/service.py | 323 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 432 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 672 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 702 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 757 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 804 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 826 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 838 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 933 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 1021 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 1114 | except Exception as e: | STRING |
| LOW | ui/opensnitch/service.py | 1136 | except Exception as e: | STRING |
| LOW | ui/opensnitch/config.py | 235 | except Exception: | CODE |
| LOW | ui/opensnitch/config.py | 268 | except Exception as e: | CODE |
| MEDIUM | ui/opensnitch/config.py | 232 | def getInt(self, path, default_value=0): | CODE |
| MEDIUM | ui/opensnitch/config.py | 246 | def setRulesDurationFilter(self, ignore_temporary_rules=False, temp_rules=1): | CODE |
| LOW | ui/opensnitch/rules.py | 75 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 129 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 250 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 268 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 286 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 291 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 307 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 313 | except Exception as e: | CODE |
| LOW | ui/opensnitch/rules.py | 345 | except Exception as e: | CODE |
| MEDIUM | ui/opensnitch/rules.py | 108 | def add_rules(self, addr, rules): | CODE |
| MEDIUM | ui/opensnitch/rules.py | 237 | def rule_to_json(self, node, rule_name): | CODE |
| MEDIUM | ui/opensnitch/rules.py | 254 | def _export_rule_common(self, node, records, outdir): | CODE |
| LOW | ui/opensnitch/desktop_parser.py | 12 | except Exception as e: | CODE |
| MEDIUM | ui/opensnitch/desktop_parser.py | 14 | print("Error importing pyinotify:", e) | CODE |
| LOW | ui/opensnitch/desktop_parser.py | 57 | except Exception: | CODE |
| LOW | ui/opensnitch/desktop_parser.py | 84 | except Exception as e: | CODE |
| MEDIUM | ui/opensnitch/desktop_parser.py | 53 | def get_locale(self): | CODE |
| MEDIUM | ui/opensnitch/desktop_parser.py | 61 | def _parse_exec(self, cmd): | CODE |
| LOW | ui/opensnitch/notifications.py | 57 | except Exception: | CODE |
| LOW | ui/opensnitch/notifications.py | 77 | except Exception as e: | CODE |
| LOW | ui/opensnitch/notifications.py | 109 | except Exception as e: | CODE |
| MEDIUM | ui/opensnitch/notifications.py | 96 | def show(self, title, body, icon="dialog-information", urgency=URGENCY_NORMAL, c | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 115 | def add_rules(self, addr, rules): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 182 | def delete(self, peer): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 209 | def get_node_hostname(self, addr): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 218 | def get_node_config(self, addr): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 227 | def get_client_config(self, client_config): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 238 | def get_addr(self, peer): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 249 | def is_connected(self, addr): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 285 | def save_node_config(self, addr, config): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 291 | def save_nodes_config(self, config): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 323 | def send_notification(self, addr, notification, callback_signal=None): | CODE |
| MEDIUM | ui/opensnitch/nodes.py | 377 | def reply_notification(self, addr, reply): | CODE |
| 278 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/tests/conftest.py | 63 | def reset_node_before_each_test(qapp): | CODE |
| LOW | ui/tests/test_nodes.py | 172 | def test_is_local_unix_socket(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 177 | def test_is_local_remote_address(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 192 | def test_get_node_hostname_nonexistent(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 203 | def test_get_node_config_nonexistent(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 218 | def test_send_notifications_broadcast(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 285 | def test_delete_rule_by_field(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 354 | def test_get_node_nonexistent(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 371 | def test_get_addr_various_formats(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 392 | def test_get_addr_unix_empty_path(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 438 | def test_firewall_enable_interception(self, qtbot): | CODE |
| LOW | ui/tests/test_nodes.py | 446 | def test_firewall_disable_interception(self, qtbot): | CODE |
| LOW⚡ | ui/tests/dialogs/test_preferences.py | 395 | def test_dialog_position_center(self, qtbot): | CODE |
| LOW⚡ | ui/tests/dialogs/test_preferences.py | 403 | def test_dialog_position_top_right(self, qtbot): | CODE |
| LOW⚡ | ui/tests/dialogs/test_preferences.py | 411 | def test_ui_rules_combo_disabled_when_unchecked(self, qtbot): | CODE |
| LOW⚡ | ui/tests/dialogs/test_preferences.py | 435 | def test_notifications_disabled(self, qtbot): | CODE |
| LOW⚡ | ui/tests/dialogs/test_preferences.py | 445 | def test_target_option_process(self, qtbot): | CODE |
| LOW⚡ | ui/tests/dialogs/test_preferences.py | 455 | def test_target_option_custom(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 36 | def test_save_popups_settings(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 156 | def test_cancel_discards_changes(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 209 | def test_default_values_on_fresh_start(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 228 | def test_save_screen_scaling_settings(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 242 | def test_save_desktop_notifications_qt(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 256 | def test_save_db_purge_settings(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 282 | def test_save_advanced_popup_options(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 300 | def test_timeout_spinner_boundaries(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 321 | def test_settings_persistence_reopen(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 362 | def test_action_reject_setting(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 373 | def test_duration_option_always(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_preferences.py | 384 | def test_duration_option_custom(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 217 | def test_add_rule_name_conflict(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 254 | def test_edit_and_rename_rule(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 371 | def test_rule_with_process_path(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 446 | def test_rule_with_source_port(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 543 | def test_rule_enabled_disabled(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 596 | def test_rule_with_process_regexp(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 616 | def test_rule_with_cmdline_regexp(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 636 | def test_rule_with_host_regexp(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 655 | def test_sensitive_case_matching(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 711 | def test_comma_separated_ports(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 756 | def test_empty_rule_name_auto_generation(self, qtbot): | CODE |
| LOW | ui/tests/dialogs/test_ruleseditor.py | 774 | def test_checkbox_enables_field(self, qtbot): | CODE |
| LOW | ui/opensnitch/service.py | 269 | def _show_gui_if_tray_not_available(self): | CODE |
| LOW | ui/opensnitch/service.py | 502 | def _on_enable_interception_clicked(self): | STRING |
| LOW | ui/opensnitch/service.py | 518 | def _has_desktop_notifications(self): | STRING |
| LOW⚡ | …nitch/plugins/list_subscriptions/list_subscriptions.py | 341 | def _config_update_diff_targets( | CODE |
| LOW⚡ | …nitch/plugins/list_subscriptions/list_subscriptions.py | 361 | def _apply_config_update_diff( | CODE |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 219 | def _ensure_ui_log_bridge_handler(cls) -> None: | CODE |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 409 | def _schedule_startup_recheck(self, *, delay: float): | CODE |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 692 | def _reload_rules_for_updated_subscription(self, sub: SubscriptionSpec): | CODE |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 820 | def _find_layout_containing_widget( | CODE |
| LOW | ui/opensnitch/plugins/list_subscriptions/_utils.py | 168 | def filename_from_content_disposition(value: str | None): | CODE |
| LOW | ui/opensnitch/plugins/list_subscriptions/_utils.py | 213 | def ensure_filename_type_suffix(filename: str, list_type: str): | CODE |
| LOW | ui/opensnitch/plugins/list_subscriptions/_utils.py | 225 | def normalized_subscription_filename(filename: str | None, list_type: str | None): | CODE |
| LOW | ui/opensnitch/plugins/list_subscriptions/_utils.py | 293 | def dedupe_subscription_identity( | CODE |
| LOW | …_subscriptions/ui/controllers/table_view_controller.py | 29 | def _expand_visible_columns_to_viewport(self, base_widths: dict[int, int]) -> None: | CODE |
| LOW | …_subscriptions/ui/controllers/table_view_controller.py | 71 | def on_table_view_tab_changed(self, index: int): | CODE |
| LOW | …_subscriptions/ui/controllers/table_view_controller.py | 107 | def apply_table_column_sizing(self, index: int | None = None): | CODE |
| LOW | …_subscriptions/ui/controllers/table_view_controller.py | 185 | def reset_table_column_widths_for_current_tab(self): | CODE |
| LOW | …_subscriptions/ui/controllers/table_view_controller.py | 192 | def reset_table_sort_for_current_tab(self): | CODE |
| 145 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/opensnitch/service.py | 326 | CODE | |
| LOW | ui/opensnitch/service.py | 388 | CODE | |
| LOW | ui/opensnitch/service.py | 626 | CODE | |
| LOW | ui/opensnitch/service.py | 842 | CODE | |
| LOW | ui/opensnitch/service.py | 1029 | CODE | |
| LOW | ui/opensnitch/rules.py | 319 | CODE | |
| LOW | ui/opensnitch/desktop_parser.py | 61 | CODE | |
| LOW | ui/opensnitch/desktop_parser.py | 181 | CODE | |
| LOW | ui/opensnitch/desktop_parser.py | 186 | CODE | |
| LOW | ui/opensnitch/database/__init__.py | 432 | CODE | |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 535 | CODE | |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 692 | CODE | |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 1084 | CODE | |
| LOW | …nitch/plugins/list_subscriptions/list_subscriptions.py | 1250 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/_utils.py | 168 | CODE | |
| LOW | …ugins/list_subscriptions/ui/workers/url_test_worker.py | 31 | CODE | |
| LOW | …/list_subscriptions/ui/workers/state_refresh_worker.py | 88 | CODE | |
| LOW | …criptions/ui/workers/attached_rules_snapshot_worker.py | 59 | CODE | |
| LOW | …criptions/ui/workers/attached_rules_snapshot_worker.py | 139 | CODE | |
| LOW | …criptions/ui/workers/attached_rules_snapshot_worker.py | 238 | CODE | |
| LOW | …_subscriptions/ui/controllers/table_view_controller.py | 71 | CODE | |
| LOW | …ist_subscriptions/ui/controllers/runtime_controller.py | 123 | CODE | |
| LOW | …ist_subscriptions/ui/controllers/runtime_controller.py | 307 | CODE | |
| LOW | …t_subscriptions/ui/controllers/bulk_edit_controller.py | 31 | CODE | |
| LOW | …_subscriptions/ui/controllers/table_data_controller.py | 922 | CODE | |
| LOW | …riptions/ui/controllers/rules_attachment_controller.py | 178 | CODE | |
| LOW | …riptions/ui/controllers/rules_attachment_controller.py | 369 | CODE | |
| LOW | …riptions/ui/controllers/rules_attachment_controller.py | 725 | CODE | |
| LOW | …riptions/ui/controllers/rules_attachment_controller.py | 765 | CODE | |
| LOW | …t_subscriptions/ui/controllers/attached_rules_index.py | 12 | CODE | |
| LOW | …ubscriptions/ui/controllers/context_menu_controller.py | 15 | CODE | |
| LOW | …subscriptions/ui/controllers/action_file_controller.py | 34 | CODE | |
| LOW | …ins/list_subscriptions/ui/views/subscription_dialog.py | 133 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/io/lock.py | 66 | CODE | |
| LOW | ui/opensnitch/plugins/versionchecker/versionchecker.py | 76 | CODE | |
| LOW | ui/opensnitch/plugins/highlight/highlight.py | 140 | CODE | |
| LOW | ui/opensnitch/plugins/highlight/highlight.py | 179 | CODE | |
| LOW | ui/opensnitch/plugins/highlight/highlight.py | 339 | CODE | |
| LOW | ui/opensnitch/plugins/downloader/downloader.py | 61 | CODE | |
| LOW | ui/opensnitch/plugins/downloader/downloader.py | 188 | CODE | |
| LOW | ui/opensnitch/plugins/virustotal/virustotal.py | 348 | CODE | |
| LOW | ui/opensnitch/plugins/virustotal/_utils.py | 3 | CODE | |
| LOW | ui/opensnitch/plugins/virustotal/_utils.py | 71 | CODE | |
| LOW | ui/opensnitch/plugins/virustotal/_utils.py | 105 | CODE | |
| LOW | ui/opensnitch/utils/__init__.py | 461 | CODE | |
| LOW | ui/opensnitch/utils/xdg.py | 8 | CODE | |
| LOW | ui/opensnitch/utils/network_aliases/network_aliases.py | 41 | CODE | |
| LOW | ui/opensnitch/utils/themes/themes.py | 44 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 71 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 109 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 123 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 174 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 212 | CODE | |
| LOW | ui/opensnitch/firewall/rules.py | 54 | CODE | |
| LOW | ui/opensnitch/firewall/rules.py | 84 | CODE | |
| LOW | ui/opensnitch/firewall/rules.py | 111 | CODE | |
| LOW | ui/opensnitch/firewall/rules.py | 146 | CODE | |
| LOW | ui/opensnitch/firewall/rules.py | 160 | CODE | |
| LOW | ui/opensnitch/firewall/rules.py | 194 | CODE | |
| LOW | ui/opensnitch/actions/__init__.py | 167 | CODE | |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/tests/dialogs/test_preferences.py | 5 | CODE | |
| LOW | …/opensnitch/plugins/list_subscriptions/_annotations.py | 4 | CODE | |
| LOW | …/opensnitch/plugins/list_subscriptions/_annotations.py | 4 | CODE | |
| LOW | …/opensnitch/plugins/list_subscriptions/_annotations.py | 4 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/_compat.py | 6 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/_compat.py | 8 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 2 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 7 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 7 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 7 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 8 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 12 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 12 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 12 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 13 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 16 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 16 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 16 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 17 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 22 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 22 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 22 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 23 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 26 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 26 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 26 | CODE | |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 27 | CODE | |
| LOW | …itch/plugins/list_subscriptions/ui/workers/__init__.py | 1 | CODE | |
| LOW | …itch/plugins/list_subscriptions/ui/workers/__init__.py | 1 | CODE | |
| LOW | …itch/plugins/list_subscriptions/ui/workers/__init__.py | 1 | CODE | |
| LOW | …itch/plugins/list_subscriptions/ui/workers/__init__.py | 1 | CODE | |
| LOW | …itch/plugins/list_subscriptions/ui/workers/__init__.py | 7 | CODE | |
| LOW | …itch/plugins/list_subscriptions/ui/workers/__init__.py | 8 | CODE | |
| LOW | …_subscriptions/ui/controllers/table_view_controller.py | 7 | CODE | |
| LOW | …ist_subscriptions/ui/controllers/runtime_controller.py | 10 | CODE | |
| LOW | …subscriptions/ui/controllers/defaults_ui_controller.py | 13 | CODE | |
| LOW | …iptions/ui/controllers/subscription_edit_controller.py | 22 | CODE | |
| LOW | …t_subscriptions/ui/controllers/bulk_edit_controller.py | 16 | CODE | |
| LOW | …_subscriptions/ui/controllers/table_data_controller.py | 41 | CODE | |
| LOW | …tions/ui/controllers/subscription_dialog_controller.py | 15 | CODE | |
| LOW | …t_subscriptions/ui/controllers/inspector_controller.py | 10 | CODE | |
| LOW | …riptions/ui/controllers/rules_attachment_controller.py | 20 | CODE | |
| LOW | …ubscriptions/ui/controllers/context_menu_controller.py | 6 | CODE | |
| LOW | …ubscriptions/ui/controllers/rules_editor_controller.py | 20 | CODE | |
| LOW | …subscriptions/ui/controllers/action_file_controller.py | 19 | CODE | |
| LOW | …t_subscriptions/ui/controllers/selection_controller.py | 7 | CODE | |
| LOW | …tions/ui/controllers/subscription_status_controller.py | 9 | CODE | |
| LOW | …plugins/list_subscriptions/ui/views/inspector_panel.py | 10 | CODE | |
| LOW | ui/opensnitch/plugins/virustotal/_popups.py | 5 | CODE | |
| LOW | ui/opensnitch/plugins/virustotal/_procdialog.py | 3 | CODE | |
| LOW | ui/opensnitch/plugins/virustotal/_models.py | 10 | CODE | |
| LOW | ui/opensnitch/utils/logger/__init__.py | 16 | CODE | |
| LOW | ui/opensnitch/utils/logger/logger.py | 4 | CODE | |
| LOW | ui/opensnitch/utils/logger/logger.py | 6 | CODE | |
| LOW | ui/opensnitch/utils/network_aliases/__init__.py | 18 | CODE | |
| LOW | ui/opensnitch/utils/themes/__init__.py | 18 | CODE | |
| LOW | ui/opensnitch/firewall/chains.py | 1 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 8 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 9 | CODE | |
| LOW | ui/opensnitch/firewall/__init__.py | 10 | CODE | |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/tests/dialogs/test_preferences.py | 101 | # qtbot.mouseClick(self.prefs.applyButton, QtCore.Qt.MouseButton.LeftButton) | COMMENT |
| LOW | ui/opensnitch/service.py | 921 | # do not update db here, do it on the main thread | COMMENT |
| LOW | ui/opensnitch/plugins/list_subscriptions/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/plugins/versionchecker/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/plugins/highlight/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/plugins/downloader/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/plugins/sample/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/plugins/virustotal/virustotal.py | 121 | # - Hook Procs tab list, get the hash of each binary, upload to VT and | COMMENT |
| LOW | ui/opensnitch/plugins/virustotal/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/plugins/virustotal/_models.py | 101 | self.headerLabels.append("SSL info") | COMMENT |
| LOW | ui/opensnitch/utils/logger/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/utils/network_aliases/network_aliases.py | 1 | # Copyright (C) 2024 Nolan Carouge | COMMENT |
| LOW | ui/opensnitch/utils/network_aliases/__init__.py | 1 | # Copyright (C) 2024 Nolan Carouge | COMMENT |
| LOW | ui/opensnitch/utils/duration/duration.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | ui/opensnitch/utils/duration/__init__.py | 1 | # Copyright (C) 2018 Simone Margaritelli | COMMENT |
| LOW | ui/opensnitch/utils/themes/__init__.py | 1 | # Copyright (C) 2025 | COMMENT |
| LOW | ui/opensnitch/dialogs/preferences/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/dialogs/preferences/sections/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/dialogs/ruleseditor/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/dialogs/firewall_rule/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/dialogs/prompt/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/dialogs/events/config.py | 201 | self.COL_STR_HITS | COMMENT |
| LOW | ui/opensnitch/dialogs/events/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/dialogs/events/tasks/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/customwidgets/generictableview.py | 541 | if item is None: | COMMENT |
| LOW | ui/opensnitch/customwidgets/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/customwidgets/completer.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ui/opensnitch/customwidgets/itemwidgetcentered.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| LOW | ebpf_prog/opensnitch-procs.c | 141 | // | COMMENT |
| LOW | ebpf_prog/common.h | 1 | #ifndef OPENSNITCH_COMMON_H | COMMENT |
| LOW | ebpf_prog/common_defs.h | 1 | #ifndef OPENSNITCH_COMMON_DEFS_H | COMMENT |
| LOW | ebpf_prog/opensnitch.c | 521 | COMMENT | |
| LOW | ebpf_prog/opensnitch-dns.c | 1 | /* Copyright (C) 2022 calesanz | COMMENT |
| LOW | ebpf_prog/opensnitch-dns.c | 21 | #define KBUILD_MODNAME "opensnitch-dns" | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_core_read.h | 281 | #define ___last3(a, b, x) x | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_core_read.h | 301 | COMMENT | |
| LOW | ebpf_prog/bpf_headers/bpf_core_read.h | 321 | #define ___rd_last(fn, ...) \ | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_helpers.h | 181 | enum libbpf_tristate { | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_helpers.h | 201 | #ifndef ___bpf_narg | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 1 | /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 21 | #define bpf_target_loongarch | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 41 | #if defined(__x86_64__) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 61 | #define bpf_target_defined | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 81 | #if defined(__KERNEL__) || defined(__VMLINUX_H__) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 101 | #define __PT_PARM1_REG eax | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 141 | #define __PT_PARM1_REG gprs[2] | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 161 | #define __PT_RET_REG uregs[14] | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 181 | #define __PT_FP_REG regs[29] /* Works only with CONFIG_FRAME_POINTER */ | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 201 | COMMENT | |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 221 | #define __PT_PARM5_REG gpr[7] | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 241 | /* Should this also be a bpf_target check for the sparc case? */ | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 261 | /* riscv does not select ARCH_HAS_SYSCALL_WRAPPER. */ | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 281 | #endif | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 301 | #define PT_REGS_IP(x) (__PT_REGS_CAST(x)->__PT_IP_REG) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 321 | #define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = PT_REGS_RET(ctx); }) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 341 | #define PT_REGS_PARM5_SYSCALL(x) PT_REGS_PARM5(x) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 361 | #define PT_REGS_FP(x) ({ _Pragma(__BPF_TARGET_MISSING); 0l; }) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 381 | #define PT_REGS_PARM2_SYSCALL(x) ({ _Pragma(__BPF_TARGET_MISSING); 0l; }) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 401 | #define PT_REGS_SYSCALL_REGS(ctx) ((struct pt_regs *)PT_REGS_PARM1(ctx)) | COMMENT |
| LOW | ebpf_prog/bpf_headers/bpf_tracing.h | 521 | #define ___bpf_syscall_args2(x, args...) ___bpf_syscall_args1(args), (void *)PT_REGS_PARM2_SYSCALL(regs) | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/opensnitch/plugins/list_subscriptions/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/plugins/versionchecker/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/plugins/highlight/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/plugins/downloader/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/plugins/sample/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/plugins/virustotal/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/utils/logger/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/utils/network_aliases/network_aliases.py | 3 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/utils/network_aliases/network_aliases.py | 27 | # Define the path to the network_aliases.json file | COMMENT |
| MEDIUM | ui/opensnitch/utils/network_aliases/__init__.py | 3 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/utils/duration/duration.py | 9 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/utils/duration/__init__.py | 7 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/utils/themes/__init__.py | 3 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/dialogs/preferences/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/dialogs/preferences/sections/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/dialogs/ruleseditor/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/dialogs/firewall_rule/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/dialogs/prompt/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/dialogs/events/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/dialogs/events/tasks/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/customwidgets/__init__.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/customwidgets/completer.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | ui/opensnitch/customwidgets/itemwidgetcentered.py | 1 | # This file is part of OpenSnitch. | COMMENT |
| MEDIUM | utils/packaging/daemon/deb/debian/gitlab-ci.yml | 14 | # Create an overlay to discard writes to /srv/gopath/src after the build: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/opensnitch/plugins/list_subscriptions/_compat.py | 10 | __all__ = ["StatsDialog"] | CODE |
| LOW | ui/opensnitch/plugins/list_subscriptions/ui/__init__.py | 32 | __all__ = [ | CODE |
| LOW | …itch/plugins/list_subscriptions/ui/workers/__init__.py | 10 | __all__ = [ | CODE |
| LOW | …tions/ui/controllers/subscription_dialog_controller.py | 119 | def update_meta(self, meta: dict[str, str]) -> None: | CODE |
| LOW | …tions/ui/controllers/subscription_dialog_controller.py | 177 | def set_dialog_message(self, message: str, error: bool) -> None: | CODE |
| LOW⚡ | …riptions/ui/controllers/rules_attachment_controller.py | 148 | def update_cached_rule_enabled(self, addr: str, rule_name: str, enabled: bool) -> None: | CODE |
| LOW⚡ | …riptions/ui/controllers/rules_attachment_controller.py | 432 | def _update_count_query_delay_factor(self, elapsed_ms: int) -> None: | CODE |
| LOW⚡ | …riptions/ui/controllers/rules_attachment_controller.py | 436 | def _update_fetch_ms_per_row(self, elapsed_ms: int, row_count: int) -> None: | CODE |
| LOW⚡ | …riptions/ui/controllers/rules_attachment_controller.py | 442 | def _update_process_ms_per_row(self, elapsed_ms: int, row_count: int) -> None: | CODE |
| LOW | …t_subscriptions/ui/views/subscription_status_dialog.py | 156 | def update_meta(self, meta: dict[str, str]) -> None: | CODE |
| LOW | ui/opensnitch/plugins/versionchecker/versionchecker.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | ui/opensnitch/plugins/downloader/downloader.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | ui/opensnitch/plugins/virustotal/virustotal.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | ui/opensnitch/plugins/virustotal/_models.py | 18 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ui/opensnitch/plugins/virustotal/README.md | 70 | "api_key": "<your-api-key>", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/list_subscriptions/ui/widgets/toggle_switch_widget.py | 117 | CODE | |
| LOW | ui/opensnitch/dialogs/events/views.py | 67 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/opensnitch/utils/network_aliases/network_aliases.py | 31 | # Check if the file exists before attempting to load it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/opensnitch/dialogs/firewall_rule/dialog.py | 516 | # 2. if the value contains , or - just use the written | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/opensnitch/dialogs/preferences/utils.py | 112 | "Hover the mouse over the texts to display the help<br><br>Don't forget to visit the wiki: <a href=\"{0}\">{ | CODE |