A powerful Go-based OSINT tool for comprehensive domain analysis and reporting.
- IP Geolocation using MaxMind's GeoIP2 database
- Web content extraction and analysis
- WHOIS information lookup
- DNS record analysis (A, MX records)
- Reverse DNS lookups
- Historical data via Wayback Machine
- Certificate transparency logs via crt.sh
- Automated PDF report generation
gomain_analysis/ ├── cmd/ # Command line interface ├── internal/ │ ├── config/ # Configuration management │ ├── crt.sh/ # Certificate transparency checks │ ├── dns/ # DNS operations │ ├── geolocation/ # IP geolocation │ ├── parser/ # HTML parsing │ ├── report/ # PDF report generation │ ├── wayback/ # Wayback Machine integration │ └── whois/ # WHOIS lookups
github.com/PuerkitoBio/goquery - HTML parsing github.com/domainr/whois - WHOIS lookups github.com/e-zk/go-crtsh - Certificate transparency github.com/go-pdf/fpdf - PDF generation github.com/oschwald/geoip2-golang - IP geolocation github.com/seekr-osint/wayback-machine-golang - Wayback Machine integration github.com/urfave/cli/v2 - CLI interface
Download GeoLite2-City.mmdb database from MaxMind Place the database file in your project's asset directory
this is a rewrite and improvement upon the github.com/qepting/domain_analysis tool.
The following will be used for the Python to GO transformation:
- Python Tool:
pygeoip
- Go Alternative: Use MaxMind's GeoIP2 Go library.
- Note: This library will allow us to use the
.mmdb
version of the GeoLite database. You’ll need to download the latest version (GeoLite2-City.mmdb
) and use thegeoip2-golang
library for IP lookups.
- Note: This library will allow us to use the
- Python Tool:
requests
,urllib
- Go Alternative: Use Go's built-in
net/http
package for making HTTP requests.- Reproduction:
http.Get(url)
can be used for fetching content. This is very straightforward to replicate in Go usingnet/http
.
- Reproduction:
- Python Tool:
BeautifulSoup
frombs4
- Go Alternative: Use PuerkitoBio's
goquery
, which is similar in functionality to BeautifulSoup.- Reproduction:
goquery
provides functions to parse HTML and traverse/manipulate the document, making it a close match toBeautifulSoup
.
- Reproduction:
- Python Tool:
whois
- Go Alternative: Use domainr/whois or likexian/whois-go.
- Reproduction: These libraries allow performing WHOIS lookups on domains, similar to the Python
whois
package.
- Reproduction: These libraries allow performing WHOIS lookups on domains, similar to the Python
- Python Tool:
dnspython
library (dns.resolver
) - Go Alternative: Use Go’s built-in
net
package or a DNS library like miekg/dns.- Reproduction: The
net
package hasLookupHost
andLookupMX
functions to get A and MX records, respectively. For more complex DNS queries, themiekg/dns
library can be used.
- Reproduction: The
- Python Tool:
dnspython
library (dns.reversename
) - Go Alternative: Use Go's built-in
net
package, specificallynet.LookupAddr
.- Reproduction:
net.LookupAddr(ip)
can be used to perform reverse DNS lookups, similar to the Python implementation.
- Reproduction:
- Python Tool:
wayback
Python package for fetching Wayback Machine snapshots. - Go Alternative: No direct equivalent, but you can use simple HTTP GET requests to the Wayback Machine API.
- Reproduction: Write a function in Go to perform requests to the Wayback Machine API (
http://archive.org/wayback/available?url={URL}
) and parse the response. JSON parsing is straightforward in Go using theencoding/json
package.
- Reproduction: Write a function in Go to perform requests to the Wayback Machine API (
- Python Tool:
subprocess.run
to executeoxdork
for Google dorking. - Go Alternative: Execute commands using Go's
os/exec
package.- Reproduction: You can still execute external tools using
os/exec
. Alternatively, consider using a built-in library or writing Go code to simulateoxdork
functionality (e.g., using thenet/http
package to craft Google queries).
- Reproduction: You can still execute external tools using
- Python Tool:
reportlab
for creating PDF reports. - Go Alternative: Use jung-kurt/gofpdf (archived, but still useful) or go-pdf/fpdf for PDF generation.
- Reproduction: The
gofpdf
package provides methods to create and customize PDF documents similarly to ReportLab. You can use it to generate headers, paragraphs, and tables.
- Reproduction: The
Here's the updated modular overview including Go alternatives:
-
config/geolite.go
:- Python:
pygeoip
- Go: Use
geoip2-golang
with MaxMind.mmdb
files.
- Python:
-
fetcher/web_fetcher.go
:- Python:
requests
,urllib
- Go: Use
net/http
.
- Python:
-
parser/html_parser.go
:- Python:
BeautifulSoup
- Go: Use
goquery
.
- Python:
-
whois/whois_lookup.go
:- Python:
whois
- Go: Use
likexian/whois-go
.
- Python:
-
dns/dns_resolver.go
&reverse_dns.go
:- Python:
dnspython
- Go: Use
net
package (LookupHost
,LookupMX
,LookupAddr
) ormiekg/dns
for advanced features.
- Python:
-
geolocation/geo_lookup.go
:- Python:
pygeoip
- Go: Use
geoip2-golang
.
- Python:
-
wayback/wayback_fetcher.go
:- Python:
wayback
- Go: Implement using
net/http
to interact with the Wayback Machine API.
- Python:
-
dork/dork.go
:- Python: Execute
oxdork
usingsubprocess
. - Go: Use
os/exec
to executeGoogle Dorking
or write equivalent dorking functions in Go.
- Python: Execute
-
report/pdf_generator.go
:- Python:
reportlab
- Go: Use
go-pdf/fpdf
.
- Python:
The tool generates a comprehensive PDF report including:
- WHOIS Information
- Geolocation Data
- Extracted Links
- DNS Records
- MX Records
- Reverse DNS Information
- Historical Wayback Machine Snapshots
- Project Structure