Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[学习GO] go语言写的web指纹识别 - Identify websites by go language

Notifications You must be signed in to change notification settings

boy-hack/goWhatweb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

17 Commits

Repository files navigation

goWhatweb

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

Useage

  • ./goWhatweb test.txt
  • 目录下goWhatweb是在MAC下编译好的
  • 但是根据go的特性,可以静态编译成二进制运行到任何平台

Some thinking

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

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

Feature&&Checklist

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

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

    1. 判断网站连通性,在请求之前,会访问一次首页,存储时间间隔来用于下一部判断,若时间间隔较长,则取消该次请求,标记该URL失败原因为"请求首页时间间隔过长"
    2. 优先使用命中率高的指纹,其次是排序(同一个访问地址有不同的cms指纹情况)中较高的指纹,在识别成功后立即关闭其他请求。
    3. 优先使用head请求,head为200才会进行下一步get请求。
    4. 每发包200次会随机延时片刻,在请求首页是否正常,若不正常则延时更大片刻,延时超过1分钟则取消该URL其他请求,标记该URL失败原因为"请求量过大 {}次请求后网页无法访问"
    5. 将请求UA伪装为随机爬虫
    6. WAF识别,识别到WAF后,自动减缓发包频率
    7. 针对单个URL的并发默认会达到7次(同时针对该URL的GET请求7个),当有waf时,这个数值为1
    8. 单个URL超时次数超过阈值(默认200),则该URL整个响应请求暂停,标记失败原因为"超时次数过多"
  3. 上述针对单个URL的指纹识别可能无法发挥机器的最大效率,所以设计上goWhatweb对多个URL同时进行指纹分析,并执行上述规则,每个URL的指纹分析是独立的,互不干扰的。所以,更多的URL会将机器的性能和宽带性能发挥到最大。

About

[学习GO] go语言写的web指纹识别 - Identify websites by go language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

Languages

AltStyle によって変換されたページ (->オリジナル) /