如何解決Linux上的Wireshark界面僵死
問題:當(dāng)我試圖在 Ubuntu 上的 Wireshark 中打開一個(gè) pre-recorded 數(shù)據(jù)包轉(zhuǎn)儲時(shí),它的界面突然死機(jī),在我運(yùn)行 Wireshark 的終端出現(xiàn)了下面的錯(cuò)誤和警告。我該如何解決這個(gè)問題?
- (wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GObject'
- (wireshark:3480): GLib-GObject-CRITICAL **: g_object_set_qdata_full: assertion 'G_IS_OBJECT (object)' failed
- (wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkRange'
- (wireshark:3480): Gtk-CRITICAL **: gtk_range_get_adjustment: assertion 'GTK_IS_RANGE (range)' failed
- (wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkOrientable'
- (wireshark:3480): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed
- (wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkScrollbar'
- (wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GtkWidget'
- (wireshark:3480): GLib-GObject-WARNING **: invalid unclassed pointer in cast to 'GObject'
- (wireshark:3480): GLib-GObject-CRITICAL **: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed
- (wireshark:3480): Gtk-CRITICAL **: gtk_widget_set_name: assertion 'GTK_IS_WIDGET (widget)' failed
Wireshark 是一個(gè)基于 GUI 的數(shù)據(jù)包捕獲和嗅探工具。該工具被網(wǎng)絡(luò)管理員普遍使用,網(wǎng)絡(luò)安全工程師或開發(fā)人員對于各種任務(wù)的數(shù)據(jù)包級的網(wǎng)絡(luò)分析是必需的,例如在網(wǎng)絡(luò)故障,漏洞測試,應(yīng)用程序調(diào)試,或逆向協(xié)議工程是必需的。Wireshark允許實(shí)時(shí)記錄數(shù)據(jù)包,并通過便捷的圖形用戶界面瀏覽他們的協(xié)議首部和有效負(fù)荷。
這是 Wireshark 的 UI,尤其是在 Ubuntu 桌面下運(yùn)行時(shí),當(dāng)你向上或向下滾動分組列表視圖時(shí),或開始加載一個(gè) pre-recorded 包轉(zhuǎn)儲文件時(shí),有時(shí)會掛起或凍結(jié),并出現(xiàn)以下錯(cuò)誤。
顯然,這個(gè)錯(cuò)誤是由 Wireshark 和疊加滾動條之間的一些不兼容造成的,在***的 Ubuntu 桌面還沒有被解決(例如,Ubuntu 15.04 的桌面)。
一種避免 Wireshark 的 UI 卡死的辦法就是 暫時(shí)禁用疊加滾動條。在 Wireshark 上有兩種方法來禁用疊加滾動條,這取決于你在桌面上如何啟動 Wireshark 的。
命令行解決方法
疊加滾動條可以通過設(shè)置"LIBOVERLAY_SCROLLBAR"環(huán)境變量為“0”來被禁止。
所以,如果你是在終端使用命令行啟動 Wireshark 的,你可以在 Wireshark 中禁用疊加滾動條,如下所示。
打開你的 .bashrc 文件,并定義以下 alias。
alias wireshark="LIBOVERLAY_SCROLLBAR=0 /usr/bin/wireshark"
桌面啟動解決方法
如果你是使用桌面啟動器啟動的 Wireshark,你可以編輯它的桌面啟動器文件。
$ sudo vi /usr/share/applications/wireshark.desktop
查找以"Exec"開頭的行,并如下更改。
Exec=env LIBOVERLAY_SCROLLBAR=0 wireshark %f
雖然這種解決方法可以在系統(tǒng)級幫助到所有桌面用戶,但升級 Wireshark 后被覆蓋就沒用了。如果你想保留修改的 .desktop 文件,如下所示將它復(fù)制到你的主目錄。
$ cp /usr/share/applications/wireshark.desktop ~/.local/share/applications/