2016年6月1日 星期三

使用 wireshark 的 lua script

Wireshark 支援 lua script ,可以讓我們自行撰寫需要的 disector,簡單的說就是可以讓我自行定義封包要怎麼切割以及顯示。這是個非常有用的功能。

本次練習的環境為
  • OS X EI  Capitan v10.11.3 64bit
  • wireshark 2.0.2 64bit

首先看看如何使用一個現成的 lua script,官網共定義有三種方式。
  • By putting it in the personal plugins directory.
  • By loading it from init.lua using dofile().
  • By loading it from the command line using the '-X lua_script:pcap_file.lua' argument, for either Tshark or Wireshark.
我們可以先到此處下載 lua script 與測試用的 pcap,再直接做練習,例如,我已經下載了 dissector.lua dns_port.pcap,則使用方式如下:(三者擇一即可)

Method 1. putting it in the personal plugins directory
將 dissector.lua 複製到/Applications/Wireshark.app/Contents/PlugIns/wireshark,若載入成功,則在 About 頁面會看到以下資訊。

Method 2. loading it from init.lua using dofile().
需修改 /Applications/Wireshark.app/Contents/Resources/share/wireshark/init.lua,在檔案最後面加入 dofile(DATA_DIR.."dissector.lua")
Method 3. loading it from the command line
$ wireshark -X lua_script:dissector.lua
原始的 Wireshark 畫面如下,
Original 
若有正確載入 lua script,則畫面如下:

With Lua Script
** 注意:若 wireshark 版本太舊,可能無法正常運行 lua script。


接著若是要自行撰寫 lua 程式,可以看看這個中文教學或是官方教學,學習如何撰寫一個 lua script。順道一提,若是使用 ultraedit寫碼, 可至此處下載 lua word files,以利檢視程式碼。

此篇的重點在使用 lua script來協助釐清問題,因此我盡量搜集網路上的使用現成例子。下面這邊收集了一些參考網址,後續有需要時,可以到這些網址搜尋是否有合用的 lua。

參考資料
  1. https://wiki.wireshark.org/Lua/Examples
  2. http://blog.csdn.net/jasonhwang/article/details/7359095
  3. http://www.ultraedit.com/downloads/extras/wordfiles.html