Lumra Lumra

Lumra · Interference analysis

Know why,
not just that.

When a site won't load, most tools say it's "down." Lumra tells you how and where it's being interfered with — DNS tampering, SNI filtering, injected resets, self-identifying block pages — from packets it measures itself, never a third-party block list.

What it tells you

Most tools say "down."
Lumra says why, and where.

The same symptom has very different causes. Lumra separates deliberate interference from an ordinary fault — and pins where in the path it happens — so you act on the real problem, not a guess.

Site won't loadReal outage vs. state-level block vs. local network fault
Wrong / missing DNS answerDNS poisoning or tampering vs. NXDOMAIN vs. misconfiguration
TLS handshake failsSNI-based filtering vs. certificate error vs. MITM interception
Connection resetInjected RST from an in-path filter vs. a genuine server reset
Slow / stallingDeliberate throttling vs. ordinary congestion

How it works

A verdict, built from
packets it measures itself.

Every diagnosis runs from your own vantage point and compares against control baselines — so the answer reflects your network, not a stale block list someone else published.

01
Probe
Runs DNS, TLS/SNI, TCP and control probes against the target and known-good baselines.
02
Attribute
RST timing and TTL hop distance locate where a reset originates — in-network, upstream, or at the destination.
03
Identify
Self-identifying block pages are named directly — warning.or.kr → KCSC — not left as an anonymous failure.
04
Verdict
Returns {type, cause, confidence, evidence[]} — a labeled result with the signals behind it.

What it detects

Six signals. One clear cause.

Each probe isolates one class of interference. Together they separate a deliberate block from a broken link — and say who and where.

DNS
DNS tampering
Poisoning and forged answers vs. NXDOMAIN vs. misconfiguration — cross-resolver comparison against DoH/DoT ground truth, with TTL and answer-set anomalies.
SNI
SNI filtering
Resets triggered by the target hostname in the TLS ClientHello — the classic in-path SNI filter — isolated from an ordinary handshake failure.
RST
RST injection
An injected TCP reset from a device on the path, told apart from a genuine reset sent by the destination server itself.
MITM
TLS interception
Certificate substitution and man-in-the-middle on the TLS session — a swapped or unexpected chain, not just an expired cert.
IP
IP blocking & throttling
Destination unreachability and deliberate rate-limiting, separated from ordinary congestion or a real outage.
PAGE
Block-page identity
Self-identifying block pages resolved to the authority behind them — warning.or.kr → KCSC — the strongest attribution signal there is.

Every run resolves to one labeled verdict

DNS_TAMPERING SNI_FILTERING RST_INJECTION TLS_MITM IP_BLOCKING THROTTLING BLOCK_PAGE GENUINE_OUTAGE LOCAL_ISSUE INCONCLUSIVE

The output

Evidence, not a
one-word status.

Every verdict ships with the signals that produced it and a confidence score. Human-readable by default, --json for pipelines — or a self-contained HTML page you can share as proof.

lumra diagnose news.example.kr
target      news.example.kr  (203.0.113.24)
verdict     SNI_FILTERING          confidence 0.94
cause       in-path reset keyed on the TLS SNI

evidence
  ▸ control baseline reaches target on port 443
  ▸ handshake with target SNI reset after ClientHello
  ▸ handshake with benign SNI to same IP succeeds
  ▸ RST TTL places injector ~6 hops out (dest ~14)
  ▸ no block page served — silent drop

attribution injected on-path, upstream of destination
not         a local network fault · not an outage
Lumra · Interference report
SNI_FILTERING
confidence high where in_network · KCSC
✓DNSconsistent with DoH ground truth
✗TLStarget SNI reset; benign SNI accepted on same IP
ⓘHOPRST injected ~6 hops away; destination ~14
✗PAGEdiverted to warning.or.kr (KCSC block server)
✓CTRLbaseline reachable — not a local issue
self-produced measurement · no packet-content logging lumra.crode.net

Where it runs

On your machine. From your vantage.

Diagnosis has to run where the interference is — your own network. One binary, no account, no data leaves the host.

Command line
A single static binary. Run one diagnosis, or script it against many targets. Human-readable verdict, or --json for CI and dashboards.
$ lumra diagnose example.com $ lumra diagnose example.com --json
Browser extension
Hit a block in the browser and diagnose the current tab in place. The extension talks to the local Lumra binary over a native-messaging host — measurement stays on-device.
$ lumra install-host # wire up the bridge

Install · v0.1.0 · open source

Up and running in one line.

A single static binary, no account. Deep RST/TTL attribution needs a raw socket (run elevated); every other signal works unprivileged.

terminal
$ brew install croc100/tap/lumra
$ lumra diagnose example.com
# Scoop
> scoop bucket add croc100 https://github.com/croc100/scoop-bucket
> scoop install lumra

# or without a package manager (PowerShell)
> irm https://raw.githubusercontent.com/croc100/lumra/main/install.ps1 | iex
$ go install github.com/croc100/lumra/cmd/lumra@latest
$ lumra diagnose example.com
$ git clone https://github.com/croc100/lumra
$ cd lumra && go build ./cmd/lumra
$ ./lumra diagnose example.com

When it matters

The moment "is it me,
or is it blocked?"

◆
A site goes dark
Reachable yesterday, gone today. Lumra tells you whether it's a real outage, a route problem on your side, or an in-path block — before you waste an hour guessing.
◆
DNS returns nonsense
The wrong IP, or none at all. Cross-resolver comparison against DoH ground truth separates poisoning from a genuine NXDOMAIN or a misconfigured zone.
◆
A service crawls
One service is unusably slow while everything else is fine. Lumra distinguishes deliberate throttling from ordinary congestion, with the timing evidence to back it.
0
Third-party block-lists consulted
6
Interference signal types
1st
Party — your own vantage
0
Packet contents logged

No packet-content logging. Analysis is metadata- and behavior-based, in line with CRODE's no-log stance. Lumra diagnoses interference — it does not route around it. Circumvention is Warren's job.

Part of CRODE

Visibility, without surveillance.

01
Metadata only
Analysis is behavior- and metadata-based. Packet contents are never logged, in line with CRODE's no-log stance across every product.
02
Measured, not listed
Verdicts come from packets Lumra sends and observes itself — never a third-party block list you can't audit or reproduce.
03
Diagnose, don't route around
Lumra explains interference; it doesn't circumvent it. Getting through is Warren's job — the two are built to work together.

Know why,
not just that.

Bring us a target you can't reach, and we'll show you exactly how — and where — it's being interfered with.

Get started  →