编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Python3 实现CMS识别

wxchong 2024-06-28 10:22:20 开源技术 15 ℃ 0 评论

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识别

  • 开学季祝大家学习生活皆都收获。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表