本文地址:https://blog.51cto.com/3chou/2491345
1、背景說明:
專線環境中有一套“Symantec Enpoint Protection Manager”(簡稱SEPM)軟件,由於不能訪問因特網,所以殺毒軟件定義包文件等,需要每日手動下載後,拷貝到SEPM所在的服務器上。
藉助於Python寫一個程序,每天定時的去下載這些定義包,等到上班後直接進行拷貝。
2、 環境準備:
本程序需要藉助於Python程序和一些軟件包。
2.1 Python軟件及IDE安裝
Python及IDE的安裝網上有很多,可以自行搜索,
2.2 Python庫安裝:
本程序需要另外安裝以下兩個庫:
名稱 | PyPI鏈接 | 說明 |
---|---|---|
requests | requests主頁 | URL訪問,文件下載 |
tqdm | tqdm主頁 | 模擬下載進度條顯示 |
安裝過程:
①、查看已安裝 Package:
# pip list
②、安裝 Package:
# pip install PackageName
2.3 IDE環境配置
Pycharm設置
打開PyCharm的環境設置(Configure>Settings),然後選擇“Project Interpreter”,再右側的“Project Interpreter”中選擇我們的Python環境,如果你只有一個默認環境,這個直接設置即可。
選擇了環境後,下方會加載出,此環境中已經安裝的軟件包
Visual Studio Code設置
需要先新建一個工作空間,然後通過快捷鍵“Ctrl + Shift + P”打開“命令選項板”,在其中輸入“python:select interpreter”,然後啓動“Python:選擇解釋器”,在已識別到的環境中,選擇我們需要的環境即可。
設置好解釋器後,會在工作區目錄下生成一個settings.json文件,裏面保存着Python環境相關信息。
新建一個Python文件,命名爲“SEPDefineDown.py”,在右面的編輯區就可以編輯代碼了。
3 編程前的網頁分析
Symantec被博通收購過後,網頁顯示的佈局沒有多大的變化。
定義包的下載鏈接爲:
SEPM12:https://www.broadcom.com/support/security-center/definitions/download/detail?gid=sep
SEPM14:https://www.broadcom.com/support/security-center/definitions/download/detail?gid=sep14
3.1 頁面顯示佈局分析
我們以SEPM14的頁面爲例進行分析,以獲取Windows 64-Bit平臺的定義包信息。
首先,頁面佈局爲:
根據需求,找出我們需要的內容爲:
我們需要獲取到SEPM14定義包有關的信息,包括:文件名稱、文件下載URL、文件的大小、文件的MD5值。
3.2 藉助開發者工具分析
我們在網頁中右擊,點擊“查看頁面源代碼”:
網頁的源代碼內容很少,沒有我們需要的信息。
打開瀏覽器的開發者模式(F12),然後按“F5”進行頁面內容的刷新,。
依次通過“網絡>XHR”監測頁面的XHR請求。這裏發現頁面加載了4個JSON文件,其中第四個JSON文件中包含我們需要的文件URL等信息。
3.3 JSON文件分析
JSON文件URL1:https://www.broadcom.com/pubdate/pubdate.json
JSON文件URL2:https://www.broadcom.com/api/navigation?locale=avg_en
JSON文件URL3:https://www.broadcom.com/api/v2/getmetadata?vanityurl=support/security-center/definitions/download/detail&locale=avg_en&lastpubdate=2020-04-28-11:15:29
JSON文件URL4:https://www.broadcom.com/api/getjsonbyurl?vanityurl=support/security-center/definitions/download/detail&locale=avg_en&updateddate=2020-04-28-10:22:44&gid=sep14
我們需要的內容在第四個JSON文件中,但是第四個JSON文件的URL中包含“updateddate”參數。
“locale”字段位於第二個JSON文件中,但是這個不是變化的,所以我們可以不用管。
“vanityurl”字段位於第三個JSON文件中,但是這個不是變化的,我們也可以不管。爲了程序的健壯性,編程的時候,可以把這兩個參數的值也用程序處理JSON內容獲取
我們對其他三個JSON文件的URL及文件的內容進行分析,可以發現“JSON文件URL4”中的“updateddate”字段內容位於“JSON文件3”的內容中,“JSON文件URL3”中的“lastpubdate”字段內容位於“JSON文件1”的內容中。
我們對第1、3、4個JSON的文件內容先進行分析。
第1個JSON文件包含“lastpubdate”內容,結構如下:
{
"content_id":"12345678910",
"content_type":"Page",
"lastpubdate":"2020-04-28-11:15:29",
"lastnavdate":"2020-04-28-06:10:51"
}
第3個JSON文件的結構:
{
……,
"updateddate":"2020-04-28-10:22:44",
……
}
第4個JSON文件的結構:
{
"groups":
{
"packages":
{……}
……
{
"id":"jdb_core3sds_package",
……
"file":
{"name":"jdb/core3sds/vd593617core3sds.jdb",
"_url_":"https://definitions.symantec.com/defs/jdb/core3sds/vd593617core3sds.jdb",
"ftp_url_":"http://definitions.symantec.com/defs/jdb/core3sds/vd593617core3sds.jdb",
"created_date":"4/28/2020",
"release_date":"4/28/2020",
"size":"54.21 MB",
"md5":"6654672CC5BAC2AD0ED9E383FFFC0F81",
"md5_url_":"security-response/glossary",
"md5_all_url":"https://www.broadcom.com/avcenter/download/md5-hash.txt"
}
}
}
後面可以通過編程對JSON文件進行處理(Python有個內置的JSON文件處理庫),得到我們需要的URL等信息,之後再進行下載等操作。
利用Python進行SEPM virus definition自動下載:(二)代碼實現
https://blog.51cto.com/3chou/2491348