
Ubuntu上のWiresharkでのluaスクリプトの置き場所
仕事でUbuntuにWiresharkをインストール、luaスクリプトを追加する必要があり、動作するまでアレコレやったので備忘録として。
Wiresharkのインストール
Wiresharkのインストール自体は、
でよい。
sudo apt install wireshark
インストール後、動作することを確認。
luaスクリプトの追加
とあるプロトコルを解析するためにluaスクリプトを追加しないといけないが、Windows版と置き場所が異なる。
ユーザディレクトリの.config以下にwiresharkができていたので、最初その下に<plugins>ディレクトリを作成して各luaスクリプトを放り込んだところ、Wireshark起動時にエラーが出るようになった。
エラーが出るということは、追加したluaスクリプトを読もうとしたということで、置き場所が180度違うということではないということで、エラーの解析をする。
エラーの内容を見ると、dofileでファイルを読み込めないと言っており、luaスクリプトを修正したりして最終的に分かったのは、
- plugins以下のluaスクリプトではdofileを処理できない
ということ。
調べてみると、古いバージョンでは*.luaにLuaスクリプトをenableにする記述等を記載してたようだが、最近のバージョンではLuaスクリプトをpluginsディレクトリに放り込んで有効にする手順らしい。
ならばということで、dofileの行をコメントにして必要なファイルをpluginsに放り込んだところ、dofileのエラーなく起動するようになった。

複数に分けたファイルの読み込み処理の対応
とりあえずdofileのエラーなく起動するようにはなったが、様子がおかしい。今度は”attempt to index ~ (a nil value)”と言っている。
調べてみると、どうやら変数の初期化が行われていないとか、配列の範囲を超えた処理をしたりすると出るらしい。
使おうとしていたLuaスクリプトで一部、dissectorとfieldに分けたファイルがありdofileでこれらを読むようになっていて、エラーが出るファイルはプロトコル定義の記述がない方なので”2つのファイルを結合したら動くんじゃね?”と思い試したところビンゴ! エラーがなくなりキャプチャしたデータもちゃんとプロトコル解析できていて、解決👍
各種ファイルの在処
そもそも、各種ファイルの置き場はどこが正解?と思い探ってみたところ、「Wiresharkについて」ダイアログにちゃんと書いてあった…

まとめると…
- Luaスクリプトを置くところは、~/.config/wireshark/pluginsでOK
- pluginsにあるファイルはdofileの処理を行わないので、使っていたらコメントにする
- 複数に分けたファイルをdofileで読み込むようにしていたら、ファイルを結合して一つのファイルにする



ディスカッション
コメント一覧
まだ、コメントがありません