WHCSRL 技术网

web指纹识别笔记

web指纹识别笔记

指纹识别分类表

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

指纹识别脚本介绍

指纹分类表结构介绍

{
    "分类编号": {
        "name": "分类名字",
        "desc": "分类描述"
    },
    。。。
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

指纹规则表结构介绍

headers.json,html.json,title.json

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

指纹识别代码逻辑介绍

  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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
推荐阅读