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 }