启明星辰规则库下载

启明星辰规则库下载

一、脚本介绍

1、背景介绍

因为项目上有启明星辰的安全设备、并且在内网无法直接连接互联网进行在线升级,必须使用离线升级模式,下载规则库升级,每月一更有点繁琐,所以写了这个b脚本,偷懒一下,不喜勿喷

2、下载列表

  • 天清汉马USG防火墙(T系列):APP特征库、入侵防御特征库、URL分类库升级包、防病毒特征库、Web应用防护特征库
  • 超融合检测探针(CS PLUS)CS7070 SP5及以上版本:事件库
  • 天清Web应用安全网关 WAF:事件库
  • 天清入侵防御系统:入侵防御特征库、安天病毒特征库

二、脚本代码

1、代码展示

# -*- coding: UTF-8 -*-
"""
# @当前项目: python
# @当前脚本: 启明星辰规则库下载
# @创建者: Sword
# @时间: 2025/02/19 13:21
# @脚本说明: 
"""
import requests
import os
from datetime import datetime
import warnings
from urllib3.exceptions import InsecureRequestWarning

# 禁用 InsecureRequestWarning 警告
warnings.simplefilter('ignore', InsecureRequestWarning)

# 定义代理(如果需要的话)
proxies = {"https": "http://127.0.0.1:8080", "http": "http://127.0.0.1:8080"}


def get_version(url):
    """获取最新版本的下载链接"""
    try:
        response = requests.get(url, verify=False)
        response.raise_for_status()  # 如果响应状态码是 4xx 或 5xx 会抛出异常
        version_json = response.json()
        version_url = version_json['data'][0]['downloadLink']
        return version_url
    except requests.RequestException as e:
        print(f"请求失败: {e}")
        return None


def get_document(url, file_path):
    """下载文件并保存到指定路径"""
    if url is None:
        print(f"无法下载,URL 为空: {file_path}")
        return

    try:
        response = requests.get(url, verify=False)
        response.raise_for_status()  # 同样进行状态码检查
        # 保存文件
        with open(file_path, "wb") as file:
            for chunk in response.iter_content(chunk_size=8192):
                file.write(chunk)
        print(f"文件已成功下载并保存为 '{file_path}'.")
    except requests.RequestException as e:
        print(f"下载失败: {e}")


def get_time():
    """获取当前系统时间"""
    return datetime.now().strftime('%Y%m%d')


def create_folder(folder_path):
    """创建文件夹(如果不存在的话)"""
    if not os.path.exists(folder_path):
        os.makedirs(folder_path)


def download_product_data(company_name, product_name, sub_product_name, url, base_folder):
    """下载产品数据并保存为指定格式"""
    time = get_time()
    # 创建文件夹
    folder_path = os.path.join(base_folder, time, company_name, product_name)
    create_folder(folder_path)

    # 构建文件路径
    file_name = f"{sub_product_name}.zip"
    file_path = os.path.join(folder_path, file_name)

    # 获取下载链接并保存文件
    document_url = get_version(url)
    get_document(document_url, file_path)


if __name__ == '__main__':
    # 要下载到的目录
    dz = r"D:\desktop\特征库升级\\"
    # 产品及其对应的 URL 和公司名称
    products = [
        ("启明星辰", "天清汉马USG防火墙(T系列)", "APP特征库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=18&page=1&pageSize=10"),
        ("启明星辰", "天清汉马USG防火墙(T系列)", "入侵防御特征库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=17&page=1&pageSize=10"),
        ("启明星辰", "天清汉马USG防火墙(T系列)", "URL分类库升级包",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=19&page=1&pageSize=10"),
        ("启明星辰", "天清汉马USG防火墙(T系列)", "防病毒特征库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=20&page=1&pageSize=10"),
        ("启明星辰", "天清汉马USG防火墙(T系列)", "Web应用防护特征库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=79&page=1&pageSize=10"),
        ("启明星辰", "超融合检测探针(CS PLUS)CS7070 SP5及以上版本", "事件库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=138&page=1&pageSize=10"),
        ("启明星辰", "天清Web应用安全网关 WAF", "事件库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=29&page=1&pageSize=10"),
        ("启明星辰", "天清入侵防御系统", "入侵防御特征库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=169&page=1&pageSize=10"),
        ("启明星辰", "天清入侵防御系统", "安天病毒特征库",
         r"https://venustech.download.venuscloud.cn:443/upgradecenter/main/getPackages?fourthProductId=170&page=1&pageSize=10")
        # 添加其他产品
    ]

    # 遍历进行下载
    for company_name, product_name, sub_product_name, url in products:
        download_product_data(company_name, product_name, sub_product_name, url, dz)

2、脚本说明

如果需要其他的规则库升级的话可以按照代码中的products list进行添加也是可以的

三、结果展示

1、运行展示

image-20250219140952867

2、成果展示

image-20250219141700125

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值