mirror of
https://github.com/bettercap/bettercap.git
synced 2024-11-07 22:20:11 -08:00
35 lines
797 B
Go
35 lines
797 B
Go
package syn_scan
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
|
|
"github.com/miekg/dns"
|
|
)
|
|
|
|
var chaosParser = regexp.MustCompile(`.*"([^"]+)".*`)
|
|
|
|
func grabChaos(addr string, q string) string {
|
|
c := new(dns.Client)
|
|
m := new(dns.Msg)
|
|
m.Question = make([]dns.Question, 1)
|
|
m.Question[0] = dns.Question{Name: q, Qtype: dns.TypeTXT, Qclass: dns.ClassCHAOS}
|
|
if in, _, _ := c.Exchange(m, addr); in != nil && len(in.Answer) > 0 {
|
|
s := in.Answer[0].String()
|
|
if match := chaosParser.FindStringSubmatch(s); len(match) > 0 {
|
|
return match[1]
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func dnsGrabber(mod *SynScanner, ip string, port int) string {
|
|
addr := fmt.Sprintf("%s:%d", ip, port)
|
|
if v := grabChaos(addr, "version.bind."); v != "" {
|
|
return v
|
|
} else if v := grabChaos(addr, "hostname.bind."); v != "" {
|
|
return v
|
|
}
|
|
return ""
|
|
}
|