Wireshark:从 .lua 插件调用 MAC 解剖器
Wireshark: Call MAC dissector from .lua plugin
我正在尝试从我的 .lua 插件中调用特定的协议解析器。
该行是:
Dissector.get("mac"):call(buf, pinfo, tree)
一些工作(例如 gtp),但其他我不需要的工作(例如 mac 代表 MAC,rsl 代表 RSL)。我查看了 epan/dissectors 文件夹并尝试了其他变体但无济于事。
任何人都知道问题是找到协议的正确名称,还是其他什么?
以下是我在 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);
我正在尝试从我的 .lua 插件中调用特定的协议解析器。 该行是:
Dissector.get("mac"):call(buf, pinfo, tree)
一些工作(例如 gtp),但其他我不需要的工作(例如 mac 代表 MAC,rsl 代表 RSL)。我查看了 epan/dissectors 文件夹并尝试了其他变体但无济于事。
任何人都知道问题是找到协议的正确名称,还是其他什么?
以下是我在 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);