我们的团队目前正致力于构建一个解剖某种类型数据包的wireshark解剖器。我们已经基于模板构建了数据包。
假设我们构建的插件的名称是ABC,现在我们的目标是每当我们在wireshark的过滤器框中键入ABC时,我们希望看到(捕获)我们发送的数据包。
正如您在图像中看到的,如果我们通过ip.destination过滤它,wireshark知道这些是我们感兴趣的数据包。当前的任务是当我输入插件名称ABC时,我想要相同的结果
如果问题不明确,我会道歉,我们刚开始并仍处于初始阶段。任何提示或建议都非常感谢!
答案 0 :(得分:2)
按照正常情况制作插件解剖器,如this页中所述。如链接中所述,当您使用proto_register_protocol()
下的proto_register_ABC()
注册协议时,作为第三个参数提供的缩写字符串将注册为过滤器名称。
有关创建插件的信息,请参阅“doc / README.plugins”文件。
如果要为数据包中的数据结构注册过滤器(可以再次查看上面的链接说明),查找函数proto_register_ABC()(此处ABC是您的协议名称),将您的数据成员添加到静态数组“hf_register_info hf []”如下所示。
void
proto_register_ABC(void)
{
static hf_register_info hf[] = {
{ &hf_foo,
{ "FOO member", "foo", FT_BYTES,
BASE_NONE, NULL, 0x0, NULL, HFILL }}
};
必须声明hf_foo。 你在第二个字符串:
{ "FOO member", "ABC", FT_BYTES,
BASE_NONE, NULL, 0x0, NULL, HFILL }}
即。第二个字符串“foo”是您的过滤器名称。
现在,如果解剖器功能dissect_ABC()
正常工作,那么您将能够自动使用“ABC”过滤协议包。您还可以查看如何通过“TCP”等其他解剖来完成此操作。查看“epan / dissectors / packet-tcp.c”。