web指纹识别笔记

web指纹识别笔记

指纹识别分类表

分类编号 分类名称 中文名称 备注说明
1 CMS 内容管理系统 例如:wordperss
2 Message Boards 留言板 例如:phpBB
3 Database Managers 数据库管理 例如:phpMyAdmin
4 Documentation Tools 文件工具 例如:GitBook
5 Widgets 窗口小部件 例如:Facebook
6 Ecommerce 电子商务 例如:Wikinggruppen
7 Photo Galleries 照片画廊 例如:phpAlbum
8 Wikis 维基百科 例如:ikiwiki
9 Hosting Panels 主机控制板 例如:cPanel
10 Analytics 分析统计 例如:Webtrends
11 Blogs 博客 例如:Typecho
12 JavaScript Frameworks JavaScript框架 例如:SoundManager
13 Issue Trackers 问题跟踪 例如:Redmine
14 Video Players 视频播放器 例如:Asciinema
15 Comment Systems 评论系统 例如:Question2Answer
16 Captchas 验证码 例如:Mollom
17 Font Scripts 字体脚本 例如:Ionicons
18 Web Frameworks Web框架 例如:Includable
19 Miscellaneous 其他 例如:Twitter Emoji(Twemoji)
20 Editors 编辑器 例如:FrontPage
21 LMS 学习管理系统 例如:Dokeos
22 Web Servers Web服务 例如:Apache
23 Cache Tools 缓存工具 例如:wpCache
24 Rich Text Editors 富文本编辑器 例如:TinyMCE
25 JavaScript Graphics JavaScript图形插件 例如:Timeplot
26 mobile Frameworks 移动框架 例如:Mobify
27 Programming Languages 开发语言 例如:Go
28 Operating Systems 操作系统 例如:Gentoo
29 Search Engines 搜索引擎 例如:Fact Finder
30 Web Mail Web邮件 例如:SouirrelMail
31 CDN CDN 例如:Netlify
32 Marketing Automation 自动化营销 例如:Marketo
33 Web Server Extensions Web服务器扩展 例如:mod wsgi
34 Databases 数据库 例如:Mysql
35 Maps 地图 例如:Ushahidi
36 Advertising Networks 广告网络 例如:Titan
37 Network Devices 网络设备 例如:Moxa
38 Media Servers 媒体服务器 例如:MedisTomb
39 Webcams 网络摄像头 例如:MOBOTIX
40 Printers 打印机 例如:Dell
41 Payment Processors 付款处理器 例如:Stripe
42 Tag Managers 标签管理 例如:Google Tag Manager
43 Paywalls 付费 例如:Piano Solo
44 Build CI Systems 持续集成系统 例如:Jenkins
45 Control Systems 控制系统 例如:Schneider
46 Remote Access 远程访问 例如:ShellInABox
47 Dev Tools 开发工具 例如:Phabricator
48 Network Storage 网络存储 例如:Synology DiskStation
49 Feed Readers Feed阅读器 例如:Planet
50 Document Management Systems 文档管理系统 例如:MHonArc
51 Landing Page Builders 引导页 例如:ApexPages
52 Live Chat 在线聊天 例如:Aircall
53 CRM 客户关系管理 例如:Salesforce
54 SEO 引擎优化 例如:Yoast SEO
55 Accounting 会计 例如:Akaunting
56 Cryptominer 挖矿程序 例如:ProjectPoi
57 Static Site Generator 静态网站生成器 例如:Hugo
58 User Onboarding 聊天机器人软件 例如:instabot
59 JavaScript Libraries JavaScript库 例如:jQuery
60 Containers 容器 例如:Docker
61 SaaS SaaS 例如:Amazon ECS
62 PaaS PaaS 例如:Amazon Web Services
63 IaaS IaaS 例如:LocalFocus
64 Reverse Proxy 反向代理 例如:Nginx
65 Load Balancer 负载均衡 例如:Amazon ELB
66 Service Banner 服务版本 例如:SSH
67 Securities Web 证券行业web 例如:thinkive云投顾
68 Securities Remote Access 证券行业远程访问 例如:同花顺

指纹识别规则表

字段 说明
name 指纹名字
cats 分类集合,列表内嵌套字符串类型的分类编号
icon 指纹ico的MD5值
implies 包含,列表内嵌套字符串类型的指纹名字,例如:存在wordpress,一定会存在php、mysql
excludes 排除,列表内嵌套字符串类型的指纹名字,例如:当前指纹存在时,一定不会存在其他指纹
website 匹配软件官方网站,text代表文本匹配,regex代表re匹配
title 匹配页面标题,text代表文本匹配,regex代表re匹配
js 匹配scripts标签中的内容,text代表文本匹配,regex代表re匹配
headers 匹配response返回的请求头信息,text代表文本匹配,regex代表re匹配
html 匹配html返回内容,text代表文本匹配,regex代表re匹配
url 匹配网页中所有url的数据,text代表文本匹配,regex代表re匹配
cookies 匹配cookie内容,text代表文本匹配,regex代表re匹配
meta 匹配meta标签中的参数的数据,text代表文本匹配,regex代表re匹配
script 匹配script标签导入的路径地址,text代表文本匹配,regex代表re匹配
sub_param 匹配response返回的请求头的子参数信息,text代表文本匹配,regex代表re匹配
_fingerprint_note 当前指纹的应用描述,比如nginx,Nginx是一个高性能的HTTP和反向代理web服务器
_fingerprint_test_url 测试指纹是否准确的url,必填项
{
     
    "name": "jquery",
    "cats": [59],
    "icon": "e33ee4e794a2a92ebfaa0c569cc88103",  # 图标的MD5"implies": "javaScript",
	"excludes": "javaScript",
    "website": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"title": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"js": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"headers": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"html":{
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"url": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"cookies": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"meta": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"script": {
     "text": "//api.jquery.com" or "regex": "//api.jquery.com"},
	"sub_param": {
     
        "Server": {
     
            "text": "//api.jquery.com" or "regex": "//api.jquery.com"
        }
    },
	"_fingerprint_note": "jQuery是一个快速、小且功能丰富的JavaScript库。",
	"_fingerprint_test_url": "https://jquery.com/",
}

指纹识别脚本介绍

指纹分类表结构介绍

{
     
    "分类编号": {
     
        "name": "分类名字",
        "desc": "分类描述"
    },
    。。。
}

指纹规则表结构介绍

headers.json,html.json,title.json

{
     
    "指纹名字": ["指纹规则""指纹权重(int类型)"]
    。。。
}

指纹识别代码逻辑介绍

  1. 获取指纹分类集合、headers规则集合、title规则集合、HTML规则集合
  2. 请求目标网址
  3. 获取请求头信息
  4. 对比请求头规则与内容
  5. 获取网站内容,并转化成DOM树结构对象
  6. 对比title规则与内容
  7. 去掉html中不需要的节点
  8. 对比html股则与内容
  9. 返回最终结果

对比方法代码记录

# 对比规则与内容
	@staticmethod
	def check_finger(item_list, string):
		"""
		对比规则与内容
		:param item_list: 规则集合
		:param string: 内容字符串
		:return: 结果集合,例如:{"jquery": 30}
		"""
		res_dict = {
     }
		for i in item_list.keys():
			# 一种同时存在与和或,一种只存在与,一种只存在或,一种文本
			if "(?=.*" in item_list[i][0] and '|' in item_list[i][0]:
				for j in item_list[i][0].split("|"):
					if "(?=.*" in j:
						list1 = re.findall(r"\*(.*?)\)", j)
						list2 = [j for j in re.findall(r"\(\?=\.\*(.*?)\)", j) if j in string] + \
								[j for j in re.findall(r"\(\?!=\.\*(.*?)\)", j) if j not in string]
						if len(list1) == len(list2):
							res_dict[i] = int(item_list[i][1])
					else:
						if j in string:
							res_dict[i] = int(item_list[i][1])
			elif "(?=.*" in item_list[i][0]:
				list1 = re.findall(r"\*(.*?)\)", item_list[i][0])
				list2 = [j for j in re.findall(r"\(\?=\.\*(.*?)\)", item_list[i][0]) if j in string] + \
						[j for j in re.findall(r"\(\?!=\.\*(.*?)\)", item_list[i][0]) if j not in string]
				if len(list1) == len(list2):
					res_dict[i] = int(item_list[i][1])
			elif '|' in item_list[i][0]:
				if re.search(item_list[i][0], string):
					res_dict[i] = int(item_list[i][1])
			elif item_list[i][0] in string:
				res_dict[i] = int(item_list[i][1])
		return res_dict

你可能感兴趣的:(python)