13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

wiresharkのプラグイン開発まとめ

Last updated at Posted at 2019-06-22

はじめに

WiresharkはLua言語で独自プロトコルを解析するプラグインを作成できるため、とても便利です。が、馴染みのないLua言語でのプラグイン開発は苦労も多いため、いろいろとQiitaにまとめることにしました。

プラグインのインストール

.luaファイルをロードすることで、プラグインが有効になります。
読み込ませる方法は複数あり、いずれも一長一短があるようです。

読み込ませ方 メリット/デメリット
init.luaからdofile関数を実行する 【メリット】dofile関数が使用できる。
【デメリット】再インストールで設定が消える。
pluginsフォルダに配置する 【メリット】公式のプラグイン利用方法である。
【デメリット】dofile関数が使えない。
init.luaからdofile関数を実行する

インストール先フォルダにあるinit.luaファイルは、最初にロードされる.luaファイルのようです。init.luaファイルの末尾にdofile関数を用いたコードを記載することで.luaファイルをロードすることができます。但し、アップデート等で再インストールされると、同時にinit.luaファイルが初期化されてしまうようです。dofile関数を用いたコードの記載例は以下の通りです。

-- init.luaの末尾
DATA_DIR = Dir.global_config_path()..package.config:sub(1,1) -- init.luaがあるフォルダ
dofile(DATA_DIR.."sample_plugin.lua")
pluginsフォルダに配置する

指定の場所にpluginsフォルダを作成し、その中に配置した.luaファイル(サブフォルダ以下もロードされる)はプラグインとして読み込まれます。但し、dofile関数が無効化されているため、共通のロジックを1ファイルにまとめておいて、各プロトコルでコードを再利用するといったテクニックは使えません。pluginsフォルダの場所は以下の通りです。(Wireshark Developer’s Guide Appendix B.4.

OS Path
Windows %APPDATA%/Wireshark/plugins
Linux ~/.local/lib/wireshark/plugins

デバッグの方法

プラグインのリロード

.luaファイルは起動時に読み込まれますが、再起動をしなくても「Ctrl+Shift+L」でプラグインがリロードされます。

コンソールの利用

起動後に「ツール」→「Lua」から「console」と「evaluate」を起動することで、ちょっとしたコードを試しに実行することができます。Wireshark’s Lua API Reference Manualにある関数を試してみたい時に便利です。

evaluateウィンドウに以下のコードを記載し、Evaluateボタンを押すと、

-- wiresharkに登録されているDissectorの一覧を表示するプログラム
-- ref) https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html
for key, val in pairs(Dissector.list()) do
	print(key,val)
end

以下の結果がConsoleウィンドウに表示されます。

2019/06/22 17:40:46 1	6lowpan
2019/06/22 17:40:46 2	CI+ SAC message
2019/06/22 17:40:46 3	DOF Object Identifier
2019/06/22 17:40:46 4	DOF Tunnel Protocol
2019/06/22 17:40:46 5	DOF Tunnel Protocol Stack

サンプルスクリプトの応用

プラグインを作成する上では、サンプルスクリプトを真似るのが最も近道です。有用なサンプルスクリプトの一覧は以下の通りです。

リンク 備考
10.2. Example: Creating a Menu with Lua GUI
10.3. Example: Dissector written in Lua プロトコル解析
10.4. Example: Listener written in Lua 統計解析
Wireshark Wiki / Lua Example
【GitHub】Wireshark/src/test/lua テスト

参考文献

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?