fscan
fscan copied to clipboard
对nmap-service-probes处理有问题
nmap-service-probes中match的的正则是Perl-style regular expression的,使用用go标准库处理nmap的match会有问题,可以把处理match的正则库改为"github.com/scorpionknifes/go-pcre",这个改完直接读取原始字符串就行,不需要使用DecodePattern处理match
对Probes的处理也有问题"它的格式类似于C或Perl字符串,因为它允许以下标准转义字符:\\ \0, \a, \b, \f, \n, \r, \t, \v和\xHH(其中H是任何十六进制数字)"(nmap文档中\\和\0之间不知道为什么没有逗号) 在fscan/Core/PortFinger.go中的DecodeData函数中把\0这种数据当成了8进制处理,会导致\0本应该是0结果返回\和0的acii值
if isOctalCode(match) {
octalNum := match[2:]
byteNum, err := strconv.ParseInt(string(octalNum), 8, 32)
if err != nil {
return match
}
return []byte{uint8(byteNum)}
}
这个的正则库不用改,把对8进制的匹配改成专门针对\0的就行了
收到,该部分源自影武者师傅的代码,已指派。