首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理Wireshark Lua分解中的位字段?

如何处理Wireshark Lua分解中的位字段?
EN

Stack Overflow用户
提问于 2018-07-09 15:20:20
回答 1查看 5.8K关注 0票数 5

我需要在Wireshark lua解剖器中解剖一个映射的八进制。八重奏的格式如下:

代码语言:javascript
复制
bit 0:     Concatenation (0=No concatenation, 1=Concatenation)
bits 1..3: Reserved
bits 4..7: Version

我已经成功地解剖了它:

代码语言:javascript
复制
Concatenation_F = ProtoField.uint8("Concatenation", "Concatenation", base.DEC, NULL, 0x1)
Version_F = ProtoField.uint8("Version", "Version", base.DEC, NULL, 0xF0)

my_protocol.fields = { Concatenation_F,
                   Version_F
}

<snip>

local Concatenation_range = buffer(0,1)
local Version_range = buffer(0,1)

local Concatenation = Concatenation_F:uint()
local Version = Version_range:uint()

subtree:add(Concatenation_F, Concatenation_range, Concatenation)
subtree:add(Version_F, Version_range, Version)

这是可行的,但我想展示连接字段的含义,例如:

但是要做到这一点,我需要获得连接位的值。我怎么能这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-10 14:26:35

有两个解决方案。通常,您只需引入一个值字符串并在ProtoField调用中使用它。例如:

代码语言:javascript
复制
local yesno_types = {
    [0] = "No",
    [1] = "Yes"
}

Concatenation_F = ProtoField.uint8("Concatenation", "Concatenation", base.DEC, yesno_types, 0x1)

请参阅11.6.7节。有关更多信息,请参见ProtoField of Wireshark开发者指南

但是,如果您仍然希望获得位字段的值,那么您可以使用Lua BitOp支持来实现这一点,这对您来说已经是可用的。所以,就像这样:

代码语言:javascript
复制
local function get_concat(x) return bit.band(x, 0x01) end

local concat = get_concat(buffer(0, 1):uint())
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51248914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档