无法在 Wireshark/Lua 插件中将字符串显示为 XML 树
2020-7-9 17:25:0
收藏:0
阅读:116
评论:2
我有一个 数据包流 包括经过加密的 XML 负载。 我正在开发一个 Wireshark/Lua 插件,在解密后显示 XML 数据。这是我现在拥有的:
decoded_buffer = ProtoField.string("tacserver.decoded_buffer", "XML")
.....
function tacserver_protocol.dissector(buffer, pinfo, tree)
.....
local decoded_string = decode(buffer(10))
subtree:add(decoded_buffer, decoded_string)
local xml_dis = Dissector.get("xml")
local byte_array = ByteArray.new(decoded_string)
local tvb = ByteArray.tvb(byte_array, "XMLdata");
xml_dis:call(tvb, pinfo, tree)
我调用 decode 函数来解密 XML 负载并将结果存储在 decoded_string 中。在 Wireshark 中,当将数据显示为字符串时,输出是正确的。
XML [truncated]: <?xml version="1.0" encoding="UTF-8" ?>\n<body>\n<TacServerInfo...
eXtensible Markup Language
但是,调用 XML 解析器不会生成任何输出。我需要做什么才能将解码后的数据转储为 XML 树?谢谢!
以下是版本信息:
版本 2.6.10(作为 2.6.10-1~ubuntu18.04.0 打包的 Git v2.6.10)
版权所有 1998-2019 Gerald Combs <gerald@wireshark.org> 和贡献者。 许可证 GPLv2 +:GNU GPL 版本 2 或更高版本 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html> 这是免费软件;有关复制条件,请参阅源代码。 没有保修;甚至没有适合特定用途的适用性。
使用 Qt 5.9.5(64 位编译),使用 libpcap,使用 POSIX 能力(Linux),使用 libnl 3,GLib 2.56.4,zlib 1.2.11,SMI 0.4.8,c-ares 1.14.0,Lua 5.2.4,GnuTLS 3.5.18,Gcrypt 1.8.1,MIT Kerberos,MaxMind DB 解析器,nghttp2 1.30.0,LZ4,Snappy,libxml2 2.9.4,QtMultimedia,SBC,SpanDSP,没有 bcg729。
在 Linux 5.3.0-61-generic 上运行,使用 Intel(R) Core(TM) i5-7440HQ CPU @ 2.80GHz(带 SSE4.2),具有 3864 MB 物理内存,具有本地化 en_US.UTF-8,具有 libpcap 版本 1.8.1,具有 GnuTLS 3.5.18,具有 Gcrypt 1.8.1,具有 zlib 1.2.11,支持二进制插件(加载了 14 个)。 使用 GCC 7.4.0 构建。
Wireshark 是根据 GNU 通用公共许可证发布的开放源代码软件。
有关更多信息,请参阅 man 页面和 http://www.wireshark.org。
点赞
用户7218062
我找到了问题所在。解码后的字符串是一个原始字符串,所以我需要将代码改为:
byte_array = ByteArray.new(decoded_string, true)
2020-07-09 18:04:49
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我认为这只是一个简单的问题,就是将对
Dissector.get("xml")的调用移到tacserver_protocol.dissector()函数之外,也就是:local xml_dis = Dissector.get("xml") function tacserver_protocol.dissector(buffer, pinfo, tree) ..... local decoded_string = decode(buffer(10)) subtree:add(decoded_buffer, decoded_string) local byte_array = ByteArray.new(decoded_string) local tvb = ByteArray.tvb(byte_array, "XMLdata"); xml_dis:call(tvb, pinfo, tree) ..... end