Wireshark数据转换成ASCII

我正在轮询一个远程示波器,它的回答是“几乎”纯ASCII码:

image_packet

“几乎”是因为四字节的头部80 00 00 1515是ASCII消息的长度,在这种情况下为21字节)不允许我在列数据中将有效载荷解码为ASCII码(无论是将其设置为Custom/data.data还是Custom/data.text):

image_column_appearance

编辑 > 首选项 > 协议 > 数据已经设置为将数据显示为文本

我想像在跟踪TCP流中一样读取ASCII文本,其中它被正确解码,无效的ASCII码被更改为“.”:

enter image description here

有没有一种方法可以在不写分解器的情况下删除前四个字节?我不懂Lua,也不知道如何编写分解器:10.3.示例:用Lua编写分解器远超出了我的理解范围。 任何可以轻松适应的已发布解决方案的指针都是受欢迎的。

谢谢

点赞
用户4106261
用户4106261

根据 MikaS 教程(非常简单易懂),我编写了这个 LUA 解析器:

    yokogawa_protocol = Proto("YokogawaWT3000",  "Yokogawa WT3000 Protocol")

    message_header0 = ProtoField.int32("yokogawa_protocol.message_header0", "messageHeader0", base.DEC)
    message_header1 = ProtoField.int32("yokogawa_protocol.message_header1", "messageHeader1", base.DEC)
    message_header2 = ProtoField.int32("yokogawa_protocol.message_header2", "messageHeader2", base.DEC)
    message_length = ProtoField.int32("yokogawa_protocol.message_length", "messageLength", base.DEC)
    message_ascii  = ProtoField.string("yokogawa_protocol.message_ascii", "messageAscii", base.ASCII)

    yokogawa_protocol.fields = { message_header0, message_header1, message_header2, message_length, message_ascii }

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

      pinfo.cols.protocol = yokogawa_protocol.name

      local subtree = tree:add(yokogawa_protocol, buffer(), "Yokogawa WT3000 Protocol Data")

      subtree:add(message_header0, buffer(0,1)) -- fixed h80
      subtree:add(message_header1, buffer(1,1)) -- fixed h00
      subtree:add(message_header2, buffer(2,1)) -- fixed h00
      subtree:add(message_length, buffer(3,1))  -- ascii length
      subtree:add(message_ascii, buffer(4, length-4)) -- ascii text
    end

    local tcp_port = DissectorTable.get("tcp.port")
    tcp_port:add(10001, yokogawa_protocol)

右键单击 messageAscii,然后选择 "Apply as Column",让我可以在新列中查看每个消息的解码值。

谢谢大家

2019-06-06 09:51:01