Wireshark:从.lua插件调用 MAC 协议分析器

我正在尝试从我的.lua插件调用特定的协议分析器。 代码行为:

Dissector.get("mac"):call(buf, pinfo, tree)

有些可以正常工作(如gtp),但是其他我需要的协议(如MAC和RSL)无法工作。我查看了 epan/dissectors 文件夹并尝试了其他变化,但无果。

有没有人知道问题是找不到协议名称还是其他什么原因?

点赞
用户2755698
用户2755698

以下是我在 https://ask.wireshark.org/question/6288/call-mac-dissector-from-lua-plugin/ 上提供给相同问题的答案,为了方便起见,在此复制:


如果你想要寻找正确的协议名,可以尝试运行类似于 tshark -G protocols | grep NAME 的命令,其中 NAME 是你要查找的协议名。(有关 -G 选项的更多详细信息,请参阅 tshark 手册。)

例如:

$ tshark -G protocols | grep RSL
Radio Signalling Link (RSL)     RSL     gsm_abis_rsl

因此,在 RSL 的情况下,看起来您需要使用 Dissector.get("gsm_abis_rsl"):call(buf, pinfo,tree)

当然,这种方法并不总是有效的,因为搜索 MAC 却可以找到它:

$ tshark -G protocols | grep MAC
DOCSIS Mac Management   DOCSIS MAC MGMT docsis_mgmt
MACsec Key Agreement    EAPOL-MKA       mka
Radio Link Control, Medium Access Control, 3GPP TS44.060        GSM RLC MAC    gsm_rlcmac
ISMACryp Protocol       ISMACRYP        ismacryp
**MAC     MAC     mac**
MAC-LTE MAC-LTE mac-lte
mac-lte-framed  MAC-LTE-FRAMED  mac-lte-framed
MAC-NR  MAC-NR  mac-nr
MikroTik MAC-Telnet Protocol    MAC-Telnet      mactelnet
MAC Control     MACC    macc
802.1AE Security tag    MACsec  macsec
MPLS-MAC        Media Access Control (MAC) Address Withdrawal over Static Pseudowire    mpls_mac
WiMax MAC Management Message    MGMT MSG        wmx.mgmt
DCOM IRemoteActivation  REMACT  remact
Token-Ring Media Access Control TR MAC  trmac
WiMax Generic/Type1/Type2 MAC Header Messages   WiMax Generic/Type1/Type2 MAC Header (hdr)      wmx.hdr
WiMAX MAC-PHY over Ethernet     WiMAX MAC-PHY   wimaxmacphy

在这种情况下,似乎您需要查看源代码(除非我不知道其他方法)才能找到实际上已注册的解析器。

$ grep "proto_register_protocol" packet-*.c | grep "\"MAC\""
packet-umts_mac.c:    proto_umts_mac = proto_register_protocol("MAC", "MAC", "mac");

$ grep register_dissector packet-umts_mac.c
    register_dissector("mac.fdd.rach", dissect_mac_fdd_rach, proto_umts_mac);
    register_dissector("mac.fdd.fach", dissect_mac_fdd_fach, proto_umts_mac);
    register_dissector("mac.fdd.pch", dissect_mac_fdd_pch, proto_umts_mac);
    register_dissector("mac.fdd.dch", dissect_mac_fdd_dch, proto_umts_mac);
    register_dissector("mac.fdd.edch", dissect_mac_fdd_edch, proto_umts_mac);
    register_dissector("mac.fdd.edch.type2", dissect_mac_fdd_edch_type2, proto_umts_mac);
    register_dissector("mac.fdd.hsdsch", dissect_mac_fdd_hsdsch, proto_umts_mac);
2018-12-05 19:07:16