dnsutils.go - dnsrecon - DNS reconnaissance tool written in golang, kinda scuffed.
(HTM) git clone git://jay.scot/dnsrecon
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
dnsutils.go (1179B)
---
1 package main
2
3 import (
4 "net"
5
6 "github.com/miekg/dns"
7 )
8
9 // Query hi
10 func Query(query string, queryType uint16) ([]string, string) {
11 config, _ := dns.ClientConfigFromFile("/etc/resolv.conf")
12 m := new(dns.Msg)
13 m.SetQuestion(dns.Fqdn(query), queryType)
14 m.RecursionDesired = true
15 r, err := dns.Exchange(m, net.JoinHostPort(config.Servers[0], config.Port))
16 if r == nil {
17 return []string{}, "DNS error: " + err.Error()
18 }
19
20 if r.Rcode != dns.RcodeSuccess {
21 return []string{}, "DNS error: didn't success to do query for '" + query + "'"
22 }
23
24 answer := make([]string, len(r.Answer))
25
26 for i, a := range r.Answer {
27 switch a.Header().Rrtype {
28 case dns.TypeMX:
29 answer[i] = a.(*dns.MX).Mx
30 break
31 case dns.TypeNS:
32 answer[i] = a.(*dns.NS).Ns
33 break
34 case dns.TypeTXT:
35 answer[i] = a.(*dns.TXT).Txt[0]
36 break
37 case dns.TypeSRV:
38 answer[i] = a.(*dns.SRV).Target
39 break
40 case dns.TypeA:
41 answer[i] = a.(*dns.A).A.String()
42 break
43 case dns.TypePTR:
44 answer[i] = a.(*dns.PTR).Ptr
45 break
46 case dns.TypeAAAA:
47 answer[i] = a.(*dns.AAAA).AAAA.String()
48 break
49 default:
50 return []string{}, "Unhandled response type"
51 }
52 }
53
54 return answer, "ok"
55 }