【问题标题】:Wireshark dissector without using TCP or UDP port不使用 TCP 或 UDP 端口的 Wireshark 解析器
【发布时间】:2017-04-11 22:40:40
【问题描述】:

我一直在寻找一些教程来编写我自己的 CPL-G3 解析器。
但是,我发现的只是使用 TCP 或 UDP 端口的解析器,如下所示:

dissector_add (“tcp.port”, 250, myprot_handle);

有没有办法使用其他传输协议,而不是 TCP?

【问题讨论】:

  • 我认为首先需要回答的问题是:CPL-G3 究竟运行了哪些数据/网络/传输协议? CPL-G3 是否与 IEEE 1901 有某种关联?我注意到 Wireshark 有用于 homeplug 和 homeplug-av 的解剖器,它们显然是在以太网上运行的。这些协议是否与 CPL-G3 有某种关联?
  • 他与 IEEE 802.15.4 有点相关
  • 您有包含 CPL-G3 数据包的捕获文件吗?你能在某个地方分享吗(保管箱等)?

标签: wireshark wireshark-dissector


【解决方案1】:

有没有办法使用另一个传输协议,而不是 TCP?

认为你的意思是说传输协议,但是是的,这是可能的。

例如,Wireshark 的DNS dissector 注册了 UDP、TCP 和 SCTP。

void
proto_reg_handoff_dns(void)
{
    dissector_handle_t mdns_udp_handle;
    dissector_handle_t llmnr_udp_handle;

    mdns_udp_handle  = create_dissector_handle(dissect_mdns_udp, proto_mdns);
    llmnr_udp_handle = create_dissector_handle(dissect_llmnr_udp, proto_llmnr);
    dissector_add_uint_with_preference("udp.port", UDP_PORT_MDNS, mdns_udp_handle);
    dissector_add_uint_with_preference("udp.port", UDP_PORT_LLMNR, llmnr_udp_handle);
    dissector_add_uint("sctp.port", SCTP_PORT_DNS, dns_handle);
#if 0
    dissector_add_uint("sctp.ppi",  DNS_PAYLOAD_PROTOCOL_ID, dns_handle);
#endif
    stats_tree_register("dns", "dns", "DNS", 0, dns_stats_tree_packet, dns_stats_tree_init, NULL);
    gssapi_handle  = find_dissector_add_dependency("gssapi", proto_dns);
    ntlmssp_handle = find_dissector_add_dependency("ntlmssp", proto_dns);
    ssl_dissector_add(TCP_PORT_DNS_TLS, dns_handle);
    dtls_dissector_add(UDP_PORT_DNS_DTLS, dns_handle);
    dissector_add_uint_range_with_preference("tcp.port", DEFAULT_DNS_TCP_PORT_RANGE, dns_handle);
    dissector_add_uint_range_with_preference("udp.port", DEFAULT_DNS_PORT_RANGE, dns_handle);
}

Wireshark 源码中还有很多类似这样的例子。

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2013-01-22
    相关资源
    最近更新 更多