VOOZH about

URL: https://qiita.com/rotace/items/674202417ba6b68b423f

⇱ wiresharkのプラグイン開発まとめ #Lua - Qiita


👁 Image
13

Go to list of users who liked

12

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 5 years have passed since last update.

@rotace

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

13
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

Go to list of users who liked

12
0

Go to list of comments

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

Go to list of users who liked

12