Wiresharkのキャプチャがあり、表示フィルター [Wireshark ドキュメント]これは、(at-at-space-V-questionmark) という用語を含む XML ドキュメントを検索します@@ V?
。ドキュメントには、Perl Regex が使用されていると記載されています。
matches 演算子を使用すると、Perl 正規表現構文を使用して、正規表現を使用して文字列フィールドおよびバイト シーケンス内のテキストを検索できるようになります。
そして
注意: matches 演算子を使用するには、Wireshark を libpcre でビルドする必要があります。
この条件が適用されるかどうかはわかりませんが、一般的には演算子を使用できるのでmatches
、その部分は満たされていると想定します。
個人的には、フィルタはxml matches "@@ V\?"
機能するはずですが、基準に合わないXML、例えば次のようなXMLを見つけてしまいます。
<?xml version="1.0"?>
<dialog><sysdef name="TERMREC" value="@@ U1160613113912"/></dialog>
私のフィルターまたは Wireshark に何が問題なのでしょうか?
特殊文字を含まないフィルター (例xml matches "@@ V0"
) を使用すると、期待どおりに機能します。特殊文字を含むその他のフィルター (例xml matches "@@ V1\*"
) は機能しません。
答え1
xml matches "@@ V\\?"
二重のバックスラッシュ (例:および )を使用する必要があることがわかりましたxml matches "@@ V1\\*"
。
これを C++ や C# のようなコードで実行する必要があることは知っていましたが、ユーザー入力フィールドでこれを実行するとは思っていませんでした。特に、単一のバックスラッシュを含む無効な式がエラーにならず、代わりに誤った結果を返すのはなぜか疑問に思います。
開けましたWireshark バグ 12522。