UDP 上のプロトコル用に、C で Wireshark のディセクタを作成しています。私はヒューリスティック分析を使用していますが、私のものと同じポートの標準的な分析ツールを備えた別のプロトコルが存在するため、私のパケットはその他のプロトコルとして分析されています。ディセクタを機能させるには、「最初にヒューリスティック ディセクタを試す」UDP 設定を有効にする必要がありますが、プラグインが (コードで) 登録されたときにそのプロパティを変更したかったので、ユーザーが手動で変更する必要はありません。epan/prefs.h で、関数prefs_set_prefが存在することに気付きました! しかし、プラグインで使用すると、起動時に Wireshark がバス エラー 10 でクラッシュします。
だから私はこれを試しました:
G_MODULE_EXPORT void plugin_register(void){
prefs_set_pref("udp.try_heuristic_first:true");
// My proto_register goes here
}
epan/prefs.h には以下があるため:
/*
* Given a string of the form "<pref name>:<pref value>", as might appear
* as an argument to a "-o" option, parse it and set the preference in
* question. Return an indication of whether it succeeded or failed
* in some fashion.
*
* XXX - should supply, for syntax errors, a detailed explanation of
* the syntax error.
*/
WS_DLL_PUBLIC prefs_set_pref_e prefs_set_pref(char *prefarg);
ありがとう