利用Python进行SEPM virus definition自动下载:(二)代码实现
2020-04-28 21:02
429 查看
利用Python进行SEPM virus definition自动下载:(一)环境准备及页面分析
https://blog.51cto.com/blogger/success/2491345
前面我们已经准备好了环境以及分析获取到了网页中我们想要的信息,本文我们来进行代码实现自动下载文件,并计算下载的文件的Hash值,然后和网页提供的Hash进行对比。
直接先上代码,后面有空再对代码进行一一说明。
# coding = utf-8 import requests from tqdm import tqdm import os import hashlib import json # 设置requests请求的头和代理 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0' } # 设置代理信息 proxy = { 'http':'0.0.0.0:xxxx', 'https':'0.0.0.0:xxxx' } print("正在获取文件信息JSON…") # 打印操作提醒 # 通过访问JSON文件进行处理,得到需要的参数值 # 访问第一个JSON文件,获得“lastpubdate”值 url1 = "https://www.broadcom.com/pubdate/pubdate.json" req1 = requests.get(url1, headers=headers) lastpubdate = json.loads(req1.text)['lastpubdate'] url2 = "https://www.broadcom.com/api/v2/getmetadata?vanityurl=support/security-center/definitions/download/detail&locale=avg_en&lastpubdate=" + lastpubdate # 访问第二个JSON文件,获得“updateddate”值 req2 = requests.get(url2, headers=headers) updateddate = json.loads(req2.text)['updateddate'] # 构造最终访问的URL url = "https://www.broadcom.com/api/getjsonbyurl?vanityurl=support/security-center/definitions/download/detail&locale=avg_en&updateddate=" +updateddate +"&gid=sep14" print("获取JSON文件URL成功,URL为:%s"%url) # 打印操作提醒 req = requests.get(url, headers=headers) # 不使用代理 # req = requests.get(url, headers=headers, proxies=proxy) # 使用代理 print("获取JSON内容成功") # 打印操作提醒 data = json.loads(str(req.text)) win_data = data['groups'][0]['packages'][6]['file'] Lin_data = data['groups'][1]['packages'][0]['file'] print("解析JSON内容成功") # 打印操作提醒 # print(type(win_data['name']),win_data['name'].split('/',2)[2]) # 字典中的文件名前面有“jdb/core3sds/”,通过字符串切割进行去除 win_data.update(name=win_data['name'].split('/', 2)[2]) # 切换当前路径到当前目录的父目录 # os.chdir(os.path.abspath(os.path.dirname(os.getcwd()))) # 下载Windows平台的定义包jdb文件 print("正在下载Windows平台定义包文件:", win_data['name'], "文件大小为:", win_data['size']) print("下载的定义包文件MD5值为:", win_data['md5']) r1 = requests.get(win_data['_url_'], stream=True) # 不使用代理 # r1 = requests.get(win_data['_url_'], stream=True, proxies=proxy) # 使用代理 with open(win_data['name'], "wb") as f1: for data in tqdm(r1.iter_content(chunk_size=512), desc="下载中"): # if data: f1.write(data) # 下载Linux平台的定义包sh文件 print("正在下载Linux平台定义包文件:", Lin_data['name'], "文件大小为:", Lin_data['size']) print("下载的定义包文件MD5值为:", Lin_data['md5']) r2 = requests.get(Lin_data['_url_'], stream=True) # 不使用代理 # r2 = requests.get(Lin_data['_url_'], stream=True, proxies=proxy) # 使用代理 with open(Lin_data['name'], "wb") as f2: for data in tqdm(r2.iter_content(chunk_size=512), desc="下载中"): f2.write(data) # 对Windows平台文件进行MD5值计算 sw_calc_md5 = hashlib.md5(open(win_data['name'], 'rb').read()).hexdigest() # 对比计算出的MD5值和网站提供的MD5值 if sw_calc_md5.upper() == win_data['md5']: print("\n hashlib计算出Windows平台的文件MD5值为%s\n此MD5值和网站提供的一致,可以直接使用 \n " % sw_calc_md5) else: print("\n error,计算的MD5值为%s,!=%s(网站提供的MD5值)\n " % (sw_calc_md5, win_data['md5'])) # 对Linux平台文件进行MD5值计算 sl_calc_md5 = hashlib.md5(open(Lin_data['name'], 'rb').read()).hexdigest() # 对比计算出的MD5值和网站提供的MD5值 if sl_calc_md5.upper() == Lin_data['md5']: print(" \n hashlib计算出Linux平台的文件MD5值为%s\n此MD5值和网站提供的一致,可以直接使用\n " % sl_calc_md5) else: print("\n error,计算的MD5值为%s,!=%s(网站提供的MD5值)\n " % (sl_calc_md5, Lin_data['md5']))
未完待续……
相关文章推荐
- 利用Spark-mllab进行聚类,分类,回归分析的代码实现(python)
- 在PyCharm的python项目中导入pip下载的包(利用代码自动生成导入外部包的pth文件)
- python 利用ftplib模块 实现ftp上传下载代码
- 利用Abaqus的Python脚本实现进行自动分析的方法
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载][续]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- 详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(1)
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载续][重点推荐控件]
- 利用动态创建层技术实现无冗余代码为表单自动添加错误提示
- 2、利用反射技术得到泛型类型,实现对实体添删改查操作进行代码重用设计
- Python实现多线程下载文件的代码实例
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- PHP中利用mysql进行访问统计的思路和实现代码
- 利用PHP安装windows自动运行的服务,PHP程序可以实现长时间、自动运行、定时更新功能,直接可以用在项目中的类源代码
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结
- 详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(5)
- Python实现的一个自动售饮料程序代码分享
- 干货!如何利用Photoshop CC进行自动切图和获取CSS代码
- js自动下载文件到本地的实现代码
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]