为了账号安全,请及时绑定邮箱和手机立即绑定

解析类型域名。断续器

解析类型域名。断续器

Go
GCT1015 2022-09-19 14:57:40
我是Go的新手,并试图让一个小型DNS程序工作,解析返回的A和CNAME记录。这是在使用 github.com/miekg/dns 包。我无法理解如何正确解析 A 或 CNAME 的返回资源记录。对于 A 记录,我想获取 IP 地址并将其存储在变量中。对于返回了多个 RR 的 CNAME,我想解析“名称”和“地址”字段并存储在变量中。我尝试过将结构转换为字符串或将其解压缩,但无济于事。任何人都可以提供任何见解,非常感谢。下面是下面的代码。文本文件包含一行带有“www”:package mainimport (    "bufio"    "fmt"    "log"    "os"    "github.com/miekg/dns")func dns_request_fwd(s string) []dns.RR {    //fmt.Println(s, " : started processing DNS request")    m1 := new(dns.Msg)    m1.Id = dns.Id()    m1.RecursionDesired = true    m1.Question = make([]dns.Question, 1)    m1.Question[0] = dns.Question{s, dns.TypeA, dns.ClassINET}    in, err := dns.Exchange(m1, "8.8.8.8:53")    if err != nil {        log.Fatal(err)    }    if len(in.Answer) > 0 {        //fmt.Println("Response greater than 0 - got something!")        //fmt.Println(in.Answer)    } else {        //fmt.Println("Empty DNS Response")        return nil    }    if _, ok := in.Answer[0].(*dns.A); ok {        //fmt.Println("Detected an 'A' record Answer.  Returning RR!")        return in.Answer    } else if _, ok := in.Answer[0].(*dns.CNAME); ok {        //fmt.Println("Detected a 'CNAME' record Answer.  Returning RR!")        return in.Answer    } else {        fmt.Println("Returning nil")        return nil    }}func main() {    f, err := os.Open("list4.txt")    if err != nil {        log.Fatal(err)    }    defer f.Close()    domain := "acme.com"    domain_lookup := "." + domain + "."     scanner := bufio.NewScanner(f)    for scanner.Scan() {    a_record := scanner.Text()    lookup := a_record+domain_lookup    fmt.Println("Looking up: ", lookup)    dreq := dns_request_fwd(lookup)
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您不需要“解析”结构。该库已经解析了响应,以便为您提供结构。只需使用结构中包含所需数据的字段,如 dns。A.A,这是一张网。IP 或域名。别名。目标是字符串。有关更多详细信息,请参阅包文档

if arec, ok := dreq[0].(*dns.A); ok {

    fmt.Println("    [+] Type is A")

    fmt.Println("    [+] Answer: ", arec.A)

}


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信