Home

Awesome

webanalyzer rules

Build Status

通用的指纹识别规则

规则编写

基础信息

例子:

{
    "name": "wordpress",
    "author": "fate0",
    "version": "0.1.0",
    "description": "wordpress 是世界上最为广泛使用的博客系统",
    "website": "http://www.wordpress.org/",
    "matches": [],
    "condition": "0 and (1 and not 2)",
    "implies": "PHP",
    "excludes": "Apache"
}

描述:

FIELDTYPEDESCRIPTIONEXAMPLEREQUIRED
namestring组件名称wordpresstrue
authorstring作者名fate0false
versionstring插件版本0.1.0false
descriptionstring组件描述wordpress 是世界上最为广泛使用的博客系统false
websitestring组件网站http://www.wordpress.org/false
matchesarray规则[{"regexp": "wordpress"}]true
conditionstring规则组合条件0 and (1 and not 2)false
impliesstring/array依赖的其他组件PHPfalse
excludesstring/array肯定不依赖的其他组件Apachefalse

规则信息

例子:

[
    {
        "name": "rule name"
        "search": "all",
        "text": "wordpress"
    }
]

描述:

FIELDTYPEDESCRIPTIONEXAMPLE
namestring规则名称rulename
searchstring搜索的位置,可选值为 all, headers, title, body, script, cookies, headers[key], meta[key], cookies[key]body
regexpstring正则表达式wordpress.*
textstring明文搜索wordpress
versionstring匹配的版本号0.1
offsetintregexp 中版本搜索的偏移1
certaintyint确信度75
md5string目标文件的 md5 hash 值beb816a701a4cee3c2f586171458ceec
urlstring需要请求的 url/properties/aboutprinter.html
statusint请求 url 的返回状态码,默认是 200400

返回信息

例子:

[
    {
        "name": "4images",
        "version": "1.1",
        "certainty": 100,
        "origin": "custom"
    }
]

描述:

FIELDTYPEDESCRIPTIONEXAMPLEREQUIRED
namestring组件名称wordpresstrue
versionstring插件版本0.1.0false
certaintyint确信度75false
originstring插件来源customfalse

检测逻辑

Q & A

可以看下 tools/whatweb.rb 代码,实际上我这并没有成功转换全部规则,依旧有部分 passive, aggressive 函数规则以及其他规则并没去转换,不过成功转换比例占大多数

可以看下 tools/wappalyzer.py 代码,因为 Wappalyzer 的规则本来就是 json 格式,所以比较容易转换,但是依旧有部分字段我没有保留在我的规则中

更通用,即便更换编程语言,也可以继续复用本来的规则

可以看下 .travis.yml,通过 travis-ci 达到每天自动同步规则

因为 WhatWeb 就是 GPL-2.0,虽然规则没有直接使用 WhatWeb 本身的规则,但是我们的规则是通过 WhatWeb 转换过来的,虽然不确定会不会传染,为了保险起见就设置成和 WhatWeb 一样的 License

引用