An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.
This report presents the forensic synthetic code analysis of mitmproxy/mitmproxy, a Python project with 44,289 GitHub stars. SynthScan v2.0 examined 144,438 lines of code across 1012 source files, recording 799 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 6.5 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 799 distinct pattern matches across 18 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 |
|---|---|---|---|---|
| LOW | test/filename_matching.py | 8 | def check_src_files_have_test(): | CODE |
| LOW | test/filename_matching.py | 33 | def check_test_files_have_src(): | CODE |
| LOW | test/mitmproxy/test_command.py | 687 | def test_verify_arg_signature(): | CODE |
| LOW | test/mitmproxy/test_flow.py | 119 | async def test_load_http_flow_reverse(self): | CODE |
| LOW | test/mitmproxy/test_command_lexer.py | 23 | def test_partial_quoted_string(test_input, valid): | CODE |
| LOW | test/mitmproxy/test_log.py | 14 | def test_dont_pick_up_mutations(): | CODE |
| LOW | test/mitmproxy/test_http.py | 197 | def test_host_update_also_updates_header(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 308 | def test_pretty_url_authority(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 350 | def test_get_cookies_withequalsign(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 559 | def test_get_cookies_with_parameters(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 574 | def test_get_cookies_no_value(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 585 | def test_get_cookies_twocookies(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 945 | def test_content_length_update(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 957 | def test_content_length_not_added_for_response_with_transfer_encoding(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 995 | def test_update_content_length_header(self): | CODE |
| LOW | test/mitmproxy/test_http.py | 1077 | def test_decode_noop_on_empty_content(self): | CODE |
| LOW | test/mitmproxy/test_certs.py | 66 | def test_create_no_common_name(self, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 244 | def test_aki_falls_back_when_issuer_has_no_ski(self): | CODE |
| LOW | test/mitmproxy/test_certs.py | 394 | def test_from_store_with_passphrase(self, tdata, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 416 | def test_add_cert_with_no_private_key(self, tdata, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 425 | def test_add_cert_private_public_mismatch(self, tdata, tstore): | CODE |
| LOW | test/mitmproxy/test_certs.py | 445 | def test_add_cert_chain_invalid(self, tdata, tstore, caplog): | CODE |
| LOW | test/mitmproxy/test_certs.py | 517 | def test_crl_distribution_points(self, tdata, filename, crls): | CODE |
| LOW | test/mitmproxy/contentviews/test___init__.py | 85 | def test_view_failure_explicit(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 44 | def test_make_metadata_websocket(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 62 | def test_get_data_regular_content(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 77 | def test_get_data_http_decode_error(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__utils.py | 112 | def test_byte_pairs_to_str_pairs(): | CODE |
| LOW | test/mitmproxy/contentviews/test__api.py | 59 | def test_syntaxhighlight_matches(self): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 9 | def test_register_triggers_on_change(): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 20 | def test_replace_view_triggers_on_change_and_logs(caplog): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 50 | def test_get_view_unknown_name(caplog): | CODE |
| LOW | test/mitmproxy/contentviews/test__registry.py | 63 | def test_render_priority_error(caplog): | CODE |
| LOW | test/mitmproxy/tools/test_main.py | 35 | def test_options_includes_addon_options(tdata, capsys): | CODE |
| LOW | test/mitmproxy/tools/test_main.py | 49 | def test_options_without_scripts(capsys): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 49 | def test_all_handlers_have_auth(): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 114 | def test_javascript_mime_type(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 146 | def test_flows_dump_filter_error(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 300 | def test_flow_content_returns_raw_content_when_decoding_fails(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 327 | def test_update_flow_content_multipart(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 366 | def test_flow_contentview_websocket(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 453 | def test_websocket_filter_application(self): | CODE |
| LOW | test/mitmproxy/tools/web/test_app.py | 535 | def test_websocket_filter_command_error(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 585 | def test_login_with_token_header(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 590 | def test_login_with_token_param(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 595 | def test_login_with_malformed_auth_header(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 599 | def test_login_with_invalid_auth_header(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 608 | def test_unauthorized_websocket(self): | CODE |
| LOW⚡ | test/mitmproxy/tools/web/test_app.py | 618 | def test_auth_cookie_port_suffix_modification(self): | CODE |
| LOW | test/mitmproxy/tools/console/test_flowview.py | 40 | async def test_content_missing_returns_error(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_flowview.py | 58 | async def test_empty_content_request_and_response(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_flowview.py | 85 | async def test_content_view_fullcontents_true_uses_unlimited_limit(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 62 | def test_shorten_message_narrow(): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 67 | async def test_console_quickhelp_option(console, monkeypatch): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 86 | async def test_console_quickhelp_toggle(console, monkeypatch): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 115 | async def test_console_quickhelp_hotkey(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_statusbar.py | 126 | async def test_console_quickhelp_prompts_visible_when_disabled(console, monkeypatch): | CODE |
| LOW | test/mitmproxy/tools/console/test_integration.py | 15 | def test_keybindings_home_end(console): | CODE |
| LOW | test/mitmproxy/tools/console/test_contentview.py | 22 | async def test_contentview_flowview(console, monkeypatch): | CODE |
| LOW | test/mitmproxy/net/test_tls.py | 18 | def test_make_master_secret_logger(): | CODE |
| 273 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/tools/console/test_quickhelp.py | 44 | CODE | |
| LOW | test/mitmproxy/proxy/tutils.py | 193 | CODE | |
| LOW | test/mitmproxy/proxy/tutils.py | 324 | CODE | |
| LOW | test/mitmproxy/proxy/test_tunnel.py | 24 | CODE | |
| LOW | test/mitmproxy/proxy/layers/http/test_http_fuzz.py | 430 | CODE | |
| LOW | test/mitmproxy/proxy/layers/http/test_http.py | 541 | CODE | |
| LOW | test/mitmproxy/proxy/layers/quic/test__stream_layers.py | 64 | CODE | |
| LOW | mitmproxy/addonmanager.py | 243 | CODE | |
| LOW | mitmproxy/command.py | 174 | CODE | |
| LOW | mitmproxy/flowfilter.py | 301 | CODE | |
| LOW | mitmproxy/flowfilter.py | 337 | CODE | |
| LOW | mitmproxy/flowfilter.py | 364 | CODE | |
| LOW | mitmproxy/certs.py | 284 | CODE | |
| LOW | mitmproxy/types.py | 414 | CODE | |
| LOW | mitmproxy/optmanager.py | 564 | CODE | |
| LOW | mitmproxy/optmanager.py | 364 | CODE | |
| LOW | mitmproxy/optmanager.py | 412 | CODE | |
| LOW | mitmproxy/connection.py | 147 | CODE | |
| LOW | mitmproxy/http.py | 1174 | CODE | |
| LOW | mitmproxy/contentviews/_view_xml_html.py | 104 | CODE | |
| LOW | mitmproxy/contentviews/_view_xml_html.py | 209 | CODE | |
| LOW | mitmproxy/contentviews/_view_http3.py | 25 | CODE | |
| LOW | mitmproxy/contentviews/_view_mqtt.py | 60 | CODE | |
| LOW | mitmproxy/contentviews/_view_mqtt.py | 87 | CODE | |
| LOW | mitmproxy/contentviews/_view_mqtt.py | 193 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/view.py | 21 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/image_parser.py | 13 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/image_parser.py | 63 | CODE | |
| LOW | mitmproxy/tools/main.py | 45 | CODE | |
| LOW | mitmproxy/tools/main.py | 56 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 82 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 580 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 717 | CODE | |
| LOW | mitmproxy/tools/web/static_viewer.py | 51 | CODE | |
| LOW | mitmproxy/tools/console/options.py | 165 | CODE | |
| LOW | mitmproxy/tools/console/statusbar.py | 157 | CODE | |
| LOW | mitmproxy/tools/console/window.py | 285 | CODE | |
| LOW | mitmproxy/tools/console/searchable.py | 25 | CODE | |
| LOW | mitmproxy/tools/console/palettes.py | 97 | CODE | |
| LOW | mitmproxy/tools/console/flowview.py | 68 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 245 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 274 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 313 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 479 | CODE | |
| LOW | mitmproxy/tools/console/common.py | 726 | CODE | |
| LOW | mitmproxy/tools/console/quickhelp.py | 52 | CODE | |
| LOW | mitmproxy/tools/console/consoleaddons.py | 395 | CODE | |
| LOW | mitmproxy/tools/console/consoleaddons.py | 468 | CODE | |
| LOW | mitmproxy/tools/console/commandexecutor.py | 14 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/base.py | 81 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/base.py | 329 | CODE | |
| LOW | mitmproxy/tools/console/commander/commander.py | 76 | CODE | |
| LOW | mitmproxy/tools/console/commander/commander.py | 177 | CODE | |
| LOW | mitmproxy/net/http/cookies.py | 67 | CODE | |
| LOW | mitmproxy/net/http/cookies.py | 139 | CODE | |
| LOW | mitmproxy/net/http/multipart.py | 11 | CODE | |
| LOW | mitmproxy/net/http/multipart.py | 48 | CODE | |
| LOW | mitmproxy/net/http/validate.py | 66 | CODE | |
| LOW | mitmproxy/net/http/headers.py | 39 | CODE | |
| LOW | mitmproxy/net/http/http1/read.py | 166 | CODE | |
| 81 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/conftest.py | 1 | CODE | |
| LOW | test/mitmproxy/coretypes/test_serializable.py | 1 | CODE | |
| LOW | test/mitmproxy/addons/test_proxyserver.py | 1 | CODE | |
| LOW | test/mitmproxy/addons/test_next_layer.py | 1 | CODE | |
| LOW | mitmproxy/dns.py | 1 | CODE | |
| LOW | mitmproxy/log.py | 1 | CODE | |
| LOW | mitmproxy/flow.py | 1 | CODE | |
| LOW | mitmproxy/types.py | 16 | CODE | |
| LOW | mitmproxy/optmanager.py | 1 | CODE | |
| LOW | mitmproxy/ctx.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/_api.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/__init__.py | 18 | CODE | |
| LOW | mitmproxy/contentviews/__init__.py | 20 | CODE | |
| LOW | mitmproxy/contentviews/__init__.py | 22 | CODE | |
| LOW | mitmproxy/contentviews/_registry.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/_compat.py | 1 | CODE | |
| LOW | mitmproxy/contentviews/_view_image/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/main.py | 1 | CODE | |
| LOW | mitmproxy/tools/web/webaddons.py | 1 | CODE | |
| LOW | mitmproxy/tools/web/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/web/app.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/options.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/signals.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/statusbar.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/palettes.py | 6 | CODE | |
| LOW | mitmproxy/tools/console/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/flowlist.py | 5 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 1 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 2 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 3 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 4 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 5 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 6 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 7 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 8 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 9 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 10 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 11 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 12 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 13 | CODE | |
| LOW | mitmproxy/tools/console/grideditor/base.py | 16 | CODE | |
| LOW | mitmproxy/net/local_ip.py | 1 | CODE | |
| LOW | mitmproxy/net/http/multipart.py | 1 | CODE | |
| LOW | mitmproxy/net/http/url.py | 1 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 1 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 2 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 3 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 4 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 5 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 6 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 7 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 8 | CODE | |
| LOW | mitmproxy/net/http/http1/__init__.py | 9 | CODE | |
| LOW | mitmproxy/proxy/mode_servers.py | 13 | CODE | |
| LOW | mitmproxy/proxy/context.py | 7 | CODE | |
| LOW | mitmproxy/proxy/mode_specs.py | 23 | CODE | |
| LOW | mitmproxy/proxy/layers/__init__.py | 1 | CODE | |
| LOW | mitmproxy/proxy/layers/__init__.py | 2 | CODE | |
| LOW | mitmproxy/proxy/layers/__init__.py | 3 | CODE | |
| LOW | mitmproxy/proxy/layers/__init__.py | 4 | CODE | |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/conftest.py | 55 | def set_level(self, level: int | str, logger: str | None = None) -> None: | CODE |
| LOW | test/mitmproxy/proxy/tutils.py | 464 | def set_layer(next_layer: layer.NextLayer) -> None: | CODE |
| LOW | test/mitmproxy/proxy/layers/quic/test__stream_layers.py | 463 | def set_layer(next_layer: layer.NextLayer) -> None: | CODE |
| LOW | mitmproxy/addonmanager.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/dns.py | 580 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/certs.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/flow.py | 161 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/flow.py | 285 | __all__ = [ | CODE |
| LOW | mitmproxy/tcp.py | 64 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/tcp.py | 72 | __all__ = [ | CODE |
| LOW | mitmproxy/connection.py | 359 | __all__ = ["Connection", "Client", "Server", "ConnectionState"] | CODE |
| LOW | mitmproxy/udp.py | 61 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/udp.py | 69 | __all__ = [ | CODE |
| LOW | mitmproxy/master.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/http.py | 360 | def set_content(self, value: bytes | None) -> None: | CODE |
| LOW | mitmproxy/http.py | 407 | def set_text(self, text: str | None) -> None: | CODE |
| LOW | mitmproxy/http.py | 767 | def _update_host_and_authority(self) -> None: | CODE |
| LOW | mitmproxy/http.py | 941 | def _set_urlencoded_form(self, form_data: Sequence[tuple[str, str]]) -> None: | CODE |
| LOW | mitmproxy/http.py | 980 | def _set_multipart_form(self, value: list[tuple[bytes, bytes]]) -> None: | CODE |
| LOW | mitmproxy/http.py | 1242 | def set_state(self, state: serializable.State) -> None: | CODE |
| LOW | mitmproxy/http.py | 1289 | __all__ = [ | CODE |
| LOW | mitmproxy/websocket.py | 84 | def set_state(self, state: WebSocketMessageState) -> None: | CODE |
| LOW | mitmproxy/contentviews/_api.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/contentviews/__init__.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/contentviews/__init__.py | 188 | __all__ = [ | CODE |
| LOW | mitmproxy/contentviews/_registry.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/contentviews/_view_image/__init__.py | 3 | __all__ = ["image"] | CODE |
| LOW | mitmproxy/tools/web/webaddons.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/web/__init__.py | 3 | __all__ = ["master"] | CODE |
| LOW | mitmproxy/tools/web/master.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/web/app.py | 63 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/web/app.py | 467 | def update_filter(self, name: str, expr: str) -> None: | CODE |
| LOW | mitmproxy/tools/console/options.py | 235 | def update_help_text(self, txt: str) -> None: | CODE |
| LOW | mitmproxy/tools/console/__init__.py | 3 | __all__ = ["master"] | CODE |
| LOW | mitmproxy/tools/console/master.py | 192 | def set_palette(self, *_) -> None: | CODE |
| LOW | mitmproxy/tools/console/consoleaddons.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/tools/console/flowlist.py | 107 | def set_flowlist_layout(self, *_) -> None: | CODE |
| LOW | mitmproxy/tools/console/commands.py | 66 | def set_focus(self, index: int) -> None: | CODE |
| LOW | mitmproxy/tools/console/grideditor/__init__.py | 15 | __all__ = [ | CODE |
| LOW | mitmproxy/tools/console/grideditor/base.py | 153 | def set_current_value(self, val) -> None: | CODE |
| LOW | mitmproxy/tools/console/grideditor/base.py | 448 | def set_data_update(self, vals, flow) -> None: | CODE |
| LOW | mitmproxy/tools/console/commander/commander.py | 71 | def set_text(self, text: str) -> None: | CODE |
| LOW | mitmproxy/net/encoding.py | 239 | __all__ = ["encode", "decode"] | CODE |
| LOW | mitmproxy/net/http/validate.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/net/http/http1/__init__.py | 11 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/server.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 58 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/proxy/layers/__init__.py | 14 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http2.py | 707 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http3.py | 306 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http_h2.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/proxy/layers/http/_http_h3.py | 317 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_events.py | 154 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/http/_http1.py | 499 | __all__ = [ | CODE |
| LOW | mitmproxy/proxy/layers/quic/__init__.py | 21 | __all__ = [ | CODE |
| LOW | mitmproxy/coretypes/multidict.py | 87 | def set_all(self, key: KT, values: list[VT]) -> None: | CODE |
| LOW | mitmproxy/coretypes/serializable.py | 98 | def set_state(self, state: State) -> None: | CODE |
| LOW | mitmproxy/platform/__init__.py | 40 | __all__ = ["original_addr", "init_transparent_mode"] | CODE |
| LOW | mitmproxy/platform/windows.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | mitmproxy/addons/next_layer.py | 60 | logger = logging.getLogger(__name__) | CODE |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/tools/web/test_app.py | 574 | except Exception: | CODE |
| MEDIUM | test/mitmproxy/tools/web/test_app.py | 556 | def test_process_list(self): | CODE |
| LOW | test/mitmproxy/tools/console/test_defaultkeys.py | 19 | except Exception as e: | CODE |
| LOW | test/mitmproxy/proxy/tutils.py | 205 | except Exception: | CODE |
| LOW | test/mitmproxy/proxy/tutils.py | 224 | except Exception: | CODE |
| LOW | test/mitmproxy/addons/test_clientplayback.py | 39 | except Exception as e: | CODE |
| LOW | test/helper_tools/hunt_memory_leaks.py | 58 | except Exception: | CODE |
| LOW | mitmproxy/addonmanager.py | 50 | except Exception: | CODE |
| MEDIUM | mitmproxy/addonmanager.py | 45 | def safecall(): | CODE |
| LOW | mitmproxy/command.py | 181 | except Exception: | CODE |
| LOW | mitmproxy/version.py | 39 | except Exception: | CODE |
| LOW | mitmproxy/dns.py | 168 | except Exception: | CODE |
| LOW | mitmproxy/dns.py | 210 | except Exception: | CODE |
| MEDIUM | mitmproxy/dns.py | 153 | def _data_json(self) -> str | HTTPSRecordJSON: | CODE |
| LOW | mitmproxy/flowfilter.py | 190 | except Exception: | CODE |
| LOW | mitmproxy/contentviews/__init__.py | 89 | except Exception as e: | CODE |
| LOW | mitmproxy/contentviews/_registry.py | 58 | except Exception: | CODE |
| LOW | mitmproxy/contentviews/_view_http3.py | 36 | except Exception as e: | CODE |
| LOW | mitmproxy/contentviews/_view_http3.py | 42 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 322 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 495 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 787 | except Exception as e: | CODE |
| LOW | mitmproxy/tools/web/app.py | 811 | except Exception as err: | CODE |
| LOW | mitmproxy/tools/web/app.py | 871 | except Exception: | CODE |
| LOW | mitmproxy/tools/console/master.py | 149 | except Exception: | CODE |
| LOW | mitmproxy/tools/console/master.py | 184 | except Exception: | CODE |
| LOW | mitmproxy/net/encoding.py | 70 | except Exception as e: | CODE |
| LOW | mitmproxy/net/encoding.py | 128 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/server.py | 436 | except Exception: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 132 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 147 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 203 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 296 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 319 | except Exception: # pragma: no cover | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 368 | except Exception as e: | CODE |
| LOW | mitmproxy/proxy/mode_servers.py | 459 | except Exception: | CODE |
| MEDIUM | mitmproxy/proxy/mode_servers.py | 129 | def start(self) -> None: | CODE |
| LOW | mitmproxy/addons/proxyauth.py | 103 | except Exception: | CODE |
| LOW | mitmproxy/addons/clientplayback.py | 191 | except Exception: | CODE |
| LOW | mitmproxy/addons/asgiapp.py | 140 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/script.py | 53 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/script.py | 127 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/command_history.py | 47 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/command_history.py | 60 | except Exception as e: | CODE |
| LOW | mitmproxy/addons/command_history.py | 75 | except Exception as e: | CODE |
| LOW | mitmproxy/io/io.py | 59 | except Exception: | CODE |
| LOW | mitmproxy/contrib/wbxml/ASCommandResponse.py | 42 | except Exception as e: | CODE |
| LOW | release/release.py | 32 | except Exception as e: | CODE |
| LOW | release/selftest.py | 49 | except Exception as e: | CODE |
| MEDIUM | release/selftest.py | 34 | def make_request(): | CODE |
| LOW | examples/contrib/webscanner_helper/mapping.py | 152 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 27 | b"""{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05","messageId":"connected","type":"event"} | CODE |
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 28 | """[PUBLISH] '{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05",""" | STRING |
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 35 | b"""\x00l{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05","messageId":"disconnected","type": | CODE |
| HIGH⚡ | test/mitmproxy/contentviews/test__view_mqtt.py | 42 | '{"body":{"parameters":null},"header":{"from":"56:6F:5E:6A:01:05","messageId":"disconnected","type":"eve | CODE |
| HIGH | test/mitmproxy/contentviews/test__view_json.py | 15 | assert json_view.prettify(b'{"foo": true, "nullvalue": null}', meta) | CODE |
| HIGH | mitmproxy/tools/console/master.py | 259 | self.window.push(name) | CODE |
| HIGH | examples/contrib/test_jsondump.py | 10 | example_dir = tutils.test_data.push("../examples") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | test/mitmproxy/addons/test_tlsconfig.py | 304 | san = tssl_client.quic.tls._peer_certificate.extensions.get_extension_for_class( | CODE |
| CRITICAL | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 38 | `;this.styleTag.textContent=o;let f=t.head||t;this.styleTag.parentNode!=f&&f.insertBefore(this.styleTag,f.firstChild)}}s | CODE |
| CRITICAL | mitmproxy/tools/console/window.py | 141 | self.master.view.focus.sig_change.connect(self.view_changed) | CODE |
| CRITICAL | mitmproxy/tools/console/window.py | 142 | self.master.view.focus.sig_change.connect(self.focus_changed) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/addons/test_tlsconfig.py | 174 | # so we just return our local IP as subject. | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 109 | # These all just call update | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 159 | # These all just call update | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 174 | # These all just call update | COMMENT |
| LOW | test/mitmproxy/addons/test_view.py | 189 | # These all just call update | COMMENT |
| MEDIUM | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 9 | `).replace(El,"")}function xm(l,a){return a=vm(a),vm(l)===a}function df(){}function wt(l,a,u,O,m,b){switch(u){case"child | CODE |
| MEDIUM | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 55 | }`,{label:"class",detail:"definition",type:"keyword"}),Yi('import {${names}} from "${module}"\n${}',{label:"import",deta | CODE |
| LOW | mitmproxy/tools/console/flowview.py | 387 | # The alternative would be to just use the header's UTF-8 representation and maybe | COMMENT |
| MEDIUM | mitmproxy/net/http/headers.py | 74 | # > 9. [snip] the comprehensive UTF-8 encoding is suggested. | COMMENT |
| MEDIUM | mitmproxy/proxy/layers/http/_events.py | 30 | # explicit constructors below to facilitate type checking in _http1/_http2 | COMMENT |
| LOW | mitmproxy/coretypes/multidict.py | 193 | # We just return the first element if | COMMENT |
| MEDIUM | web/src/js/ducks/flows/index.ts | 167 | // but performance is not important here and adding the flow may generally be a bit more robust. | COMMENT |
| MEDIUM | docs/src/assets/asciinema-player.js | 73 | !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e(require("react"));else if("functio | CODE |
| LOW | examples/addons/http-modify-form.py | 8 | # If there's already a form, one can just add items to the dict: | COMMENT |
| LOW | examples/addons/http-modify-form.py | 11 | # One can also just pass new form data. | COMMENT |
| MEDIUM | …amples/contrib/webscanner_helper/proxyauth_selenium.py | 46 | """This Addon can be used in combination with web application scanners in order to help them to authenticate | STRING |
| MEDIUM | examples/contrib/webscanner_helper/urlinjection.py | 13 | """Abstract class for an generator of the injection content in order to inject the URL index.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mitmproxy/contrib/wbxml/ASCommandResponse.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/ASWBXMLCodePage.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/ASWBXMLByteQueue.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/InvalidDataException.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/GlobalTokens.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| HIGH | mitmproxy/contrib/wbxml/ASWBXML.py | 0 | @author: david shaw, shawd@vmware.com inspired by eas inspector for fiddler https://easinspectorforfiddler.codeplex.com | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mitmproxy/net/http/cookies.py | 291 | Args: c: A Set-Cookie string delta: Time delta in seconds Returns: A refreshed Set-Cook | STRING |
| HIGH | mitmproxy/net/http/url.py | 22 | URL-parsing function that checks that - port is an integer 0-65535 - host is a valid IDNA-encoded h | STRING |
| HIGH | mitmproxy/net/http/http1/read.py | 250 | Parse an HTTP request head (request line + headers) from an iterable of lines Args: lines: The input l | STRING |
| HIGH | mitmproxy/net/http/http1/read.py | 284 | Parse an HTTP response head (response line + headers) from an iterable of lines Args: lines: The input | STRING |
| HIGH | mitmproxy/proxy/layers/quic/_client_hello_parser.py | 35 | Check if the supplied bytes contain a full ClientHello message, and if so, parse it. Args: - msgs: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/test_certs.py | 21 | # d = certs.DNTree() | COMMENT |
| LOW | mitmproxy/certs.py | 361 | COMMENT | |
| LOW | mitmproxy/tools/console/flowview.py | 381 | # X-Authors: Made with ❤ in Hamburg | COMMENT |
| LOW | mitmproxy/net/http/http1/read.py | 81 | # Content-Length or Transfer-Encoding header fields received in | COMMENT |
| LOW | mitmproxy/net/http/http1/read.py | 121 | else: | COMMENT |
| LOW | mitmproxy/net/http/http1/read.py | 141 | # 5. If a valid Content-Length header field is present without | COMMENT |
| LOW | mitmproxy/platform/linux.py | 1 | import socket | COMMENT |
| LOW | mitmproxy/addons/tlsconfig.py | 121 | COMMENT | |
| LOW | examples/addons/wsgi-flask-app.py | 21 | addons = [ | COMMENT |
| LOW | examples/contrib/change_upstream_proxy.py | 1 | from mitmproxy import http | COMMENT |
| LOW | examples/contrib/httpdump.py | 1 | #!/usr/bin/env python | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/proxy/test_mode_servers.py | 107 | # Set timeout to 0 for immediate timeout (fastest test) | COMMENT |
| LOW | mitmproxy/proxy/layers/tls.py | 84 | # Check if ClientHello is complete | COMMENT |
| LOW | mitmproxy/proxy/layers/tls.py | 151 | # Check if ClientHello is complete | COMMENT |
| LOW | mitmproxy/addons/tlsconfig.py | 638 | # Check if a request has a magic CRL token at the end | COMMENT |
| LOW | release/docker/docker-entrypoint.sh | 23 | # Set HOME to /home/mitmproxy for config dir fix (mitmproxy/mitmproxy#7597) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mitmproxy/proxy/layers/tls.py | 630 | For example, we need to check if the client does ALPN or not. | STRING |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 580 | # Step 1: Determine the expected body size. This can either come from a known content-length header, | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 602 | # Step 2: Do we need to abort this? | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 631 | # Step 3: Do we need to stream this? | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 742 | # so we need to check if the response is done yet or not. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/scripts/api-events.py | 78 | print("# This file is autogenerated, do not edit manually.") | CODE |
| MEDIUM | examples/contrib/test_jsondump.py | 24 | # Create a dummy flow for testing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mitmproxy/proxy/layers/http/__init__.py | 580 | # Step 1: Determine the expected body size. This can either come from a known content-length header, | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 602 | # Step 2: Do we need to abort this? | COMMENT |
| LOW | mitmproxy/proxy/layers/http/__init__.py | 631 | # Step 3: Do we need to stream this? | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …st/mitmproxy/contentviews/test_xml_html_data/test.html | 8 | <p>Lorem ipsum dolor<p>sit amet, consectetur <p>adipiscing elit, sed<p>do eiusmod tempor<p> incididunt ut<p> labore et d | CODE |
| LOW | …xy/contentviews/test_xml_html_data/test-formatted.html | 9 | Lorem ipsum dolor | CODE |
| LOW | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 13 | `),tn}X0(()=>{Ae.current=void 0,me.current=void 0,ie.current=Xt});const Wi=Te.useMemo(()=>Te.createElement(A,{...Xt,ref: | CODE |
| LOW | mitmproxy/tools/web/static/vendor-BS4xPthR.js | 43 | `:i=="r"?"\r":i=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSe | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mitmproxy/net/data/verificationcerts/generate.py | 19 | CODE | |
| LOW | mitmproxy/contentviews/_view_javascript.py | 41 | CODE | |
| LOW | mitmproxy/io/compat.py | 468 | CODE | |
| LOW | mitmproxy/contrib/click/__init__.py | 43 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mitmproxy/proxy/layers/dns.py | 71 | def handle_request( | CODE |