パケット内のデータをintに変換しようとしていますが、動作していません。サブツリーにフィールドを正しく追加することはできましたが、他の作業を行うために整数としてデータにアクセスしたいと思います。Lua Dissectorを使ってWiresharkのパケットから整数にデータを変換するには?
私は以下の変数lenをintとして使うことができますが、 "tonumber"メソッドを使用しようとすると "Nil"が返されます。私はそれを "tostring"を使って文字列に変換できますが、numberメソッドにはどこも行きません。
私は整数に変換するには、次のコードを使用していくつかの例を見ました:
local len = buf(0,4):uint32()
をしかし、私は私のマシン上でそれを実行したときには、次のエラーを生成します。ここでは
Lua error: attempt to call method "uint32" (a nil value)
ですコード私はそれがどこにコメントされた以外のすべてを正しく行う:
{rest of code}
-- myproto dissector function function
function (my_proto.dissector (buf, pkt, root)
-- create subtree for myproto
subtree = root:add(my_proto, buf(0))
-- add protocol fields to subtree
subtree:add(f_messageLength, buf(0,4))
-- This line does not work as it returns a nil value
local len = tonumber(buf(0,4))
-- This line produces a "bad argument #1 to 'set' (string expected, got nil) error"
-- add message len to info column
pkt.cols.info:set((tostring(len))))
end
end
{rest of code}
私の質問はどのように私は作業することができます整数にユーザーデータ型を変換するのですか?
それはうまくいきました。ありがとう、これは私をたくさん助けました。 – Peter