{% extends "base.html" %} {% from "scans/_result_render.html" import ri %} {% block title %}{{ scan.target }} — Summary{% endblock %} {# Compact severity chips (letter + count) for tiles and jump-nav chips. #} {% macro sev_pips(sev) %} {%- for lvl in ['critical','high','medium','low'] -%} {%- if sev[lvl] -%}{{ lvl[0]|upper }}{{ sev[lvl] }}{%- endif -%} {%- endfor -%} {% endmacro %} {# Full labelled severity breakdown for the Findings section header. #} {% macro sev_bar(sev) %} {% endmacro %} {% block content %}
{% if attribution %} {# ── OPSEC Attribution Surface — the flagship "what did this scan leak?" panel ── #}⚠ {{ attribution.local_dns_tools | join(", ") }} looked up names through your local DNS resolver, even though their traffic was proxied.
{% endif %} {% if attribution.tor %}🧅 Confirmed routed through Tor before the scan started.
{% endif %} {% if attribution.skipped_modules %} {% for module, reason in attribution.skipped_modules | dictsort %}⊘ {{ module }} was skipped. {{ reason }}
{% endfor %} {% endif %} {% if attribution.modules_by_opsec and attribution.modules_by_opsec.attributable %}⚠ {{ attribution.modules_by_opsec.attributable | join(", ") }} connected directly from your IP. The counts above only cover HTTP requests, so they don't include all of this traffic.
{% endif %} {% if attribution.tool_runs %}Request counts include one entry per run of {{ attribution.tool_runs | dictsort | map("first") | join(", ") }}. Their own requests can't be seen from here, so the real total is higher.
{% endif %} {% set mbo = attribution.modules_by_opsec or {} %} stealth-guaranteed · {{ (mbo.stealth_guaranteed or [])|length }} proxied · {{ (mbo.proxied or [])|length }} attributable · {{ (mbo.attributable or [])|length }} {% for prof, n in (attribution.ja3_profiles or {}).items() %} JA3: {{ prof }} ×{{ n }} {% endfor %} {% for name, n in (attribution.block_names or {}).items() %} blocked: {{ name }} ×{{ n }} {% endfor %}{% if is_live %}Scan in progress — results incoming...{% else %}No results yet.{% endif %}