-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
73 lines (66 loc) · 2.38 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package main
import (
"flag"
"fmt"
"log"
"os"
"strings"
"github.com/code-scan/DirGo/module"
"github.com/code-scan/Goal/Gconvert"
)
var (
target string
batchTarget string
dirFile string
ext string
mode string
outFile string
keyWord string
Codes map[int]bool
codes string
maxThread int
)
func banner() {
fmt.Println("\n██████╗ ██╗██████╗ ██████╗ ██████╗ \n██╔══██╗██║██╔══██╗██╔════╝ ██╔═══██╗\n██║ ██║██║██████╔╝██║ ███╗██║ ██║\n██║ ██║██║██╔══██╗██║ ██║██║ ██║\n██████╔╝██║██║ ██║╚██████╔╝╚██████╔╝\n╚═════╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ \n \n")
fmt.Println("@Cond0r http://aq.mk\n\n")
}
func main() {
banner()
flag.StringVar(&target, "u", "", "target url ,http://baidu.com")
flag.StringVar(&keyWord, "k", "", "404 keyword")
flag.StringVar(&batchTarget, "f", "", "target file ")
flag.StringVar(&dirFile, "d", "dict/dirs.txt", "dict file ")
flag.StringVar(&codes, "c", "200,302,301,403", "status code")
flag.StringVar(&ext, "e", "php ", "ext , php,jsp")
flag.StringVar(&mode, "m", "HEAD", "GET/HEAD/POST")
//flag.StringVar(&outFile, "o", "log.txt", "output file")
flag.StringVar(&module.Proxy, "x", "", "proxy, socks5://user:pass@host:port, http://host:port")
flag.IntVar(&maxThread, "b", 20, "max thread")
flag.Parse()
cs := strings.Split(codes, ",")
Codes = make(map[int]bool)
for _, c := range cs {
Codes[Gconvert.Str2Int(c)] = true
}
if target == "" && batchTarget == "" {
log.Println("pls set target")
log.Println("usage:")
log.Println(os.Args[0], " -h")
return
}
var dirList []string
var targetList []string
module.ReadListToArray(dirFile, &dirList)
if batchTarget != "" {
module.ReadListToArray(batchTarget, &targetList)
} else {
targetList = append(targetList, target)
}
module.TaskQueue = make(chan string, maxThread*30)
go module.AddTask(targetList, dirList)
for i := 0; i < maxThread; i++ {
module.Wg.Add(1)
go module.RunTask(mode, ext, keyWord, Codes)
}
module.Wg.Wait()
}