何としてでもWiresharkのsuriwireプラグインを使いたい!
Arch LinuxのWiresharkにsuriwireプラグインをインストールする話。 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に正常に読み込まれ、下図のようにメニューが増えた。
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でビルドしてあげたほうがいいかも。この話はここまで。