仕事関連のサムネ

Ubuntu上のWiresharkでのluaスクリプトの置き場所

2025年12月12日

仕事で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で読み込むようにしていたら、ファイルを結合して一つのファイルにする