我目前正在研究我的第一个协议解析器。我面临着一个我无法解决的问题。基本上我有一个长度为8个字节的字段(但是定义为9个字节),所以我创建了一个位字段来定义这个protofield。Lua - 显示字段ASCII解密器
下面是到目前为止,我已经测试领域的deffinitions:
a) local harer_id = ProtoField.string ("myProto.harer_id","Harer ID", base.ASCII)
b) local harer_id = ProtoField.uint64 ("myProto.harer_id", "Harer ID", base.HEX)
然后我把它添加到下面的方式解剖树:
local harer_id_long = tvbuf:range(16,9)
body:add(harer_id, harer_id_long:bitfield(4,64))
这最终给出以下错误:
a) Gives no error but it doesnt return the value on ASCII format
What I get: 0x0000000000313030
What I want: 0x0000000000313030 (100)
b) calling 'add' on bad self (string expected, got userdata)
如果您有任何建议,我将不胜感激您的帮助。
谢谢你在前进,
马丁
编辑1:
我写了这个代码,将获得该字段的值从每个字节的ASCII表值:
我不不知道如何使其工作,以便它在数据包视图上显示ASCII值。
function getASCII (str)
resultStr = ""
asciiValue=""
for i = 3, string.len(tostring(str))-1, 2 do
asciiValue = string.char(tonumber(tostring(string.sub(tostring(str),i,i+1)), 16))
if asciiValue~=nil then
resultStr = resultStr .. tostring(tonumber(asciiValue))
end
end
resultStr = string.gsub(resultStr, "nil", "")
return resultStr
end
身体和心脏从哪里来?你在哪里使用harer_id?请提供所有相关信息。 – Piglet
harer_id的定义在我共享的代码上。然后,body是来自解剖树的子树,我在此添加harer_id字段 'local tree = root:add(udpProto,tvbuf:range(0,pktlen)) local header = tree:add(header,tvbuf :range(0,HDR_LEN)) local body = tree:add(body,tvbuf:range(9,BODY_LEN))' 这里的问题是如何定义字段,详细区域,ASCII值也将被显示 –
*“我有一个长度为8个字节的字段(但定义为9个字节)”* - 什么? –