我有一个与Oracle数据库进行通信的应用程序,它的日志记录非常糟糕,因此,我可以通过数据包嗅探TNS来锻炼它向数据库发送的SQL的唯一方法。我想用那些包含特殊名称的包来过滤这些包,即包中是否存在特殊字符串。我怎样才能做到这一点?
谢谢。
我有一个与Oracle数据库进行通信的应用程序,它的日志记录非常糟糕,因此,我可以通过数据包嗅探TNS来锻炼它向数据库发送的SQL的唯一方法。我想用那些包含特殊名称的包来过滤这些包,即包中是否存在特殊字符串。我怎样才能做到这一点?
谢谢。
Answers:
您是否尝试过“包含”或“匹配”运算符?例如,
tns.request and tns contains "Marshmallows"
或简单地
frame matches "(?i)marshmallows"
第一个示例查找包含区分大小写的字符串“棉花糖”的TNS请求。第二个示例在不考虑大小写的情况下,在任何框架中的任何位置查找“棉花糖”。(“ contains”进行简单的字符串匹配;“ matches”使您可以使用PCRE修饰符)。
更新:在Wireshark 2.6和更高版本中,“匹配”默认情况下不区分大小写。您可以使用“(?-i)” PCRE修饰符来强制区分大小写。
您的问题有几种解释:
您正在使用WireShark,并希望进行更复杂的过滤以更好地分析数据。在这种情况下,请阅读docs。如果需要额外的表达能力,还可以在Lua中对过滤器进行编程。
您想将那些数据包过滤掉;即应用程序级防火墙或NIDS。检查用于防火墙/整形的L7过滤器,或用于NIDS的Snort(我认为后者也可以使用一些Lua脚本)
您希望捕获要记录的数据包,创建统计信息或任何其他自动化任务。检查tcpdump / libpcap和/或我自己的libpcap绑定的Lua。