servicescan
函数名 | 函数描述/介绍 |
---|---|
servicescan.Scan | Scan servicescan 库使用的端口扫描类型的方式为全连接扫描,用于对连接目标进行精准的扫描,相比 synscan 库的单纯扫描,servicescan 库会尝试获取精确指纹信息以及 CPE 信息 @param {string} target 目标地址,支持 CIDR 格式,支持 192... |
servicescan.ScanFromPing | ScanFromPing 从 ping.Scan 的结果中进行指纹识别 @param {chan *pingutil.PingResult} res ping.Scan 的结果 @param {string} ports 端口,支持 1-65535、1,2,3、1-100,200-300 格式 ... |
servicescan.ScanFromSpaceEngine | ScanFromSynResult / ScanFromSpaceEngine 从 synscan.Scan 或者 spacengine.Query 的结果中进行指纹识别 @param {interface{}} res synscan.Scan 或者 spacengine.Query 的结果 ... |
servicescan.ScanFromSynResult | ScanFromSynResult / ScanFromSpaceEngine 从 synscan.Scan 或者 spacengine.Query 的结果中进行指纹识别 @param {interface{}} res synscan.Scan 或者 spacengine.Query 的结果 ... |
servicescan.ScanOne | ScanOne servicescan 单体扫描,同步扫描一个目标,主机+端口 @param {string} target 目标地址 @param {int} port 端口 @param {ConfigOption} [opts] servicescan 扫描参数 @return {Ma... |
servicescan.active | |
servicescan.all | |
servicescan.cache | cache servicescan 的配置选项,设置本次扫描是否使用缓存 @param {bool} b 是否使用缓存 @return {ConfigOption} 返回配置项 |
servicescan.concurrent | concurrent servicescan 的配置选项,用于设置整体扫描并发 @param {int} size 并发数量 @return {ConfigOption} 返回配置项 |
servicescan.databaseCache | databaseCache servicescan 的配置选项,设置本次扫描是否使用数据库缓存 @param {bool} b 是否使用数据库缓存 @return {ConfigOption} 返回配置项 |
servicescan.disableDefaultRule | |
servicescan.excludeHosts | excludeHosts servicescan 的配置选项,设置本次扫描排除的主机 @param {string} hosts 主机,支持逗号分割、CIDR、-的格式 @return {ConfigOption} 返回配置项 |
servicescan.excludePorts | excludePorts servicescan 的配置选项,设置本次扫描排除的端口 @param {string} ports 端口,支持逗号分割、-的格式 @return {ConfigOption} 返回配置项 |
servicescan.maxProbes | maxProbes servicescan 的配置选项,在主动模式发包的基础上设置本次扫描使用的最大探测包数量,默认值为 5 @param {int} m 最大探测包数量 @return {ConfigOption} 返回配置项 |
servicescan.maxProbesConcurrent | maxProbesConcurrent servicescan 的配置选项,设置本次扫描发送 Probe 的并发量,默认值为 5 @param {int} m 并发量 @return {ConfigOption} 返回配置项 |
servicescan.nmapRarityMax | nmapRarityMax servicescan 的配置选项,设置本次扫描使用的 Nmap 指纹稀有度,在主动模式发包的基础上进行探测控制 稀有度越大,表示这个服务在现实存在的可能性越小,取值范围为 1-9,默认值为 5 @param {int} rarity 稀有度,取值范围为 1-9 @... |
servicescan.nmapRule | nmapRule servicescan 的配置选项,设置本次扫描使用的 Nmap 指纹规则 @param {interface{}} i Nmap 指纹规则 |
servicescan.probeTimeout | probeTimeout servicescan 的配置选项,设置每一个探测包的超时时间 @param {float64} f 超时时间,单位为秒 @return {ConfigOption} 返回配置项 |
servicescan.proto | proto servicescan 的配置选项,用于指定扫描协议 @param {...interface{}} [proto] 协议,例如:tcp、udp,可选参数,不传入参数默认为 tcp @return {ConfigOption} 返回配置选项 |
servicescan.proxy | proxy servicescan 的配置选项,设置本次扫描使用的代理 @param {string} proxies 代理地址,支持 http 和 socks5 @return {ConfigOption} 返回配置项 |
servicescan.service | |
servicescan.web | |
servicescan.webRule | webRule servicescan 的配置选项,设置本次扫描使用的 Web 指纹规则 @param {interface{}} i Web 指纹规则 |
#
函数定义#
Scan#
详细描述Scan servicescan 库使用的端口扫描类型的方式为全连接扫描,用于对连接目标进行精准的扫描,相比 synscan 库的单纯扫描,servicescan 库会尝试获取精确指纹信息以及 CPE 信息
@param {string} target 目标地址,支持 CIDR 格式,支持 192.168.1.1-100 格式
@param {string} port 端口,支持 1-65535、1,2,3、1-100,200-300 格式
@param {ConfigOption} [opts] servicescan 扫描参数
@return {chan *MatchResult} 返回结果
Example:
ch, err = servicescan.Scan("127.0.0.1", "22-80,443,3389") // 开始扫描,函数会立即返回一个错误和结果管道die(err) // 如果错误非空则报错for result := range ch { // 通过遍历管道的形式获取管道中的结果
if result.IsOpen() { // 获取到的结果是一个结构体,可以调用IsOpen方法判断该端口是否打开 println(result.String()) // 输出结果,调用String方法获取可读字符串 println(result.GetCPEs()) // 查看 CPE 结果 } }
#
定义Scan(target string, port string, opts ...fp.ConfigOption) (chan *fp.MatchResult, error)
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
target | string | |
port | string | |
opts | ...fp.ConfigOption |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | chan *fp.MatchResult | |
r2 | error |
#
ScanFromPing#
详细描述ScanFromPing 从 ping.Scan 的结果中进行指纹识别
@param {chan *pingutil.PingResult} res ping.Scan 的结果
@param {string} ports 端口,支持 1-65535、1,2,3、1-100,200-300 格式
@param {ConfigOption} [opts] synscan 扫描参数
@return {chan *MatchResult} 返回结果
Example:
pingResult, err = ping.Scan("192.168.1.1/24") // 先进行存活探测die(err)fpResults, err := servicescan.ScanFromPing(pingResult, "22-80,443,3389") // 将ping中拿到的结果传入servicescan中进行指纹扫描die(err) // 如果错误非空则报错for result := range fpResults { // 通过遍历管道的形式获取管道中的结果,一旦有结果返回就会执行循环体的代码
println(result.String()) // 输出结果,调用String方法获取可读字符串 }
#
定义ScanFromPing(res chan *pingutil.PingResult, ports string, opts ...fp.ConfigOption) (chan *fp.MatchResult, error)
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
res | chan *pingutil.PingResult | |
ports | string | |
opts | ...fp.ConfigOption |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | chan *fp.MatchResult | |
r2 | error |
#
ScanFromSpaceEngine#
详细描述ScanFromSynResult / ScanFromSpaceEngine 从 synscan.Scan 或者 spacengine.Query 的结果中进行指纹识别
@param {interface{}} res synscan.Scan 或者 spacengine.Query 的结果
@param {scanOpt} [opts] synscan 扫描参数
@return {chan *MatchResult} 返回结果
Example:
ch, err = synscan.Scan("127.0.0.1", "22-80,443,3389") // 开始扫描,函数会立即返回一个错误和结果管道die(err) // 如果错误非空则报错fpResults, err := servicescan.ScanFromSynResult(ch) // 将synscan中拿到的结果传入servicescan中进行指纹扫描die(err) // 如果错误非空则报错for result := range fpResults { // 通过遍历管道的形式获取管道中的结果,一旦有结果返回就会执行循环体的代码
println(result.String()) // 输出结果,调用String方法获取可读字符串 }
res, err := spacengine.ShodanQuery(Apikey,query)die(err) // 如果错误非空则报错fpResults, err := servicescan.ScanFromSpaceEngine(res) // 将spacengine中拿到的结果传入servicescan中进行指纹扫描die(err) // 如果错误非空则报错for result := range fpResults { // 通过遍历管道的形式获取管道中的结果,一旦有结果返回就会执行循环体的代码
println(result.String()) // 输出结果,调用String方法获取可读字符串 }
#
定义ScanFromSpaceEngine(res any, opts ...fp.ConfigOption) (chan *fp.MatchResult, error)
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
res | any | |
opts | ...fp.ConfigOption |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | chan *fp.MatchResult | |
r2 | error |
#
ScanFromSynResult#
详细描述ScanFromSynResult / ScanFromSpaceEngine 从 synscan.Scan 或者 spacengine.Query 的结果中进行指纹识别
@param {interface{}} res synscan.Scan 或者 spacengine.Query 的结果
@param {scanOpt} [opts] synscan 扫描参数
@return {chan *MatchResult} 返回结果
Example:
ch, err = synscan.Scan("127.0.0.1", "22-80,443,3389") // 开始扫描,函数会立即返回一个错误和结果管道die(err) // 如果错误非空则报错fpResults, err := servicescan.ScanFromSynResult(ch) // 将synscan中拿到的结果传入servicescan中进行指纹扫描die(err) // 如果错误非空则报错for result := range fpResults { // 通过遍历管道的形式获取管道中的结果,一旦有结果返回就会执行循环体的代码
println(result.String()) // 输出结果,调用String方法获取可读字符串 }
res, err := spacengine.ShodanQuery(Apikey,query)die(err) // 如果错误非空则报错fpResults, err := servicescan.ScanFromSpaceEngine(res) // 将spacengine中拿到的结果传入servicescan中进行指纹扫描die(err) // 如果错误非空则报错for result := range fpResults { // 通过遍历管道的形式获取管道中的结果,一旦有结果返回就会执行循环体的代码
println(result.String()) // 输出结果,调用String方法获取可读字符串 }
#
定义ScanFromSynResult(res any, opts ...fp.ConfigOption) (chan *fp.MatchResult, error)
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
res | any | |
opts | ...fp.ConfigOption |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | chan *fp.MatchResult | |
r2 | error |
#
ScanOne#
详细描述ScanOne servicescan 单体扫描,同步扫描一个目标,主机+端口
@param {string} target 目标地址
@param {int} port 端口
@param {ConfigOption} [opts] servicescan 扫描参数
@return {MatchResult} 返回结果
Example:
result, err = servicescan.ScanOne("127.0.0.1", "22-80,443,3389") // 开始扫描,函数会立即返回一个错误和结果die(err) // 如果错误非空则报错if result.IsOpen() { // 获取到的结果是一个结构体,可以调用IsOpen方法判断该端口是否打开
println(result.String()) // 输出结果,调用String方法获取可读字符串 println(result.GetCPEs()) // 查看 CPE 结果 }
#
定义ScanOne(target string, port int, opts ...fp.ConfigOption) (*fp.MatchResult, error)
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
target | string | |
port | int | |
opts | ...fp.ConfigOption |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | *fp.MatchResult | |
r2 | error |
#
active#
详细描述#
定义active(raw bool) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
raw | bool |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
all#
详细描述#
定义all() fp.ConfigOption
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | fp.ConfigOption |
#
cache#
详细描述cache servicescan 的配置选项,设置本次扫描是否使用缓存
@param {bool} b 是否使用缓存
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161", servicescan.cache(true))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义cache(b bool) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
b | bool |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
concurrent#
详细描述concurrent servicescan 的配置选项,用于设置整体扫描并发
@param {int} size 并发数量
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161", servicescan.concurrent(100))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义concurrent(size int) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
size | int |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
databaseCache#
详细描述databaseCache servicescan 的配置选项,设置本次扫描是否使用数据库缓存
@param {bool} b 是否使用数据库缓存
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161", servicescan.databaseCache(true))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义databaseCache(b bool) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
b | bool |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
disableDefaultRule#
详细描述#
定义disableDefaultRule(b ...bool) fp.ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
b | ...bool |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | fp.ConfigOption |
#
excludeHosts#
详细描述excludeHosts servicescan 的配置选项,设置本次扫描排除的主机
@param {string} hosts 主机,支持逗号分割、CIDR、-的格式
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("192.168.1.1/24", "22-80,443,3389", servicescan.excludeHosts("192.168.1.1"))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义excludeHosts(hosts string) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
hosts | string |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
excludePorts#
详细描述excludePorts servicescan 的配置选项,设置本次扫描排除的端口
@param {string} ports 端口,支持逗号分割、-的格式
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161", servicescan.excludePorts("22,80"))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义excludePorts(ports string) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
ports | string |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
maxProbes#
详细描述maxProbes servicescan 的配置选项,在主动模式发包的基础上设置本次扫描使用的最大探测包数量,默认值为 5
@param {int} m 最大探测包数量
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161",servicescan.active(true), // 需要在主动发包的基础上servicescan.maxProbes(10))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义maxProbes(m int) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
m | int |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
maxProbesConcurrent#
详细描述maxProbesConcurrent servicescan 的配置选项,设置本次扫描发送 Probe 的并发量,默认值为 5
@param {int} m 并发量
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161",servicescan.active(true), // 需要在主动发包的基础上servicescan.maxProbes(50), // 设置本次扫描使用的最大探测包数量servicescan.maxProbesConcurrent(10) // 设置本次扫描发送 Probe 的并发量)die(err)
for v := range result { fmt.Println(v.String()) }
#
定义maxProbesConcurrent(m int) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
m | int |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
nmapRarityMax#
详细描述nmapRarityMax servicescan 的配置选项,设置本次扫描使用的 Nmap 指纹稀有度,在主动模式发包的基础上进行探测控制
稀有度越大,表示这个服务在现实存在的可能性越小,取值范围为 1-9,默认值为 5
@param {int} rarity 稀有度,取值范围为 1-9
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161",servicescan.active(true), // 需要在主动发包的基础上通过稀有度进行筛选servicescan.nmapRarityMax(9),)die(err)
for v := range result { fmt.Println(v.String()) }
#
定义nmapRarityMax(rarity int) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
rarity | int |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
nmapRule#
详细描述nmapRule servicescan 的配置选项,设置本次扫描使用的 Nmap 指纹规则 @param {interface{}} i Nmap 指纹规则
#
定义nmapRule(i any) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
i | any |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
probeTimeout#
详细描述probeTimeout servicescan 的配置选项,设置每一个探测包的超时时间
@param {float64} f 超时时间,单位为秒
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161", servicescan.probeTimeout(5))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义probeTimeout(f float64) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
f | float64 |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
proto#
详细描述proto servicescan 的配置选项,用于指定扫描协议
@param {...interface{}} [proto] 协议,例如:tcp、udp,可选参数,不传入参数默认为 tcp
@return {ConfigOption} 返回配置选项
Example:
result,err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161", servicescan.proto(["tcp","udp"]...)) // 使用 TCP 和 UDP 进行扫描die(err) // 如果错误非空则报错for res := range result { // 通过遍历管道的形式获取管道中的结果,一旦有结果返回就会执行循环体的代码
println(res.String()) // 输出结果,调用String方法获取可读字符串 }
#
定义proto(proto ...any) fp.ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
proto | ...any |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | fp.ConfigOption |
#
proxy#
详细描述proxy servicescan 的配置选项,设置本次扫描使用的代理
@param {string} proxies 代理地址,支持 http 和 socks5
@return {ConfigOption} 返回配置项
Example:
result, err = servicescan.Scan("127.0.0.1", "22-80,443,3389,161", servicescan.proxy("http://127.0.0.1:1080"))die(err)
for v := range result { fmt.Println(v.String()) }
#
定义proxy(proxies ...string) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
proxies | ...string |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |
#
service#
详细描述#
定义service() fp.ConfigOption
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | fp.ConfigOption |
#
web#
详细描述#
定义web() fp.ConfigOption
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | fp.ConfigOption |
#
webRule#
详细描述webRule servicescan 的配置选项,设置本次扫描使用的 Web 指纹规则 @param {interface{}} i Web 指纹规则
#
定义webRule(rs ...any) ConfigOption
#
参数参数名 | 参数类型 | 参数解释 |
---|---|---|
rs | ...any |
#
返回值返回值(顺序) | 返回值类型 | 返回值解释 |
---|---|---|
r1 | ConfigOption |