Wireshark 是最富盛名的開源抓包工具了,在電信網管開發的日常工作中是不可或缺的,經常需要抓包分析。那有沒有辦法可以在抓到的包中直接顯示 snmp mib 的名字,而不是 OID 呢?辦法當然是有的,也很簡單,在官方的文檔裡面就有說明了。這裡講下實際配置步驟:
1. 把 mib 文件放到 “C:Program FilesWiresharksnmpmibs” 目錄下。
2. 打開 “%APPDATA%Wiresharksmi_modules” 文件,在裡面按原有的格式,添加mib名字。
3. 修改 Wireshark 的配置,選中 “Enable OID resolution”,”Suppress SMI errors”(如下圖)。修改之後關閉再重新打開 Wireshark 就生效了。
注意事項:
1. 如果看到的配置界面跟上面的不一樣的話,是 Wireshark 版本太低了,升級到最新的版本即可。
2. 不是所有的 mib 文件都能被正確的解析,這是一個已知問題,因為其用的開源的 mib 解析模塊 libsmi 有問題。如果發現加了某幾個 mib 之後 Wireshark 就啟動不了了,那就還是把改動回退吧。
參考閱讀:1,2,3。
另外,因為要求 mib 文件的名字必須是 mib 模塊的名字,但是存在文件名和模塊名不一致的情況,寫了個 groovy 腳本,對指定目錄下的 mib 文件進行重命名:
import java.util.regex.*
def dir = new File('''C:Program FilesWiresharksnmpmibs''')
def pattern = ~/(?ms).*^s*([w-]+)s*DEFINITIONS ::= BEGINs*$.*/
dir.eachFileRecurse{ f ->
if ( f.file && f.name.endsWith(".mib") ) {
Matcher m = pattern.matcher( f.getText() );
if (m.matches()) {
f.renameTo( f.parentFile.path + "" + m[0][1] )
println '"' + m[0][1] + '"'
}
}
}