[spacengine] 网络空间引擎
本网络空间引擎目前集成了市面常见的一些网络空间引擎的库:
fofa
shodan
quake
(From 360)hunter
zoomeye
可以支持编写脚本从上述五个引擎中搜索数据
当然,Secret 和 AccessKey 需要用户自行购买
#
API#
搜索 APIfn spacengine.FofaQuery(email: string, secretKey: string, searchFilter: string, vars: ...yaklib._spaceEngineConfigOpt): (chan *spacengine.NetSpaceEngineResult, error)
Fofa 搜索引擎fn spacengine.QuakeQuery(apiKey: string, searchFilter: string, vars: ...yaklib._spaceEngineConfigOpt): (chan *spacengine.NetSpaceEngineResult, error)
360 Quake 空间搜索引擎fn spacengine.ShodanQuery(apiKey: string, searchFilter: string, vars: ...yaklib._spaceEngineConfigOpt): (chan *spacengine.NetSpaceEngineResult, error)
Shodan 老牌搜索引擎fn spacengine.HunterQuery(name: string, apiKey: string, searchFilter: string, vars: ...yaklib._spaceEngineConfigOpt): (chan *spacengine.NetSpaceEngineResult, error)
Hunter 空间搜索引擎fn spacengine.ZoomeyeQuery(apiKey: string, searchFilter: string, vars: ...yaklib._spaceEngineConfigOpt): (chan *spacengine.NetSpaceEngineResult, error)
Zoomeye 空间搜索引擎
*spacengine.NetSpaceEngineResult
结构可用字段
type palm/server/dbm/falcons/spacengine.(NetSpaceEngineResult) struct { Fields(可用字段): // IP 地址 : 端口 Addr: string // 数据从哪个搜索引擎来的? FromEngine: string // 经纬度 Latitude: float64 Longitude: float64 // 如果是 HTML 的话,Title 是啥? HtmlTitle: string // 这个 IP 地址的域名是啥? Domains: string
// 如果有,ASN 编号 Asn: string // 地理位置名称 Province: string City: string Location: string // 使用什么语句搜索到的结果? FromFilter: string // 可能的服务运营商 ServiceProvider: string
// 指纹 Fingerprints: string
Banner: string}
#
参数 APIfn spacengine.maxPage(var_1: int): yaklib._spaceEngineConfigOpt
最多获取多少页的数据?fn spacengine.maxRecord(var_1: int): yaklib._spaceEngineConfigOpt
最多获取多少条?(按页获取,实际返回数量等于maxRecord % perPageRecord > 0 ? perPageRecord * (page+1) : perPageRecord * page
)
#
实战案例:#
基础使用案例yak 25_spacengine.yak --token vO5Z*********************aHgdTeEM
apiKey := cli.String("token")
res, err := spacengine.ShodanQuery(apiKey, "jenkins", spacengine.maxRecord(100))die(err)
for r := range res { println(r.Addr)}
当我们执行上述代码之后,我们可以得到按行获取的扫描目标
servicescan
使用#
配合 apiKey := cli.String("token")
res, err := spacengine.ShodanQuery(apiKey, "jenkins", spacengine.maxRecord(100))die(err)
fpRes, err := servicescan.ScanFromSpaceEngine(res)die(err)
for result := range fpRes { println(result)}
通过高亮行代码,我们可以把 spacengine
模块的扫描结果直接给服务扫描进行执行。