0x00 前言本文將要介紹Zimbra版本探測的多種方法,通過Python實現自動化,記錄開發細節,開源代碼。
0x01 簡介本文將要介紹以下內容:
實現思路
實現細節
開源代碼
0x02 實現思路查看Zimbra版本的方法有很多,各有優缺點,具體方法如下:
1.通過Web管理頁面通過瀏覽器訪問7071管理頁面,在主頁面會顯示當前Zimbra版本
例如我的測試環境顯示為:
Zimbra Version: 9.0.0_GA_4273.NETWORK
通過該方法獲得的版本為準確版本
2.通過執行命令
注:
Zimbra補丁更新可參考:
https://wiki.zimbra.com/wiki/Zimbra_Releases/9.0.0/patch_installation
3.通過Zimbra SOAP API默認配置下,zimbraSoapExposeVersion屬性為FLASE,查詢命令:
返回結果:
需要將zimbraSoapExposeVersion屬性設置為TRUE後,可以通過Zimbra SOAP API獲得版本,修改屬性的命令為:
發送的SOAP格式示例:
默認配置下的返回結果:
4.通過imap協議
5.通過imap over ssl協議
6.通過特定url
0x03 實現細節綜合以上探測方法,為了適應多種環境,在程序實現上選取了通過imap協議、通過imap over ssl協議和通過特定url三種方法實現
1.通過imap協議完整示例代碼:
2.通過imap over ssl協議需要將ip轉為hostname作為參數,示例代碼:
完整示例代碼:
存在部分環境無法將ip轉為hostname,導致報錯:[Errno 11004] host not found,所以在程序判斷邏輯上優先使用imap協議
3.通過特定url完整示例代碼:
0x04 開源代碼完整的實現代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_GetVersion.py
代碼首先嘗試通過特定url獲得版本信息,再通過imap協議讀取版本信息,如果失敗,最後通過imap over ssl協議讀取版本信息
0x05 小結本文介紹了Zimbra版本探測的多種方法,比較優缺點,選取有效的方法並通過Python實現自動化,記錄開發細節,開源代碼,作為一個很好的學習示例。
Recommended Comments