wireshark 是網路封包解析工具,但如果是新的或是自己開發的 protocol,就必須要自行開發封包解析的 plugin,讓 wireshark 也能看得懂新的協定的封包。
wireshark 是以 C 開發的,所以可以用 C 語言開發 plugin,但還有另一個比較快速的方式,就是使用 lua script 開發,Lua 在 wireshark 可支援撰寫 dissectors, post-dissectors and taps。
dissector 就是封包解析的 plugin,雖然可以用 lua 快速開發 dissector,但是執行速度還是比 C 語言開發的 plugin 慢。不過如果要快速完成 dissector 開發,lua 還是一個好的選擇,畢竟不需要花時間 compile, debug C dissector。
post-dissectors 是在每一個 dissector 執行後,可以運作的 plugin,可用來增加 dissection tree,建立自訂的 filtering mechanism。
taps 是針對被 dissected 的封包,用來收集資訊的 plugin。
installation
由 wireshark 官網下載安裝套件安裝後,在 About Wireshark 選單中,可查閱 wireshark 的資訊。如果在中間有看到 "with Lua 5.2.4" 的字串,就表示這個 wireshark 有支援 lua。
另外,要查閱 Folders 頁籤,要注意 Personal Lua Plugins, Global Lua Plugins, Global Configuration 的路徑
Global Configuration: /Applications/Wireshark.app/Contents/Resources/share/wireshark
Personal Lua Plugins: /Users/charley/.local/lib/wireshark/plugins
Global Lua Plugins: /Applications/Wireshark.app/Contents/PlugIns/wireshark
安裝 plugin
有三種方式
- 放在 Personal Lua Plugins 目錄中
- 修改 init.lua,以 dofile() 載入 lua script
- 在啟動 wireshark 的 command line 中,加上
"-X lua_script:pcap_file.lua"
參數
如果已經做好了 plugin,可以直接放在 Personal Lua Plugins 目錄中,複製進去後,就可以在 About Wireshark -> Plugins 頁籤,看到那些 lua script。
第二種方式,先找到 init.lua 的存放位置,在這台機器上是放在 Global Configuration 目錄中。
編輯 init.lua,可看到最後面是 dofile(DATA_DIR.."console.lua")
# 備份 init.lua
cp /Applications/Wireshark.app/Contents/Resources/share/wireshark/init.lua /Applications/Wireshark.app/Contents/Resources/share/wireshark/init.lua.bak
vi /Applications/Wireshark.app/Contents/Resources/share/wireshark/init.lua
.....
dofile(DATA_DIR.."console.lua")
--dofile(DATA_DIR.."dtd_gen.lua")
要注意 init.lua 的最前面 disable_lua 必須要是 false
disable_lua = false
if disable_lua then
return
end
在 init.lua 最後面加上
LUA_SCRIPT_PATH="/Users/charley/.wireshark/lua/"
dofile(LUA_SCRIPT_PATH.."hello.lua")
編輯 hello.lua vi /Users/charley/.wireshark/lua/hello.lua
-- hello.lua
print("hello world!")
以 command line wireshark 測試
$ tshark -x lua_script:hello.lua
hello world!
Capturing on 'FireWire'
沒有留言:
張貼留言