ヾノ*>ㅅ<)ノシ帳

ノンジャンルのふりーだむなブログです。

何としてでもWiresharkのsuriwireプラグインを使いたい!

Arch LinuxWiresharksuriwireプラグインをインストールする話。 suriwireプラグインは、WiresharkでSuricataのEVEログを扱えるようにするためのluaスクリプトである。

Wiresarkでluaスクリプトを置く場所は、メニューバーの [Help] - [About Wireshark] で開くダイアログの [Folders] に示されている。

私の場合は、

cd ~/.local/lib/wireshark/plugins
wget https://raw.githubusercontent.com/regit/suriwire/master/suriwire.lua

プラグインのインストールは完了した。だが、問題はここから。 suriwireはlua-cjsonに依存しており、luarocks(luaのパッケージマネージャー)でインストールされるものだと lua_objlen なるものが undefined symbol となってしまった。

そこで、意図的に古いバージョンをインストールすることによりシンボルエラーを消すことができた。

### すでにlua-cjsonをインストールしてある場合は一旦消す
sudo -H luarocks remove lua-cjson
### ダウングレードしたlua-cjsonをインストール
sudo -H luarocks install lua-cjson 2.0.0
### プラグインフォルダにコピー
cp /usr/lib/lua/5.3/cjson.so .

ターミナルでrequireがうまくいっていることを確認できた。

K_atc% lua5.3 suriwire.lua
lua5.3: suriwire.lua:29: attempt to call a nil value (global 'gui_enabled')
stack traceback:
    suriwire.lua:29: in main chunk
    [C]: in ?

プラグインフォルダをカレントディレクトリとしてWiresharkを起動すると(wireshark-gtk)、 SuriwireプラグインWiresharkに正常に読み込まれ、下図のようにメニューが増えた。

f:id:katc:20180702165920p:plain

strace -f -e openat でトレースしたところ、 cjson.so は /usr/lib/lua/5.2/ に無いといけないっぽい。

sudo cp /usr/lib/lua/5.3/cjson.so /usr/lib/lua/5.2/cjson.so

こんなんでいいのか?luaverを使ってlua 5.2でビルドしてあげたほうがいいかも。この話はここまで。