dns

package
v0.0.0-...-c534ef8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2023 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DNS

func DNS(inputDNSResolvers []*InputDNSResolver, inputURLs []*util.InputURL)

func QueryWorker

func QueryWorker(client *dns.Client, resolver InputDNSResolver, domains <-chan string, results chan<- *QueryResponse)

Worker to send DNS queries to target IP

func ResolverWorker

func ResolverWorker(inputURLs []*util.InputURL, resolvers <-chan InputDNSResolver, done chan<- *QueryResponse)

Worker per resolver

Types

type InputDNSResolver

type InputDNSResolver struct {
	IP         string           `json:"ip"`
	Name       string           `json:"name"`
	Country    string           `json:"country"`
	Kind       string           `json:"kind"`
	WhoamiResp []ResponseResult `json:"whoami_resp"`
}

type QueryResponse

type QueryResponse struct {
	ResolverIP      string           `json:"resolver"`
	Domain          string           `json:"domain"`
	StartTime       string           `json:"start_time"`
	EndTime         string           `json:"end_time"`
	Responses       []ResponseResult `json:"responses"`
	TraceResults    []*TraceResult   `json:"trace"`
	AuthoritativeNs string           `json:"authoritative_ns"`
	Error           string           `json:"error"`
}

type ResponseEntry

type ResponseEntry struct {
	Data string `json:"data"`
	Type string `json:"type"`
}

type ResponseResult

type ResponseResult struct {
	Response []ResponseEntry `json:"response"`
	Err      string          `json:"error"`
	Rcode    int             `json:"rcode"`
	RawMsg   interface{}     `json:"rawmsg"`
}

Data format for parsed DNS response

func ParseDNS

func ParseDNS(resp *dns.Msg, err error, domain string) *ResponseResult

Parse DNS responses, return a list of {IP, err, Rcode, status} tuples And a bool variable to indicate whether there's a legit response from all the replies

type TraceEntry

type TraceEntry struct {
	Data string   `json:"data"`
	Glue []string `json:"glue"`
}

type TraceResult

type TraceResult struct {
	Ns       string       `json:"ns"`
	Domain   string       `json:"domain"`
	Response []TraceEntry `json:"responses"`
	Err      string       `json:"error"`
	Rcode    int          `json:"rcode"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL