添加USB协议中的解剖器

我目前正在制作自己的USB协议,以了解wireshark中的解剖器。

我使用Lua编写了自己的解剖器,并将其添加到了wireshark中,但我真的不太理解解剖器表,特别是如何应用自己制作的协议。

以下是我的代码:

rssi_protocol = Proto("RSSI", "RSSI protocol")
header = ProtoField.ubytes("rssi.header", "Header", base.NONE)
Rx = ProtoField.uint8("rssi.rx", "Reception time", base.HEX)
Tx = ProtoField.uint8("rssi.tx", "Transmission time", base.HEX)
Power = ProtoField.uint8("rssi.power", "Power Attenuation", base.HEX)
RSSI1 = ProtoField.uint8("rssi.1", "First RSSI", base.HEX)
RSSI2 = ProtoField.uint8("rssi.2", "Second RSSI", base.HEX)
RSSI3 = ProtoField.uint8("rssi.3", "Third RSSI", base.HEX)
rssi_protocol.fields = {header, Rx, Tx, Power, RSSI1, RSSI2, RSSI3}

function rssi_protocol.dissector(buffer, pinfo, tree)
    length = buffer:len()
    if length == 0 then return end

    pinfo.cols.protocol = rssi_protocol.name

    local subtree = tree:add(rssi_protocol, buffer(), "RSSI Protocol Data")

    subtree.add(header, buffer(0, 19))
    subtree.add(Rx, buffer(19, 1))
    subtree.add(Tx, buffer(20,1))
    subtree.add(Power, buffer(21,1))
    subtree.add(RSSI1, buffer(22, 1))
    subtree.add(RSSI2, buffer(23,1))
    subtree.add(RSSI3, buffer(24,1))

    end

DissectorTable.get(<TABLE>)add(<VALUE>, rssi_protocol)

和wireshark enter image description here

我希望我的协议能够解释红色部分。 我不知道应该使用哪个DissectorTable来计算这一部分。 有任何想法吗?

可能相关的是,我正在虚拟机上工作并追踪usbmon2以获取我的数据。

干杯。

点赞
用户6614058
用户6614058

好的,我知道我做错了什么。

我一直以为解析器表格与我们在选择字段时看到的页脚信息相关,例如 usb.bus_id 或 usb.unused_setup_header。但实际上并不是。

我最终还是在新版 Wireshark 的菜单视图 -> 内部 -> 解析器表格中找到了所有可用解析器。

2018-08-17 08:32:44