You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`WithStrictMode()`| Only follow domains that share the same TLD |
40
+
|`WithTimeout(d)`| Set connection timeout for all resolvers |
41
+
|`WithCTSince(t)`| Only collect CT logs issued after this date |
42
+
|`WithCTExpired()`| Include expired CT log entries |
42
43
|`WithMaxDepth(n)`| Limit recursive discovery to n hops from seed (-1 = unlimited) |
43
44
44
-
45
45
### Working with resolutions
46
46
47
-
Each resolver produces a typed resolution. Use a type switch to handle them:
47
+
Each resolver produces typed resolutions. Every resolution carries exactly one result (one type, one query, one record). Use a type switch to handle them:
|`ct_resolver.go`|`CTResolver`| Certificate Transparency logs | crt.sh JSON API |
144
+
|`ptr_resolver.go`|`PTRResolver`| Reverse DNS hostnames | DNS PTR records |
145
+
|`bgp_resolver.go`|`BGPResolver`| BGP AS records | Team Cymru DNS |
146
+
|`geo_resolver.go`|`GeoResolver`| GeoIP country codes | IP2Location LITE DB |
147
+
|`rdap_resolver.go`|`RDAPResolver`| IP registration metadata | RIR RDAP via IANA bootstrap |
148
+
|`dnsbl_resolver.go`|`DNSBLResolver`| DNS blocklist checks (listed zones + meaning) | Barracuda, UCEProtect, DroneBL |
149
+
|`tor_resolver.go`|`TorResolver`| Tor node detection (exit/guard/relay) | Tor Onionoo HTTPS API |
150
+
151
+
### Adding a new resolver
152
+
153
+
1. Create `{name}.go` — define `{Name}Resolution` embedding `*ResolutionBase` with a single `Record {Name}Record` field, and `{Name}Record` with a `String()` method.
154
+
2. Create `{name}_resolver.go` — implement `ResolveIP(ip string) []Resolution` or `ResolveDomain(domain string) []Resolution`, plus `Type() ResolutionType`.
155
+
3. Add a `Type{Name}` constant to `api.go`.
156
+
4. Register it in `NewUdig()` in `udig.go`.
157
+
5. Handle the new type in the `switch` in `cmd/udig/main.go` and `cmd/udig/graph/graph.go`.
Copy file name to clipboardExpand all lines: README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@
7
7
8
8
**Fast, non-intrusive domain reconnaissance tool written in Go.**
9
9
10
-
Udig provides a quick overview of a target domain's infrastructure by combining multiple active scanning techniques — DNS enumeration (including CAA, DNSSEC, and DMARC), TLS certificate scraping, WHOIS lookups, HTTP analysis (headers, security.txt and robots.txt), Certificate Transparency log search, BGP ASN mapping, GeoIP resolution, and RDAP (RIR registration data for discovered IPs). Discovered domains are automatically followed and resolved recursively.
10
+
Udig provides a quick overview of a target domain's infrastructure by combining multiple active scanning techniques — DNS enumeration (including CAA, DNSSEC, and DMARC), TLS certificate scraping, WHOIS lookups, HTTP analysis (headers, security.txt and robots.txt), Certificate Transparency log search, BGP ASN mapping, GeoIP resolution, RDAP (RIR registration data for discovered IPs), DNSBL blocklist checks and Tor exit-node detection Discovered domains are automatically followed and resolved recursively.
11
11
12
12
This is not a full-blown DNS enumerator. There is no brute-forcing, no port scanning, no search engine scraping. udig is designed to be unobtrusive and fast, suitable for long-term experiments with many targets.
13
13
@@ -24,6 +24,8 @@ This is not a full-blown DNS enumerator. There is no brute-forcing, no port scan
24
24
-**BGP** — maps discovered IPs to autonomous systems via Team Cymru
25
25
-**GeoIP** — resolves country codes for discovered IPs via IP2Location
26
26
-**RDAP** — looks up IP registration metadata (network name, handle, range, abuse contact) via RIR RDAP servers using the IANA bootstrap (no API key)
27
+
-**DNSBL** — checks discovered IPs against DNS blocklists (Barracuda, UCEProtect, DroneBL) and decodes return codes
28
+
-**Tor** — detects Tor nodes (exit, guard, relay) via the Onionoo API; reports nickname, fingerprint, and flags
27
29
-**Recursive crawling** — domains found in any resolution are automatically followed
28
30
-**Output** — colorized human-readable CLI output, JSON or graph as DOT (Graphviz), JSON, or terminal tree (`--graph=dot|json|term`)
0 commit comments