isthislegit? [v1.01]

Domain Impersonation and OSINT Triage Tool. Compares a known-legitimate domain (target) against a suspect domain using DNS resolution, X.509 TLS certificates, and RDAP registration data, then produces a deterministic risk score and verdict. Single static binary; standard library plus golang.org/x/sync only.

Build and Run

git clone https://github.com/example/isthislegit.git
cd isthislegit
CGO_ENABLED=0 go build -ldflags="-s -w" -o isthislegit ./cmd/isthislegit
./isthislegit jdsoft.com jdsoftcareers.com
go test ./...

Flags

FlagDescription
-v, --verboseAppend raw cert policy OIDs, TLS details, and RDAP JSON.
-j, --jsonOutput the result summary as JSON for scripting.
--scalePrint the scoring scale table and exit.
-h, --helpDisplay usage and exit.

Fetch Pipeline

Both domains are fetched concurrently with golang.org/x/sync/errgroup under a 15 second global deadline; each DNS, TLS, and RDAP call carries a 5 second deadline and is retried up to 3 times. Total run time equals the slower of the two domains.

parse args --> DNS pre-flight (target + suspect, parallel)
           --> fetch target   = RDAP + TLS in parallel
           --> fetch suspect  = RDAP + TLS in parallel
           --> fail-closed verify --> score --> render

Exit codes: 0 on success (including --scale and --help), 1 on bad flags, invalid domains, DNS failure, or failed data-quality verification.

Scoring Scale

SignalPoints
Suspect domain age < 30 days (CRITICAL)+80
Suspect domain age 30-89 days (WARNING)+80
Cert downgrade: target EV/OV vs suspect DV+40
Registrar mismatch+30
Same-class issuer difference (display only)+0

ScoreVerdict
0-14LIKELY LEGITIMATE
15-39LIKELY UNRELATED / MISCONFIGURED
40-50SUSPICIOUS - MANUAL REVIEW RECOMMENDED
51+LIKELY PHISHING / IMPERSONATION ATTEMPT

Packages