Skip to content

Commit 047a58f

Browse files
committed
添加 shodan 和 zoomeye
1 parent 38f87e5 commit 047a58f

File tree

8 files changed

+2647
-24
lines changed

8 files changed

+2647
-24
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ Usage:
4242
INPUT:
4343
-fofa string fofa 查询
4444
-quake string quake 查询
45-
-zoom string zoomeye 查询 (还没适配好)
46-
-shodan string shodan 查询 (还没适配好)
45+
-zoom string zoomeye 查询 (不支持json导出)
46+
-shodan string shodan 查询 (不支持json导出)
4747
-hunter string huneter 查询
4848
-chaos string chaos 查询
4949

engine/shodan.go

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,75 @@
11
package engine
22

33
import (
4+
"encoding/json"
45
"fmt"
6+
"github.com/valyala/fasthttp"
57
ones "ones/mod"
8+
"os"
9+
"strconv"
10+
"sync"
611
)
712

8-
func TodoShodan() {
13+
var TmpSlice1 []string
14+
var SumSlice1 []string
15+
16+
func TodoShodan() []string {
917

1018
ShodanKeyValue := string(ones.Confs["shodan_key"])
11-
fmt.Println(ShodanKeyValue[1 : len(ShodanKeyValue)-1])
19+
ShodanKeyValue = ShodanKeyValue[1 : len(ShodanKeyValue)-1]
20+
//fmt.Println(ShodanKeyValue[1 : len(ShodanKeyValue)-1])
21+
22+
num := 0
23+
if ones.Num <= 0 {
24+
num = 100
25+
} else {
26+
num = ones.Num
27+
}
28+
29+
maxPage := num / 100
30+
31+
if num%100 > 0 {
32+
maxPage++
33+
}
34+
35+
wg := &sync.WaitGroup{}
36+
for keyword := 1; keyword <= maxPage; keyword++ {
37+
wg.Add(1)
38+
go func(keyword int, group *sync.WaitGroup) {
39+
TmpSlice := SendReq1(ShodanKeyValue, keyword)
40+
SumSlice1 = append(TmpSlice)
41+
group.Done()
42+
}(keyword, wg)
43+
}
44+
wg.Wait()
45+
46+
//fmt.Println(string(resp))
47+
return SumSlice1
48+
49+
}
50+
51+
func SendReq1(key string, num int) []string {
52+
53+
url := fmt.Sprintf("https://api.shodan.io/shodan/host/search?key=%s&query=%d", key, num)
54+
//fmt.Println(url)
55+
56+
status, resp, err := fasthttp.Get(nil, url)
57+
if err != nil {
58+
fmt.Println("请求失败:", err.Error())
59+
os.Exit(3)
60+
}
61+
if status != fasthttp.StatusOK {
62+
fmt.Println("请求没有成功:", status)
63+
os.Exit(3)
64+
}
65+
66+
var shodan ones.ShodanInfo
67+
_ = json.Unmarshal(resp, &shodan)
68+
69+
for _, v := range shodan.Matches {
70+
resp2 = append(resp2, v.IPStr+":"+strconv.Itoa(v.Port))
71+
}
72+
73+
return resp2
1274

1375
}

engine/zoomeye.go

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,77 @@
11
package engine
22

33
import (
4+
"encoding/json"
45
"fmt"
6+
"github.com/valyala/fasthttp"
57
ones "ones/mod"
8+
"os"
9+
"strconv"
10+
"sync"
611
)
712

8-
func TodoZoomeye() {
13+
var TmpSlice []string
14+
var SumSlice []string
15+
16+
func TodoZoomeye() []string {
917

1018
ZoomKeyValue := string(ones.Confs["zoom_key"])
11-
fmt.Println(ZoomKeyValue[1 : len(ZoomKeyValue)-1])
19+
ZoomKeyValue = ZoomKeyValue[1 : len(ZoomKeyValue)-1]
20+
//fmt.Println(ZoomKeyValue)
21+
22+
num := 0
23+
if ones.Num <= 0 {
24+
num = 20
25+
} else {
26+
num = ones.Num
27+
}
28+
29+
maxPage := num / 20
30+
31+
if num%20 > 0 {
32+
maxPage++
33+
}
34+
35+
wg := &sync.WaitGroup{}
36+
for keyword := 1; keyword <= maxPage; keyword++ {
37+
wg.Add(1)
38+
go func(keyword int, group *sync.WaitGroup) {
39+
TmpSlice := SendReq(ZoomKeyValue, keyword)
40+
SumSlice = append(TmpSlice)
41+
group.Done()
42+
}(keyword, wg)
43+
}
44+
wg.Wait()
45+
46+
//fmt.Println(string(resp.Body()))
47+
return SumSlice
48+
49+
}
50+
51+
func SendReq(key string, num int) []string {
52+
url := fmt.Sprintf("https://api.zoomeye.org/host/search?query=%s&page=%d", ones.Zoomeye, num)
53+
//fmt.Println(url)
54+
55+
req := &fasthttp.Request{}
56+
req.SetRequestURI(url)
57+
req.Header.SetMethod("GET")
58+
req.Header.Add("API-KEY", key)
59+
60+
resp := &fasthttp.Response{}
61+
62+
client := &fasthttp.Client{}
63+
if err := client.Do(req, resp); err != nil {
64+
fmt.Println("请求失败:", err.Error())
65+
os.Exit(3)
66+
}
67+
68+
var zoomeye ones.ZoomInfo
69+
_ = json.Unmarshal(resp.Body(), &zoomeye)
70+
71+
for _, v := range zoomeye.Matches {
72+
resp2 = append(resp2, v.IP+":"+strconv.Itoa(v.Portinfo.Port))
73+
}
74+
75+
return resp2
1276

1377
}

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ module ones
33
go 1.18
44

55
require (
6-
github.com/itchyny/gojq v0.12.8
6+
github.com/gyyyy/ZoomEye-go v0.0.0-20210331085125-df25215ea0eb
77
github.com/valyala/fasthttp v1.37.0
88
)
99

1010
require (
1111
github.com/andybalholm/brotli v1.0.4 // indirect
12-
github.com/itchyny/timefmt-go v0.1.3 // indirect
1312
github.com/klauspost/compress v1.15.0 // indirect
1413
github.com/valyala/bytebufferpool v1.0.0 // indirect
1514
)

go.sum

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
22
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
3-
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
4-
github.com/itchyny/gojq v0.12.8 h1:Zxcwq8w4IeR8JJYEtoG2MWJZUv0RGY6QqJcO1cqV8+A=
5-
github.com/itchyny/gojq v0.12.8/go.mod h1:gE2kZ9fVRU0+JAksaTzjIlgnCa2akU+a1V0WXgJQN5c=
6-
github.com/itchyny/timefmt-go v0.1.3 h1:7M3LGVDsqcd0VZH2U+x393obrzZisp7C0uEe921iRkU=
7-
github.com/itchyny/timefmt-go v0.1.3/go.mod h1:0osSSCQSASBJMsIZnhAaF1C2fCBTJZXrnj37mG8/c+A=
3+
github.com/gyyyy/ZoomEye-go v0.0.0-20210331085125-df25215ea0eb h1:0WKNmBy5wfYl1drRcRXGR2eHhFN/n6nQuqNpBHKyuxM=
4+
github.com/gyyyy/ZoomEye-go v0.0.0-20210331085125-df25215ea0eb/go.mod h1:DQDHOEW5Cts4Rf6P01bG7YIeSR/8L1hR3K3DBeA+J+U=
85
github.com/klauspost/compress v1.15.0 h1:xqfchp4whNFxn5A4XFyyYtitiWI8Hy5EW59jEwcyL6U=
96
github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
10-
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
11-
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
12-
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
137
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
148
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
159
github.com/valyala/fasthttp v1.37.0 h1:7WHCyI7EAkQMVmrfBhWTCOaeROb1aCBiTopx63LkMbE=
@@ -21,15 +15,12 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su
2115
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2216
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2317
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
24-
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
2518
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
2619
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
27-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
2820
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
2921
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
3022
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
3123
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
3224
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
33-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3425
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
35-
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
26+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=

mod/flag.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ func init() {
2121
flag.BoolVar(&V, "version", false, "显示版本号")
2222
flag.StringVar(&Fofa, "fofa", "", "fofa 查询")
2323
flag.StringVar(&Quake, "quake", "", "quake 查询")
24-
//flag.StringVar(&Shodan, "shodan", "", "shodan 查询")
24+
flag.StringVar(&Shodan, "shodan", "", "shodan 查询")
2525
flag.StringVar(&Chaos, "chaos", "", "chaos 查询")
26-
//flag.StringVar(&Zoomeye, "zoomeye", "", "zoomeye 查询")
26+
flag.StringVar(&Zoomeye, "zoomeye", "", "zoomeye 查询")
2727
flag.StringVar(&Hunter, "hunter", "", "hunter 查询")
2828
flag.IntVar(&Num, "num", 100, "数量")
2929
flag.StringVar(&Json, "json", "", "导出json格式")

0 commit comments

Comments
 (0)