goWhatweb 指纹识别

华盟原创文章投稿奖励计划

goWhatweb 指纹识别 

go语言编写的指纹识别,指纹数据1800 ,大量指纹跑完需要花费大量时间,用go的目的是尽可能的节省时间(单机上)和尽可能的发挥最大效率。
Useage

  • ./goWhatweb test.txt

  • 目录下goWhatweb是在MAC下编译好的

  • 但是根据go的特性,可以静态编译成二进制运行到任何平台

Some thinking
- 如何快速识别指纹?
    1. 为指纹添加更多的筛选条件,如php|asp|aspx类指纹
    2. 基于决策的指纹识别,每次决策增加一定权值

这当然会在'一定程度'上提高识别效率,但是却要收集到更多的指纹。对于不想如此大费周章的懒人来说(比如我),最好的优化效率方法就是”爆破“的方式,在提升程序运行的速度上进行改进。对于目前的1800 指纹,我认为单纯的增加筛选条件也?并不会比”纯爆破“类型强很多。

Feature&&Checklist

  • 内存加载指纹,在内存中对每个指纹的命中率进行统计,优先使用命中率高的指纹。(就是对排序数组中的路径hash做一次位置替换)

  • 根据统计,指纹可能达到了1800 ,累计访问路径会达到1600,如果访问一个不知名的cms至少会请求1600 次,减少请求&提高效率的方法:

    • 判断网站连通性,在请求之前,会访问一次首页,存储时间间隔来用于下一部判断,若时间间隔较长,则取消该次请求,标记该URL失败原因为“请求首页时间间隔过长”

    • 优先使用命中率高的指纹,其次是排序(同一个访问地址有不同的cms指纹情况)中较高的指纹,在识别成功后立即关闭其他请求。

    • 优先使用head请求,head为200才会进行下一步get请求。

    • 每发包200次会随机延时片刻,在请求首页是否正常,若不正常则延时更大片刻,延时超过1分钟则取消该URL其他请求,标记该URL失败原因为“请求量过大 {}次请求后网页无法访问”

    • 将请求UA伪装为随机爬虫

    • WAF识别,识别到WAF后,自动减缓发包频率

    • 针对单个URL的并发默认会达到7次(同时针对该URL的GET请求7个),当有waf时,这个数值为1

    • 单个URL超时次数超过阈值(默认200),则该URL整个响应请求暂停,标记失败原因为"超时次数过多"

  • 上述针对单个URL的指纹识别可能无法发挥机器的最大效率,所以设计上goWhatweb对多个URL同时进行指纹分析,并执行上述规则,每个URL的指纹分析是独立的,互不干扰的。所以,更多的URL会将机器的性能和宽带性能发挥到最大。

文章来源:

https://github.com/boy-hack/goWhatweb

本文原创,作者:congtou,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/253324.html

发表评论