{% from "partials/_macros.html" import card_header, pagination_bar %} {% set verdict_cls = { 'malicious': 'bg-red-900/40 text-red-300 border border-red-900/60', 'suspicious': 'bg-amber-900/40 text-amber-300 border border-amber-900/60', 'unknown': 'bg-slate-700/40 text-slate-300 border border-slate-600', 'benign': 'bg-emerald-900/30 text-emerald-300 border border-emerald-900/50', } %} {# bind-scope badge: how reachable the listener is — the key threat signal #} {% set scope_cls = { 'all': 'bg-red-900/30 text-red-300 border border-red-900/50', 'specific': 'bg-amber-900/30 text-amber-300 border border-amber-900/50', 'loopback': 'bg-slate-800 text-slate-400 border border-slate-700', 'unknown': 'bg-slate-800 text-slate-500 border border-slate-700', } %} {% set scope_label = { 'all': 'all interfaces', 'specific': 'routable', 'loopback': 'loopback', 'unknown': '—', } %}
| verdict | port | process | user | path / command | proto | bind | conns | resources |
|---|---|---|---|---|---|---|---|---|
| {% if p.verdict %} {{ p.verdict }}{% if p.confidence is not none %} {{ "%.0f"|format(p.confidence * 100) }}% {% endif %} {% else %} — {% endif %} | {# port #}:{{ p.port if p.port is not none else "—" }} | {# process + pid (+ ppid) #}
{{ p.process }}
{% if p.pid is not none %}
pid {{ p.pid }}{% if p.proc and p.proc.ppid is not none %} · ppid {{ p.proc.ppid }}{% endif %}
{% endif %}
{% if p.proc and p.proc.status %}
{{ p.proc.status }}
{% endif %}
|
{# user #}
{%- if p.proc and p.proc.username -%} {{ p.proc.username }}{% if p.proc.uid is not none %} ({{ p.proc.uid }}){% endif %} {%- else -%}—{%- endif -%} | {# exe path + cmdline #}
{% if p.proc and (p.proc.exe or p.proc.cmdline) %}
{% if p.proc.exe %}
{% else %}
—
{% endif %}
{{ p.proc.exe }}
{% endif %}
{% if p.proc.cmdline and p.proc.cmdline != p.proc.exe %}
{{ p.proc.cmdline }}
{% endif %}
|
{# proto + family #}
{% for pr in p.proto %}
{{ pr }}
{% endfor %}
{% for fam in p.family %}
{{ fam }}
{% endfor %}
|
{# bind scope + addresses #}
{{ scope_label.get(p.scope, p.scope) }}
{% if p.addrs %}
{{ p.addrs | join(", ") }}
{% endif %}
|
{# established connections #}
{{ p.conns }} | {# cpu / mem / fds #}
{% if p.proc %}
{%- if p.proc.cpu_percent is not none %}{{ "%.1f"|format(p.proc.cpu_percent) }}% cpu{% endif -%}
{%- set mem = p.proc.memory_rss | human_bytes -%}
{%- if mem %}{{ mem }}{% endif -%}
{%- if p.proc.num_fds is not none %} · {{ p.proc.num_fds }} fds{% endif -%}
{% else %}
—
{% endif %}
|