当前位置: 首页 > news >正文

挖src实用脚本开发(二)

文章目录

    • 技术原理
    • 代码实现一
    • 代码实现二
    • 总结

这篇文章记录cms识别脚本。

技术原理

1.使用在线平台识别,比如whatcms,fofa等
2.自己写脚本识别,但是指纹库麻烦,需要耗费大量精力

代码实现一

这里我使用的是whatcms接口,可以免费每个月使用1000次。需要自己申请key。也可以用别的接口。

from prettytable import PrettyTable

from config import apikey_cms
import requests

def cms(domain):
    if apikey_cms=="None":
        print("no apikey for whatcms")
        return None
    api_url = f"https://whatcms.org/API/Tech?key={apikey_cms}&url={domain}"
    response = requests.get(api_url)
    # print(response.text)
    # 检查响应状态码是否为 200 (OK)
    if response.status_code == 200:
        data = response.json()
        if data['results'] != []:
            tech_table = PrettyTable()
            tech_table.field_names = ["技术名称", "版本", "类别", "更多信息"]
            # 提取技术栈数据并添加到表格中
            for tech in data['results']:
                tech_table.add_row([
                    tech['name'],
                    tech['version'] if tech['version'] else 'N/A',
                    ', '.join(tech['categories']),
                    f"https:{tech['url']}"  # 拼接完整的 URL
                ])
            # 打印技术栈表格
            print("技术栈信息:")
            print(tech_table)
        else:
            print("未识别到cms信息")
        if data['meta'] != []:
            # 创建 PrettyTable 对象来存储社交媒体数据
            social_table = PrettyTable()
            # 设置列名
            social_table.field_names = ["社交网络", "URL", "个人资料"]
            # 提取社交媒体数据并添加到表格中
            for social in data['meta']['social']:
                social_table.add_row([
                    social['network'],
                    social['url'],
                    social['profile']
                ])
            # 打印社交媒体表格
            print("\n社交媒体信息:")
            print(social_table)
        else:
            print("未识别到社交信息")
    else:
        print(f"请求失败,状态码:{response.status_code}")

if __name__ == '__main__':
    cms("http://eci-2zea2431utbdaijiw30l.cloudeci1.ichunqiu.com/")

这里我采用一道靶场为例:
在这里插入图片描述

代码实现二

自己使用指纹库识别,收集特征文件的md5值,然后访问文件比对md5值。

def cms_cms(url):
    cms_json = open("../fingers/cms/fingers_simple.json", "r", encoding="utf-8")
    cms_data = json.load(cms_json)
    for i in cms_data["data"]:
        print(i)
        if i["path"]!="":
            respon = requests.get(url+i["path"])
            if str(respon) == "<Response [200]>":
                md5_1 = hashlib.md5()
                md5_1.update(respon.content)
                hash_key = md5_1.hexdigest()
                if hash_key ==i["match_pattern"]:
                    print(i["cms"])
                    return i["cms"]

指纹库如下这种(自己在网上收集):

{
    "data": [
        {
            "cms": "\u4e94\u6307cms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf",
            "file_type": "css",
            "type": "md5",
            "match_pattern": "5fed1213ff84fad23770feb545d0bb18",
            "path": "/res/member/css/member.css",
            "uptime": "2020-07-20 15:22"
        },
        {
            "cms": "\u4e94\u6307cms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf",
            "file_type": "css",
            "type": "md5",
            "match_pattern": "5d5357cb3704e1f43a1f5bfed2aebf42",
            "path": "/res/member/css/bootstrap.min.css",
            "uptime": "2020-07-20 15:22"
        },
        {
            "cms": "\u4e94\u6307cms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf",
            "file_type": "css",
            "type": "md5",
            "match_pattern": "f392e44a01b4e725a0721c791b628107",
            "path": "/res/member/css/login.css",
            "uptime": "2020-07-20 15:22"
        },
}        

总结

对于cms识别如果自己没有大量时间建议使用在线cms识别。

浏览器插件: wappalyzer
whatcms
云悉
fofa,360quake等

指纹库:

自己去github上面找,然后自己针对经常遇到的cms进行收集,制作自己的指纹库。

相关文章:

  • 命名管道通信和共享内存通信
  • 【开源】低代码 C++程序框架,Linux多线程程序
  • 欧拉动力学方程的推导(持续更新)
  • 第十四届蓝桥杯:DFS之飞机降落
  • Java 大视界 -- Java 大数据中的时间序列数据异常检测算法对比与实践(103)
  • Joycon-Robotics库的安装报错解决记录
  • Hadoop简介
  • 【朝夕教育】《鸿蒙原生应用开发从零基础到多实战》003-TypeScript 中的类
  • 转化率(漏斗分析)——mysql计算过程
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)
  • DDD该怎么去落地实现(4)多对多关系
  • PyTorch的.pt文件详解
  • 进程间通信(中)
  • 计算机科学技术领域的内卷现状与应对措施分析
  • 【软考-架构】备战2025软考
  • L2-005 集合相似度
  • 【EI/IEEE/Scopus检索】智能电网、AI与算法领域国际会议重磅来袭!学术探索的征程从未停歇!
  • Ubuntu20.04安装Redis
  • Scrapy:_RequestBodyProducer 类详解
  • 散列加载描述文件
  • 证监会副主席李明:近期将出台深化科创板、创业板改革政策措施
  • 调查:“网约摩的”上线起步价五六元,合规性及安全性引质疑
  • 梅花奖在上海|秦海璐:演了15年《四世同堂》,想演一辈子
  • 山东发布高温橙警:预计19日至21日局地可达40℃
  • 美国考虑让移民上真人秀竞逐公民权,制片人称非现实版《饥饿游戏》
  • 美国失去最后的AAA主权评级,继标普、惠誉后再遭穆迪降级