Python 实现discuz识别
- 思路
1.获取cms指纹库
2.requests库请求url,根据response content md5 判断cms
3.cms指纹库:https://gitee.com/moke_2_0/moke/blob/master/cmsprint.json
- 操作
# 单线程实现
import requests
import hashlib
import json
import time
# read json data
cms =[]
def read_json():
f = open(r"cmsprint.json","r",encoding='utf-8')
cms_s = json.load(f)
for x in cms_s:
#print(x)
cms.append(x)
def cms_url(url):
for i in cms:
url_r = url + i['staticurl']
#print(url_r)
try:
res = requests.get(url=url_r,timeout=2)
#print(res.content)
md5 = hashlib.md5(res.content).hexdigest()
if md5==i['checksum']:
print(url_r)
print("CMS版本:%s" %i['cmsname'])
break
except:
pass
def main():
start_time =time.time()
url = "https://open.dismall.com"
read_json()
cms_url(url)
end_time = time.time()
print('总共用时{:.2f}秒'.format(end_time-start_time))
if __name__ =="__main__":
main()
# 多线程实现
import requests
import hashlib
import json
import threading
import time
# read json data
cms =[]
lock = threading.Lock()
threads =[]
def read_json():
f = open(r"cmsprint.json","r",encoding='utf-8')
cms_s = json.load(f)
for x in cms_s:
#print(x)
cms.append(x)
def req(url_r,cms_i):
try:
res = requests.get(url=url_r,timeout=2)
#print(res.content)
md5 = hashlib.md5(res.content).hexdigest()
with lock:
if md5==cms_i['checksum']:
print(url_r)
print("CMS版本:%s" %cms_i['cmsname'])
return
else:
pass
except:
pass
def cms_url(url):
for i in cms:
url_r = url + i['staticurl']
t = threading.Thread(target=req,args=(url_r,i))
threads.append(t)
t.start()
for t in threads:
t.join()
def main():
url = input("请输入主机域名(如http://www.baidu.com/):")
if url[-1] == '/':
url = url[:-1]
start_time = time.time()
read_json()
cms_url(url)
end_time = time.time()
print('识别完毕总共用时{:.2f}秒'.format(end_time-start_time))
if __name__ =="__main__":
main()
- 单线程多线程执行对比
# 多线程
moke@moke:~/cmsprint$ python3 cms_thread.py
https://open.dismall.com/static/image/admincp/logo.gif
CMS版本:discuz
识别完毕总共用时44.22秒
# 单线程
moke@moke:~/cmsprint$ python3 cms.py
https://open.dismall.com/static/image/admincp/logo.gif
CMS版本:discuz
总共用时119.64秒
# 多线程dedecms
moke@moke:~/cmsprint$ python3 cms_thread.py
请输入主机域名(如http://www.baidu.com):http://www.dedecms.com/
http://www.dedecms.com/uploads/userup/index.html
CMS版本:dedecms
http://www.dedecms.com/member/templets/images/login_logo.gif
CMS版本:dedecms
http://www.dedecms.com/uploads/userup/index.html
CMS版本:dedecms
http://www.dedecms.com/plus/img/wbg.gif
CMS版本:dedecms
http://www.dedecms.com/member/images/member.gif
CMS版本:dedecms
识别完毕总共用时23.13秒
实现了967种 CMS识别
- 开学季祝大家学习生活皆都收获。
本文暂时没有评论,来添加一个吧(●'◡'●)