Skip to main content

servicescan

函数名函数描述/介绍
servicescan.ScanScan servicescan 库使用的端口扫描类型的方式为全连接扫描,用于对连接目标进行精准的扫描,相比 synscan 库的单纯扫描,servicescan 库会尝试获取精确指纹信息以及 CPE 信息 @param {string} target 目标地址,支持 CIDR 格式,支持 192...
servicescan.ScanFromPingScanFromPing 从 ping.Scan 的结果中进行指纹识别 @param {chan *pingutil.PingResult} res ping.Scan 的结果 @param {string} ports 端口,支持 1-65535、1,2,3、1-100,200-300 格式 ...
servicescan.ScanFromSpaceEngineScanFromSynResult / ScanFromSpaceEngine 从 synscan.Scan 或者 spacengine.Query 的结果中进行指纹识别 @param {interface{}} res synscan.Scan 或者 spacengine.Query 的结果 ...
servicescan.ScanFromSynResultScanFromSynResult / ScanFromSpaceEngine 从 synscan.Scan 或者 spacengine.Query 的结果中进行指纹识别 @param {interface{}} res synscan.Scan 或者 spacengine.Query 的结果 ...
servicescan.ScanOneScanOne servicescan 单体扫描,同步扫描一个目标,主机+端口 @param {string} target 目标地址 @param {int} port 端口 @param {ConfigOption} [opts] servicescan 扫描参数 @return {Ma...
servicescan.active
servicescan.all
servicescan.cachecache servicescan 的配置选项,设置本次扫描是否使用缓存 @param {bool} b 是否使用缓存 @return {ConfigOption} 返回配置项
servicescan.concurrentconcurrent servicescan 的配置选项,用于设置整体扫描并发 @param {int} size 并发数量 @return {ConfigOption} 返回配置项
servicescan.databaseCachedatabaseCache servicescan 的配置选项,设置本次扫描是否使用数据库缓存 @param {bool} b 是否使用数据库缓存 @return {ConfigOption} 返回配置项
servicescan.disableDefaultRule
servicescan.excludeHostsexcludeHosts servicescan 的配置选项,设置本次扫描排除的主机 @param {string} hosts 主机,支持逗号分割、CIDR、-的格式 @return {ConfigOption} 返回配置项
servicescan.excludePortsexcludePorts servicescan 的配置选项,设置本次扫描排除的端口 @param {string} ports 端口,支持逗号分割、-的格式 @return {ConfigOption} 返回配置项
servicescan.maxProbesmaxProbes servicescan 的配置选项,在主动模式发包的基础上设置本次扫描使用的最大探测包数量,默认值为 5 @param {int} m 最大探测包数量 @return {ConfigOption} 返回配置项
servicescan.maxProbesConcurrentmaxProbesConcurrent servicescan 的配置选项,设置本次扫描发送 Probe 的并发量,默认值为 5 @param {int} m 并发量 @return {ConfigOption} 返回配置项
servicescan.nmapRarityMaxnmapRarityMax servicescan 的配置选项,设置本次扫描使用的 Nmap 指纹稀有度,在主动模式发包的基础上进行探测控制 稀有度越大,表示这个服务在现实存在的可能性越小,取值范围为 1-9,默认值为 5 @param {int} rarity 稀有度,取值范围为 1-9 @...
servicescan.nmapRulenmapRule servicescan 的配置选项,设置本次扫描使用的 Nmap 指纹规则 @param {interface{}} i Nmap 指纹规则
servicescan.probeTimeoutprobeTimeout servicescan 的配置选项,设置每一个探测包的超时时间 @param {float64} f 超时时间,单位为秒 @return {ConfigOption} 返回配置项
servicescan.protoproto servicescan 的配置选项,用于指定扫描协议 @param {...interface{}} [proto] 协议,例如:tcp、udp,可选参数,不传入参数默认为 tcp @return {ConfigOption} 返回配置选项
servicescan.proxyproxy servicescan 的配置选项,设置本次扫描使用的代理 @param {string} proxies 代理地址,支持 http 和 socks5 @return {ConfigOption} 返回配置项
servicescan.service
servicescan.web
servicescan.webRulewebRule 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)

参数#

参数名参数类型参数解释
targetstring
portstring
opts...fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1chan *fp.MatchResult
r2error

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)

参数#

参数名参数类型参数解释
reschan *pingutil.PingResult
portsstring
opts...fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1chan *fp.MatchResult
r2error

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)

参数#

参数名参数类型参数解释
resany
opts...fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1chan *fp.MatchResult
r2error

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)

参数#

参数名参数类型参数解释
resany
opts...fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1chan *fp.MatchResult
r2error

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)

参数#

参数名参数类型参数解释
targetstring
portint
opts...fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1*fp.MatchResult
r2error

active#

详细描述#

定义#

active(raw bool) ConfigOption

参数#

参数名参数类型参数解释
rawbool

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

all#

详细描述#

定义#

all() fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1fp.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

参数#

参数名参数类型参数解释
bbool

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

参数#

参数名参数类型参数解释
sizeint

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

参数#

参数名参数类型参数解释
bbool

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

disableDefaultRule#

详细描述#

定义#

disableDefaultRule(b ...bool) fp.ConfigOption

参数#

参数名参数类型参数解释
b...bool

返回值#

返回值(顺序)返回值类型返回值解释
r1fp.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

参数#

参数名参数类型参数解释
hostsstring

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

参数#

参数名参数类型参数解释
portsstring

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

参数#

参数名参数类型参数解释
mint

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

参数#

参数名参数类型参数解释
mint

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

参数#

参数名参数类型参数解释
rarityint

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

nmapRule#

详细描述#

nmapRule servicescan 的配置选项,设置本次扫描使用的 Nmap 指纹规则 @param {interface{}} i Nmap 指纹规则

定义#

nmapRule(i any) ConfigOption

参数#

参数名参数类型参数解释
iany

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

参数#

参数名参数类型参数解释
ffloat64

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

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

返回值#

返回值(顺序)返回值类型返回值解释
r1fp.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

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption

service#

详细描述#

定义#

service() fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1fp.ConfigOption

web#

详细描述#

定义#

web() fp.ConfigOption

返回值#

返回值(顺序)返回值类型返回值解释
r1fp.ConfigOption

webRule#

详细描述#

webRule servicescan 的配置选项,设置本次扫描使用的 Web 指纹规则 @param {interface{}} i Web 指纹规则

定义#

webRule(rs ...any) ConfigOption

参数#

参数名参数类型参数解释
rs...any

返回值#

返回值(顺序)返回值类型返回值解释
r1ConfigOption