diff --git a/go.mod b/go.mod
@@ -4,6 +4,7 @@ go 1.23
require (
github.com/bogdzn/gork v0.0.5
+ github.com/projectdiscovery/dnsx v1.2.1
github.com/projectdiscovery/subfinder/v2 v2.6.7
github.com/spf13/cobra v1.8.1
github.com/spiral-sec/assetfinder v0.2.0
@@ -78,7 +79,6 @@ require (
github.com/projectdiscovery/blackrock v0.0.1 // indirect
github.com/projectdiscovery/cdncheck v1.1.0 // indirect
github.com/projectdiscovery/chaos-client v0.5.2 // indirect
- github.com/projectdiscovery/dnsx v1.2.1 // indirect
github.com/projectdiscovery/fastdialer v0.2.9 // indirect
github.com/projectdiscovery/goflags v0.1.64 // indirect
github.com/projectdiscovery/gologger v1.1.27 // indirect
diff --git a/osint/dnsx.go b/osint/dnsx.go
@@ -0,0 +1,68 @@
+package osint
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/projectdiscovery/dnsx/libs/dnsx"
+)
+
+type Dnsx struct {
+ outfile string
+ proxy string
+}
+
+func (d *Dnsx) Info(url string) {
+ fmt.Println("[+] Running dnsx on %s", url)
+}
+
+func (d *Dnsx) Configure(c interface{}) {
+ d.outfile = c.(map[string]interface{})["outfile"].(string)
+ d.proxy = c.(map[string]interface{})["proxy"].(string)
+}
+
+func (d *Dnsx) Run(domain string) {
+ dnsClient, err := dnsx.New(dnsx.DefaultOptions)
+ if err != nil {
+ fmt.Printf("err: %v\n", err)
+ return
+ }
+
+ result, err := dnsClient.Lookup(domain)
+ if err != nil {
+ fmt.Printf("err: %v\n", err)
+ return
+ }
+ for idx, msg := range result {
+ fmt.Printf("%d: %s\n", idx+1, msg)
+ }
+
+ rawResp, err := dnsClient.QueryOne(domain)
+ if err != nil {
+ fmt.Printf("err: %v\n", err)
+ return
+ }
+
+ jsonStr, err := rawResp.JSON()
+ if err != nil {
+ fmt.Printf("err: %v\n", err)
+ return
+ }
+ fmt.Println(jsonStr)
+
+ fo, err := os.Create(d.outfile)
+ if err != nil {
+ panic(err)
+ }
+ defer func() {
+ if err := fo.Close(); err != nil {
+ panic(err)
+ }
+ }()
+
+ if _, err := fo.Write([]byte(jsonStr)); err != nil {
+ panic(err)
+ }
+
+ fmt.Printf("[OSINT %s] Dnsx results are stored in %s", domain, d.outfile)
+}
diff --git a/osint/run.go b/osint/run.go
@@ -77,7 +77,18 @@ func (opts OsintOpts) runAssetfinder() {
}
func (opts OsintOpts) runDnsx() {
+ dnsx := Dnsx{}
+ dnsxCfg := make(map[string]interface{})
+ dnsxOutfile := fmt.Sprintf("%s/dnsx_%s.json", opts.scanPath, opts.domain)
+ dnsxCfg["outfile"] = dnsxOutfile
+
+ dnsx.Configure(dnsxCfg)
+ dnsx.Info(opts.domain)
+
+ if !opts.dryRun {
+ dnsx.Run(opts.domain)
+ }
}
func (opts OsintOpts) runHttpx() {
| | |