我有一个 Wireshark 捕获,我正在尝试创建一个显示过滤器 [Wireshark 文档]查找包含术语@@ V?
(at-at-space-V-questionmark) 的 XML 文档。文档中说 Perl Regex 的使用方式如下:
匹配运算符可以使用正则表达式(使用 Perl 正则表达式语法)在字符串字段和字节序列中搜索文本。
和
注意:Wireshark 需要使用 libpcre 构建才能使用匹配运算符。
我无法确定这个条件是否适用,但一般来说我可以使用该matches
运算符,因此我认为该部分已经满足。
我认为过滤器xml matches "@@ V\?"
应该可以工作,但它发现不符合标准的 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。