指纹库规范文档¶
一、目的¶
本文档旨在为P1finger的使用者提供清晰的指纹贡献指南,确保指纹库的质量和一致性,便于后续的维护和使用。
事实上,笔者诚恳的以为,各位技术超群的师傅看个示例就了解了,可直接跳到 示例指纹
部分
二、指纹结构要求¶
1. 基本字段¶
每个指纹必须包含以下基本字段:
- id:唯一标识符,用于区分不同的指纹。格式为小写字母和数字组合,长度不超过10个字符。
- name:指纹的名称,应简洁明了地描述该指纹对应的系统或技术。避免使用过于模糊或过于冗长的名称。
- author:提交指纹的作者标识,可以是用户名或团队名称。格式为P001water、TeamA等。
- description:对指纹的简要描述,说明该指纹用于识别的系统、技术或特征。
- tags:用于分类的标签,帮助快速筛选和定位指纹。
例如
- id: fortinetfortigatesslvpn
name: Fortinet-fortigate-SSLVPN
author: P1finger
description: FortiGate IPsec/SSL VPN 解决方案包括高性能加密VPN,https://www.fortinet.com/cn/resources/cyberglossary/ssl-vpn
tags:
- Fortinet-fortigate-SSLVPN
2. Mathers 匹配器字段¶
匹配器字段是P1finger进行指纹匹配的核心,Matchers字段支持多个匹配器
每个指纹必须包含至少一组匹配规则,用于识别目标系统。匹配规则分为以下三种类型:
- header:基于目标响应头内容的匹配规则。
- title:基于目标页面标题的匹配规则。
- body:基于目标响应体内容的匹配规则。
每种类型的匹配规则可以包含以下字段:
- location:匹配规则的类型,可选为
header
、body
、 或title
。 - words:包含一组关键字,用于在目标内容中搜索。关键字应为字符串,以
-
分隔,数量不建议超过10个。 - condition:指定关键字之间的逻辑关系,取值为
and
或or
。默认值为and
。
例如,一个指纹的规则分别在header和body都有匹配器
matchers:
- location: header
words:
- 'test'
- location: body
words:
- location="/remote/login"
- /remote/login?lang=
- top.location=window.location;top.location="/remote/login";
四、示例指纹¶
恭喜你直接来到了示例指纹部分,记得带上你的署名,我们会记录你的贡献。最后,期待你的指纹贡献或是宝贵的反馈
Nginx 产品的指纹示例:¶
- id: nginx
name: nginx
author: P1finger
description: nginx
tags:
- nginx
matchers:
- location: header
type: regex
words:
- '(?m)nginx(?:/([\d.]+))'
- location: body
words:
- '<title>Welcome to nginx!</title>'
淘宝-Tengine 产品的指纹示例¶
- id: tengine
name: 淘宝-Tengine-HttpServer
author: Fofa
description: Tengine是一个由淘宝核心系统开发部开发的HTTP服务器。Tengine基于Nginx 1.0.10开发,二者配置兼容。
tags:
- tengine
matchers:
- location: header
words:
- 'Server: Tengine'
condition: and