【2019-06-10】使用LUA脚本来扩展wireshark的功能
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-06-10 标题使用LUA脚本来扩展wireshark的功能分类编程 / C C / Lua / 网络通讯 标签wireshark·lua使用LUA脚本来扩展wireshark的功能参考文档lua插件最简单实现过滤IP脚本当我们需要拓展wireshark的功能时有2种办法一种是直接修改源代码重新编译发布这种方式比较复杂但是可以改动到非常底层的功能另一种是写lua插件注册到wireshark中这种方式比较简单但是功能有限不过一般情况下都可以满足我们的需求。wireshark的官方文档第二章节【 II. Wireshark Development 】描述了如何定制和开发wireshark第10节【 10. Lua Support in Wireshark 】和第11节【 11. Wireshark’s Lua API Reference Manual 】描述了wireshark的LUA支持情况由于官方文档写的非常清楚这里就简单的笔记几个实例来描述如何使用wireshark的lua脚本功能。参考文档【 https://www.wireshark.org/docs/wsdg_html_chunked/wsluarm.html 】【 https://www.cnblogs.com/zzqcn/p/4827251.html 】lua插件最简单实现新建一个hello_wireshark.lua文件内容如下windownillocalfunctiondemo_main_dlg(user_input)windowTextWindow.new(hello_wireshark demo)window:append(user_input)endlocalfunctiondemo_input_dlg()new_dialog(input demo,demo_main_dlg,please input:)endregister_menu(lua_demo/hello_wireshark,demo_input_dlg,MENU_TOOLS_UNSORTED)然后打开wireshark点击菜单栏**【 帮助 】-【 关于wireshark 】-【 文件夹 】找到 全局配置 **如下图然后打开全局配置文件夹修改文件夹下的init.lua将 hello_wireshark.lua 注册到Wireshark中 。如下图重新打开wireshark点击菜单栏**【 工具 】**就可以看到我们的插件了如下图如果我们修改了lua插件可以点击菜单栏**【 分析 】- 【 重新载入Lua插件 】或者快捷键 Ctrl Shift L ** 来生效不用重启wireshark。过滤IP脚本下面我们笔记一个可以简单过滤IP的lua脚本内容如下windownil-- 判断指定元素value是否在数组tab中localfunctionis_include(value,tab)fork,vinipairs(tab)doifvvaluethenreturntrueendendreturnfalseend-- 将一个字符串分割为一个数组localfunctionsplit_string(input,delimiter)inputtostring(input)delimitertostring(delimiter)if(delimiter)thenreturnfalseendlocalpos,arr0,{}forst,spinfunction()returnstring.find(input,delimiter,pos,true)enddotable.insert(arr,string.sub(input,pos,st-1))possp1endtable.insert(arr,string.sub(input,pos))returnarrend-- 支持多个IP地址输入每个IP间使用,进行分割-- 输入的IP数组localinput_ip_tablenillocalfunctiondemo_main_dlg(input_ips)input_ip_tablesplit_string(input_ips,,)windowTextWindow.new(hello_wireshark demo)localtapListener.new()localfunctionremove()tap:remove()endwindow:set_atclose(remove)functiontap.packet(pinfo,tvb)if(not(is_include(tostring(pinfo.src),input_ip_table)oris_include(tostring(pinfo.dst),input_ip_table)))thenreturnendcontentstring.format(idx:%d %s:%d %s:%d,pinfo.number,pinfo.src,pinfo.src_port,pinfo.dst,pinfo.dst_port)window:append(content.. )endfunctiontap.draw()endfunctiontap.reset()window:clear()endretap_packets()-- 将输入的IP地址做成filter字符串放到wireshark主进程里面localfilter_patternnilfori,dev_ipinipairs(input_ip_table)doif(filter_patternnil)thenfilter_patternstring.format(ip.addr %s,dev_ip)elsefilter_patternfilter_pattern..string.format( or ip.addr %s,dev_ip)endendset_filter(filter_pattern)apply_filter()endlocalfunctiondemo_input_dlg()new_dialog(input ipaddr,demo_main_dlg,ips:)endregister_menu(lua_demo/hello_wireshark,demo_input_dlg,MENU_TOOLS_UNSORTED)我们可以测试下该插件的效果使用wireshark打开一个抓包报文文件然后重新载入下Lua插件然后输入IP255.255.255.255可以看到效果了。如下图

相关新闻

【2019-06-18】【转】完全理解ICMP

【2019-06-18】【转】完全理解ICMP

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2019-06-18 | 标题:【转】完全理解ICMP | 分类: 网络通讯 | 标签: IC…

2026/7/21 8:55:18 阅读更多 →
YOLO训练文件生成问题排查与解决方案

YOLO训练文件生成问题排查与解决方案

1. 问题现象与背景分析最近在配置YOLO目标检测训练环境时,很多开发者遇到一个典型问题:运行voc_label.py脚本时无法正常生成2025_train.txt、2025_val.txt和train.txt这三个关键文件。这些文件是YOLO训练过程中定义数据集划分的核心配置文件,…

2026/7/21 8:54:18 阅读更多 →
Lenovo Legion Toolkit 技术深度剖析:开源硬件控制架构解析与实战指南

Lenovo Legion Toolkit 技术深度剖析:开源硬件控制架构解析与实战指南

Lenovo Legion Toolkit 技术深度剖析:开源硬件控制架构解析与实战指南 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit…

2026/7/21 8:54:17 阅读更多 →

最新新闻

Linux包管理利器yum:从基础使用到企业级运维

Linux包管理利器yum:从基础使用到企业级运维

1. yum命令概述与核心价值yum(Yellowdog Updater Modified)作为RPM系Linux发行版的核心包管理工具,其设计哲学完美体现了Linux系统的自动化管理理念。我在运维CentOS服务器的十年间,yum始终是日常工作中使用频率最高的命令之一。与…

2026/7/22 11:03:57 阅读更多 →
微控制器外设电源与时钟门控:TM4C1292低功耗管理实战

微控制器外设电源与时钟门控:TM4C1292低功耗管理实战

1. 微控制器外设管理的核心:电源与时钟门控在嵌入式开发,尤其是电池供电的物联网设备或便携式仪器项目中,功耗优化是贯穿整个设计周期的核心挑战。我们常常需要让设备在99%的时间里处于极低功耗的睡眠状态,只在特定事件触发时才唤…

2026/7/22 11:03:57 阅读更多 →
使用Claude AI与MCP监控优化n8n自动化工作流

使用Claude AI与MCP监控优化n8n自动化工作流

1. 为什么需要AI助手监控n8n工作流在自动化工作流管理领域,n8n已经成为许多开发者和企业的首选工具。这个开源工作流自动化平台以其灵活的节点连接方式和强大的集成能力著称。但随着工作流复杂度的提升,单纯依赖人工监控已经显现出明显瓶颈。我最近为一个…

2026/7/22 11:03:57 阅读更多 →
TI MCU时钟系统实战:LPOCLKDET与PLL配置避坑指南

TI MCU时钟系统实战:LPOCLKDET与PLL配置避坑指南

1. 项目概述与核心价值在嵌入式系统开发,尤其是汽车电子、工业控制这类对可靠性和功耗有严苛要求的领域,时钟系统就像是整个系统的“心跳”。这颗“心跳”不仅要稳定、精准,还要能在不同工况下灵活切换,比如在待机时“慢跳”以省电…

2026/7/22 11:03:57 阅读更多 →
OpenClaw与飞书集成:企业自动化办公实战指南

OpenClaw与飞书集成:企业自动化办公实战指南

1. 项目背景与核心价值 OpenClaw作为一款新兴的自动化工具平台,其与飞书的集成能力正在成为企业数字化办公的重要突破口。这个教程要解决的核心痛点在于:很多非技术背景的行政、HR、运营人员需要将日常重复性工作自动化,但面对API对接、权限配…

2026/7/22 11:03:56 阅读更多 →
TMS320C6000 DSP EMIF异步接口配置与Flash存储器驱动开发实战

TMS320C6000 DSP EMIF异步接口配置与Flash存储器驱动开发实战

1. 项目概述与核心价值在嵌入式DSP系统开发中,如何让高速的处理器与相对“慢速”的外部Flash存储器稳定、高效地对话,是每个工程师都会遇到的经典难题。TMS320C6000系列DSP强大的外部存储器接口(EMIF)为解决这个问题提供了硬件基础…

2026/7/22 11:02:56 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻