一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

利用Python寫收集Inform和Trap消息的服務(wù)器

 大傻子的文淵閣 2020-03-06

 一年前吧,因為這一年來,這個博客都還沒有來過,密碼都忘記了,剛找回來。

有個交換機的自動化工作也已經(jīng)開展起來,模塊也分下去了。其他模塊也就是使用Python開發(fā)即可,但是Rmon和SNMP模塊就遇到了不小的問題。程序如何抓取交換機Trap或者Inform的消息會成為這兩個模塊自動化成敗的關(guān)鍵。SNMPv1和SNMPv2c的Trap還好說,再不濟也可以通過抓包的方式解決。SNMPv2c或者SNMPv3的infrom都需要服務(wù)器有回應(yīng)報文。SNMPv3 Trap或者Infrom如果帶認證和加密的話,你通過抓包根本無法判定到底是因為什么原因的inform或者Trap。那么一個好用的Trap服務(wù)器就顯得尤為重要了,可能看到這里,大家有可能會說,去網(wǎng)上下載啊!

我只想說,如果下的到,也不錯,但是即使有類似于MIB Browser這種現(xiàn)成的工具在手,自動化也是無用的。因為它們一般是圖形化操作的,自動化對于帶GUI的軟件操作本就是個軟肋。所以基本不可行。那么自行研究與開發(fā)就勢在必行了。以下就是我從3月5日開始的研究結(jié)果以及個中心酸與大家做個分享。

網(wǎng)上有一個老外寫的名為pysnmp的庫,這個庫大家使用pip install都可以輕松地安裝。網(wǎng)上也有一個他們寫的Trap服務(wù)器的例子。那么第一步自然是照著例子依葫蘆畫瓢咯。把他們的代碼做了修改成一個類之后,一運行,喜出望外,SNMPv1和SNMPv2c的Trap消息都能夠正常接收了。類似于下圖這個樣子

利用Python寫收集Inform和Trap消息的服務(wù)器

然而,事情遠沒有想象中的簡單。我發(fā)現(xiàn)pysnmp的代碼庫中,我使用的這個模塊根本就沒辦法得知獲取到的Trap報文的版本。因為它的回調(diào)函數(shù)中傳入的參數(shù)是PDU,PDU你知道是什么吧,它在報文中的位置是在SNMP版本之后啊。也就是說在這個回調(diào)函數(shù)里面我們已經(jīng)看不到SNMP版本了的。沒辦法。而網(wǎng)上關(guān)于此問題的解答為0。網(wǎng)上所謂的pysnmp中文翻譯或者外文資料簡直是一無是處(本想用臟話的,算了。)?,F(xiàn)在想想,我當(dāng)時內(nèi)心還是很強大的,沒有放棄。

于是我準備通過修改pysnmp庫里面的代碼來解決這個問題。那如何解決呢?找到SNMP報文到底是在什么模塊中剝離出整個SNMP的消息體的?,F(xiàn)在看來可能貌似很輕松的樣子,當(dāng)時找起來可真沒那么簡單。最終通過各種定位手法,找到了在engine.py中有這個消息。于是我將整個消息體設(shè)置成了engine類的成員變量,方便我調(diào)用。

利用Python寫收集Inform和Trap消息的服務(wù)器

這樣我在我自己的代碼中用python msg_version = api.verdec.decodeMessageVersion(self.snmp_engine.whole_msg)就可以獲取到報文中的版本號了。至此,這個問題就得到解決了。

當(dāng)我將我們交換機的Trap上報配置成SNMPv3,并且?guī)дJ證加密的時候。這個時候啥都看不到,所以據(jù)初步觀察,應(yīng)該為加密的問題,為了驗證這個結(jié)論,我將交換機配置成SNMPv3只認證不加密。這個時候發(fā)現(xiàn)打印的PDU里面的內(nèi)容就正常了。所以進一步確認了這就是加密的問題。

那么接下來就是看一下這個問題出在哪里了。這個問題出在哪里了。怎么看呢?代碼跟讀是最好也是最笨的方式。依據(jù)自己寫的代碼,然后看到里面引用的一些函數(shù),然后在這些函數(shù)的開始和結(jié)尾分別添加打印信息。運行一次,如果頭尾的打印信息均出現(xiàn)了,說明問題不是出現(xiàn)在這個函數(shù)里面。如果后面的打印信息未出現(xiàn),將后面的打印信息往前移。如果發(fā)現(xiàn)在函數(shù)中引用的另外一個函數(shù)里面出錯,則如前面的步驟繼續(xù),如此循環(huán)往復(fù)。

最終被我發(fā)現(xiàn)了,它的加密方法是存在在它引用的一個mib節(jié)點變量中的。而這些mib文件因為目錄的關(guān)系無法引入。所以這里出現(xiàn)了錯誤。如下圖:

利用Python寫收集Inform和Trap消息的服務(wù)器

來這些文件按照代碼里面的邏輯應(yīng)當(dāng)是放在這個地方的,然而它放在了那個instance目錄中。所以導(dǎo)致它引入出錯。再次驗證之后,發(fā)現(xiàn)它仍然無法解密PDU,依據(jù)上面的方法繼續(xù)驗證。

還是通過上述的方法,最后找到了解密的地方,原來它一直返回DES對象為None。為什么會是None呢?原來是它try過濾了一下,如果引入失敗,則返回DES對象為None,那么自然解不了密了。于是我嘗試著使用它原本的名稱去網(wǎng)上下載該庫,最后發(fā)現(xiàn)這個庫根本無法使用pip install安裝,能安裝的是Crypto。于是我將此模塊安裝完畢,將加密解密模塊中原本的引入庫文件名稱全換成了這個。終于好了。

利用Python寫收集Inform和Trap消息的服務(wù)器

這個過程我花了三天時間,而且是在沒有任何人能夠提供指導(dǎo)意見的情況下,沒點毅力還真不行。有些路終歸是要一個人走的,走著走著也就會長大的,做技術(shù)就是這樣。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美激情一区二区亚洲专区| 亚洲天堂久久精品成人| 亚洲一区二区精品免费视频| 国产在线日韩精品欧美| 国产传媒一区二区三区| 人妻久久一区二区三区精品99| 欧美激情一区二区亚洲专区| 人妻少妇久久中文字幕久久| 国产精品香蕉免费手机视频| 偷拍洗澡一区二区三区| 色婷婷丁香激情五月天| 亚洲人妻av中文字幕| 国内胖女人做爰视频有没有| 亚洲av首页免费在线观看| 久久本道综合色狠狠五月| 欧美日韩亚洲国产精品| 国产老女人性生活视频| 中日韩美女黄色一级片| 精品一区二区三区中文字幕| 中文字字幕在线中文乱码二区| 国产情侣激情在线对白| 自拍偷拍一区二区三区| 国产在线成人免费高清观看av| 成人午夜视频在线播放| 观看日韩精品在线视频| 精品国产亚洲一区二区三区| 国产又黄又爽又粗视频在线| 在线欧洲免费无线码二区免费| 正在播放玩弄漂亮少妇高潮 | 成人你懂的在线免费视频| 97人妻精品一区二区三区男同| 午夜激情视频一区二区| 欧美欧美日韩综合一区| 精品人妻精品一区二区三区| 国产又猛又黄又粗又爽无遮挡| 国产精品欧美激情在线| 亚洲精品伦理熟女国产一区二区| 国产亚洲午夜高清国产拍精品| 欧美成人免费一级特黄| 国产内射一级一片内射高清| 国产精品免费不卡视频|