【问题标题】:Dissector for TCP OptionTCP 选项解析器
【发布时间】:2013-10-03 09:17:07
【问题描述】:

我是在 Lua 中编写解析器的新手,我有两个简单的问题。我有一个数据包,它的 TCP 选项为 MSS、TCP SACK、TimeStamps、NOP、Window Scale、Unknown。我基本上是在尝试剖析 TCP 选项字段中的未知部分。我知道我将不得不使用链式解剖器。

第一个问题是在使用链式解析器解析 TCP 选项时,我是否必须从头开始解析所有选项。例如,我需要解析 MSS、TCP SACK、....然后最后解析 Unknown 部分,或者有什么直接的方法可以让我跳转到 Unknown 部分。

我的第二个问题是我已经看过许多自定义协议解析器的代码,如果我需要解析遵循(例如)TCP 的协议,那么我必须包括以下内容:

-- load the tcp.port table
tcp_table = DissectorTable.get("tcp.port")
-- register our protocol to handle tcp port
tcp_table:add(port,myproto_tcp_proto)

我的问题是,我是否可以跳到协议的中间。例如,在我的情况下,我想解析 TCP 选项。我可以直接调用 tcp.options 解析器将从选项开始的位置开始剖析吗?

【问题讨论】:

    标签: tcp lua wireshark wireshark-dissector


    【解决方案1】:

    TCP 选项是“uint8_t 类型;uint8_t len;uint8_t* 数据​​”结构。 我通常给常用的一个名字。例如 getSack()、getMss()。 对于其他人,将它们保存在一个数组中(最大大小为 20)。

    对于第二个问题,您的意思是您不关心 TCP 标头,对吗?如果是这样,只需将指针再移动 20 个字节即可访问 TCP 选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-03
      • 2013-12-21
      • 1970-01-01
      • 2018-11-21
      • 2016-02-13
      • 2013-05-16
      • 2010-10-12
      • 2021-04-05
      相关资源
      最近更新 更多