利用Python進行SEPM virus definition自動下載:(一)環境準備及頁面分析

本文地址: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

 pip list

②、安裝 Package:

# pip install PackageName

pip install PackageName

2.3 IDE環境配置

Pycharm設置

 打開PyCharm的環境設置(Configure>Settings),然後選擇“Project Interpreter”,再右側的“Project Interpreter”中選擇我們的Python環境,如果你只有一個默認環境,這個直接設置即可。

利用Python進行SEPM virus definition自動下載:(一)環境準備及頁面分析

 選擇了環境後,下方會加載出,此環境中已經安裝的軟件包

利用Python進行SEPM virus definition自動下載:(一)環境準備及頁面分析

Visual Studio Code設置

 需要先新建一個工作空間,然後通過快捷鍵“Ctrl + Shift + P”打開“命令選項板”,在其中輸入“python:select interpreter”,然後啓動“Python:選擇解釋器”,在已識別到的環境中,選擇我們需要的環境即可。

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"
}

第1個JSON文件結構

第3個JSON文件的結構:

{
        ……,
        "updateddate":"2020-04-28-10:22:44",
        ……
}

第3個JSON文件結構

 第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"
                                            }
                            }
            }

第4個JSON文件結構

 後面可以通過編程對JSON文件進行處理(Python有個內置的JSON文件處理庫),得到我們需要的URL等信息,之後再進行下載等操作。

利用Python進行SEPM virus definition自動下載:(二)代碼實現
https://blog.51cto.com/3chou/2491348

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章