作这个程序的意图是wireshark插件编写复杂(虽然也支持lua),而轻量级的工具如smartsniff,minisniff不支持插件化数据分析,
各类工具用下来或多或少不顺手。之前写的外挂也都是手工+写代码的方式分析数据,过程很是痛苦。
于是诞生了这个抓包后可lua脚本分析的工具。但愿对作网络数据分析的同窗有帮助。git
说明:
1.闭源免费。使用raw socket,lua 5.3.1,最大抓取60万数据包,和wireshark/tcpdump文件格式兼容
2.在winxp-32和win10-64测试正常
3.3rd的trace工具是mbcs作的,win10支持的很差,之后有时间移植unicode再支持
4.示例中的监测qq号测试正常
5.下载地址:http://pan.baidu.com/s/1nt1n2jR
6.技术支持qq群466507719,开发版本即时更新到群共享。欢迎测试及功能建议github
程序须要调用的lua接口,参考plugin/example1.lua
(1)init: 插件初始化
(2)handle_data: 当收到一个数据包时调用这个函数,函数return "delete"也能够起到过滤做用
(3)handle_click:当单击列表数据时调用这个函数
(4)handle_double: 当双击列表数据时调用这个函数web
lua中增长的能够回调的程序接口:
plugin_output_clear: 清空plugin output窗口
plugin_output: 输出到plugin output窗口
plugin_summary: 输出到listview最右边的Plugin Summary项
trace: 输出到三方工具,暂未实现
trace_raw: 输出到三方工具,暂未实现bash
图多杀猫
(1)程序大小只有465KB,单独一个可执行文件PowerSniff.exe也能够运行,收集的库可放到lib文件夹,插件自动从plugin文件夹扫描网络
(2)功能界面socket
(3)插件编辑,编译,执行界面tcp
(4)演示监测qq登陆号码
启动程序,菜单选择“Option -> Plugin -> qq number analyse.lua”,start抓包,当qq登陆后Plugin Summary会显示qq号码函数
分析qq号码的脚本:工具
-- qq号码登陆监视脚本(不支持手机号码登陆,不支持webqq,只在pc上用qq2015测试经过) -- 2015.9.14 require "base64" require "tcp_ip" function init() trace("plugin init: ".._VERSION.."\n") trace("package path: "..package.path.."\n") trace("package path: "..package.cpath.."\n") --for k,v in pairs(_G) do -- trace(string.format("%s,%s\n", k, v)) --end end -- protocol: 字符串如tcp,udp,icmp -- data: 二进制数据 -- len_total: 总共数据长度 -- len_data: 有效数据长度(去除各类头以后的数据) function handle_data(protocol,data,len_total,len_data) if 54 == len_total then return "delete" -- remove handshake end src_port = tcp_ip_get_src_port(data) dst_port = tcp_ip_get_dst_port(data) -- if 8000 != src_port && 8000 != dst_port then if (8000 ~= dst_port) or (len_data < 100) then return "delete" end if 2 ~= data:byte(43) then -- 0x2是qq udp协议magic number return "delete" end if 8 ~= data:byte(46) then -- 8和37是 0x8和0x25是协议类型,表示登陆 return "delete" end if 37 ~= data:byte(47) then return "delete" end -- 50, 51, 52, 53字节是qq号(lua index从1开始而不是0) qq_number = data:byte(50) * 256 * 256 * 256 + data:byte(51) * 256 * 256 + data:byte(52) * 256 + data:byte(53) plugin_summary("qq_number is: " .. qq_number) end function handle_click(protocol,data,len_total,len_data) end function handle_double(protocol,data,len_total,len_data) handle_data(protocol,data,len_total,len_data) end
github地址:https://github.com/wjx0912/PowerSniff测试
MIT license