Skip to content

Commit

Permalink
update: dns utils
Browse files Browse the repository at this point in the history
  • Loading branch information
Esonhugh committed Nov 21, 2024
1 parent 4620b56 commit 6ebc1ae
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 3 deletions.
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@ BUILD_DIR = bin

MAIN_PROGRAM_NAME = k8spider

default: build build-static
default: build build-static check-size

# build
build:
go build -o $(BUILD_DIR)/$(MAIN_PROGRAM_NAME) main.go

build-static:
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o $(BUILD_DIR)/$(MAIN_PROGRAM_NAME)-linux-static main.go
upx $(BUILD_DIR)/$(MAIN_PROGRAM_NAME)-linux-static
upx -9 $(BUILD_DIR)/$(MAIN_PROGRAM_NAME)-linux-static

check-size:
ls -alh $(BUILD_DIR)/$(MAIN_PROGRAM_NAME)*

clean:
rm -rf $(BUILD_DIR)
5 changes: 5 additions & 0 deletions cmd/all/all.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,15 @@ var AllCmd = &cobra.Command{
log.Warnf("ParseStringToIPNet failed: %v", err)
return
}

var finalRecord define.Records
if command.Opts.MultiThreadingMode {
finalRecord = RunMultiThread(ipNets, command.Opts.ThreadingNum)
} else {
finalRecord = Run(ipNets)
}
printer.PrintResult(finalRecord, command.Opts.OutputFile)

PostRun(finalRecord)
},
}
Expand All @@ -78,6 +80,9 @@ func RunMultiThread(net *net.IPNet, count int) (finalRecord define.Records) {
}

func PostRun(finalRecord define.Records) {
if finalRecord == nil || len(finalRecord) == 0 {
return
}
log.Info("Extract Namespaces: ")
list := post.RecordsDumpNameSpace(finalRecord, command.Opts.Zone)
for _, ns := range list {
Expand Down
46 changes: 46 additions & 0 deletions cmd/dnsutils/dns.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package dnsutils

import (
"strings"

command "github.com/esonhugh/k8spider/cmd"
"github.com/esonhugh/k8spider/pkg"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)

var queryType string

func init() {
DNSCmd.PersistentFlags().StringVarP(&queryType, "type", "t", "A", "query type")
command.RootCmd.AddCommand(DNSCmd)
}

var DNSCmd = &cobra.Command{
Use: "dns",
Aliases: []string{"dig"},
Short: "dns is a command to query dns server",
Run: func(cmd *cobra.Command, args []string) {
var querier pkg.DnsQuery
switch strings.ToLower(queryType) {
case "a", "aaaa":
querier = pkg.QueryA
case "ptr":
querier = pkg.QueryPTR
case "srv":
querier = pkg.QuerySRV
case "txt":
querier = pkg.QueryTXT
default:
querier = pkg.QueryA
}
for _, query := range args {
res, err := querier(query)
if err != nil {
log.Warnf("Query %s failed: %v", query, err)
continue
}
log.Infof("Query [%d] %s: %v", queryType, query, res)
}
},
}
1 change: 1 addition & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"github.com/esonhugh/k8spider/cmd"
_ "github.com/esonhugh/k8spider/cmd/all"
_ "github.com/esonhugh/k8spider/cmd/axfr"
_ "github.com/esonhugh/k8spider/cmd/dnsutils"
_ "github.com/esonhugh/k8spider/cmd/neighbor"
_ "github.com/esonhugh/k8spider/cmd/service"
_ "github.com/esonhugh/k8spider/cmd/subnet"
Expand Down
30 changes: 29 additions & 1 deletion pkg/query_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package pkg

import (
"context"
"fmt"
"net"
"regexp"
"strings"
Expand Down Expand Up @@ -89,7 +90,9 @@ func WarpDnsServer(dnsServer string) *SpiderResolver {
return d.DialContext(ctx, network, dnsServer)
},
},
ctx: ctx,
ctx: ctx,
filter: []*regexp.Regexp{},
contains: []string{},
}
}

Expand Down Expand Up @@ -146,3 +149,28 @@ func (s *SpiderResolver) TXTRecord(domain string) ([]string, error) {
func TXTRecord(domain string) (txts []string, err error) {
return NetResolver.TXTRecord(domain)
}

type DnsQuery func(domain string) ([]string, error)

var (
QueryPTR DnsQuery = func(domain string) ([]string, error) {
return PTRRecord(net.ParseIP(domain)), nil
}
QueryA DnsQuery = func(domain string) ([]string, error) {
res, err := ARecord(domain)
var ret []string
for _, r := range res {
ret = append(ret, r.String())
}
return ret, err
}
QueryTXT DnsQuery = TXTRecord
QuerySRV DnsQuery = func(domain string) ([]string, error) {
_, res, err := SRVRecord(domain)
var ret []string
for _, r := range res {
ret = append(ret, fmt.Sprintf("%s:%d", r.Target, r.Port))
}
return ret, err
}
)

0 comments on commit 6ebc1ae

Please sign in to comment.