fscan 幻境梦游记
fscan 可能是国内最早最知名的内网端口扫描器之一了,最早知道这个扫描器是因为他的速度,比起 nmap 来说是真的快了不少。 听说 fscan2 快要出了,想到自己还没学习过鼎鼎有名的 fscan 的源码,略感惭愧。于是心血来潮决定来对比学习一下第一代 fscan 和即将发布的 fscan2 之间。 略有困意 我们先看看经典的老版本 fscan 吧,看看多年实战历练的代码是什么样子的。 这个项目结构很简洁啊,一眼望去可以看到 Plugins WebScan common main.go 没了,就这 4 个,大小写略有混乱无伤大雅,一眼望过去 common 就是我们的核心了,Plugins 明显是各种协议,设计成 Plugins 单独提出来,非常阳间,WebScan 是针对于 http 的一些专用探测和 poc,太简洁了,牛逼。 对的对的,那我们这就打开 common 看看吧,整体主逻辑肯定就在里面了跑不掉,非常符合我们的幻想啊,太棒了。 Parse.go ParseIP.goo ParsePort.go config.go flag.go log.go proxy.go 这对吗,我的 Scanner 呢? (沉默片刻) 或许我应该看看 main.go … func main() { start := time.Now() var Info common.HostInfo common.Flag(&Info) common.Parse(&Info) Plugins.Scan(Info) fmt.Printf("[*] 扫描结束,耗时: %s\n", time.Since(start)) } 原来 Scanner 的主逻辑也是一个 Plugins,super 插件化,狠狠插拔,一切皆为插件,我的我的,太兴奋了没有先看该看的东西。...