做这个程序的意图是wireshark插件编写复杂(虽然也支持lua),而轻量级的工具如smartsniff,minisniff不支持插件化数据分析,
各种工具用下来或多或少不顺手。以前写的外挂也都是手工+写代码的方式分析数据,过程非常痛苦。
因而诞生了这个抓包后可lua脚本分析的工具。希望对做网络数据分析的同学有帮助。

说明:
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,开发版本即时更新到群共享。欢迎测试及功能建议


程序需要调用的lua接口,参考plugin/example1.lua
(1)init: 插件初始化
(2)handle_data: 当收到一个数据包时调用这个函数,函数return "delete"也可以起到过滤作用
(3)handle_click:当单击列表数据时调用这个函数
(4)handle_double: 当双击列表数据时调用这个函数

lua中增加的可以回调的程序接口:
plugin_output_clear: 清空plugin output窗口
plugin_output: 输出到plugin output窗口
plugin_summary: 输出到listview最右边的Plugin Summary项
trace: 输出到三方工具,暂未实现
trace_raw: 输出到三方工具,暂未实现


图多杀猫
(1)程序大小只有465KB,单独一个可执行文件PowerSniff.exe也可以运行,收集的库可放到lib文件夹,插件自动从plugin文件夹扫描

(2)功能界面

(3)插件编辑,编译,执行界面

(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

开源抓包工具PowerSniff(支持lua,c语言作为脚本实时分析)的更多相关文章

  1. 抓包工具之—charles碎言碎语

    一.Charles常见使用场景: 1.Charles是跨平台的抓包工具,支持Windows,mac或Linux平台: 2.获取请求信息.测试接口时,若接口文档中的参数不清楚或没有接口文档时,可以通过抓 ...

  2. 几款抓包工具在windows,mac,linux下的支持分析

    抓包工具的使用 几款抓包工具在windows,mac,linux下的支持分析 抓包工具简介 Chrome/Firefox 开发者工具: 浏览器内置,方便易用 Fiddler/Charles: 基于代理 ...

  3. ethereal抓包工具

    ethereal是目前网络上开源的一款功能强大的以太网抓包工具,该软件可以监听异常封包,检测软件封包问题,从网络上抓包,并且能对数据包进行分析,从而帮助用户解决各种网络故障,更加方便查看.监控TCP ...

  4. 腾讯出品的抓包工具Rythem

    Mac下一直没有fiddler这样好用的抓包工具,Charles要收费,难免不爽,昨天调研国内项目的时候,看到腾讯开源了一款抓包工具Rythem,试用了一下,基本配置无问题,但是通配符方面不太搞的定. ...

  5. Fiddler4入门--手机抓包工具安装和使用说明

    Fiddler4入门--手机抓包工具安装和使用说明.电脑最好是笔记本连同一个wifi,这样能和手机保持统一局域网内. 很多区块链dapp项目方风控做的很差,利用fiddler抓包分析找一些漏洞,然后利 ...

  6. HttpCanary——最强Android抓包工具!

    迎使用HttpCanary——最强Android抓包工具! HttpCanary是一款功能强大的HTTP/HTTPS/HTTP2网络包抓取和分析工具,你可以把他看成是移动端的Fiddler或者Char ...

  7. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...

  8. mac端的优秀抓包工具——Charles使用

    http://my.oschina.net/u/2340880/blog/508688 mac端的优秀抓包工具——Charles使用 一.简介 二.安装与使用 三.使用Charles在mac上进行抓包 ...

  9. Android常用抓包工具之TcpDump

    ➠更多技术干货请戳:听云博客 做为一个测试人员,工作中经常会用到数据抓包工具来进行数据分析和验证,下面就简单介绍一下工作中常用的抓包工具. TcpDump抓包 Tcpdump是一个用于截取网络分组,并 ...

随机推荐

  1. Java 用jxl读取excel并保存到数据库(此方法存在局限,仅限本地电脑操作,放在服务器上的项目,需要把文件上传到服务器,详细信息,见我的别的博客)

    项目中涉及到读取excel中的数据,保存到数据库中,用jxl做起来比较简单. 基本的思路: 把excel放到固定盘里,然后前段页面选择文件,把文件的名字传到后台,再利用jxl进行数据读取,把读取到的数 ...

  2. 这次齐了!Java面向对象、类的定义、对象的使用,全部帮你搞定

    概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备自 ...

  3. Python判断是否为数字

    前言 Python isdigit()方法检测字符串是否只由数字组成. isdigit()方法语法: str.isdigit() 如果字符串只包含数字则返回 True 否则返回 False. 示例 x ...

  4. jmeter多用户登录并发测试

    在使用Jmeter进行性能测试时,我们通常会需要配置多个不同用户进行并发测试,这里简单介绍一下配置方法. 1.运行Jmeter.bat,  在打开的测试计划中右键添加一个线程组: 2.在线程组下添加录 ...

  5. mq内存映射

    MappedFileQueue的封装 MappedFileQueue是MappedFile的管理容器,MappedFileQueue是对存储目录的封装. 查找MappedFile: 1.根据时间戳来查 ...

  6. 天池新闻推荐比赛1:赛题理解+baseline

    天池新闻推荐比赛1:赛题理解+baseline 一.比赛信息 比赛链接: ​ https://tianchi.aliyun.com/competition/entrance/531842/inform ...

  7. Django搭建示例项目实战与避坑细节

    Django 开发项目是很快的,有多快?看完本篇文章,你就知道了. 安装 Django 前提条件:已安装 Python. Django 使用 pip 命令直接就可以安装: pip install dj ...

  8. 喜欢 Dapper 的朋友看过来,送一份厚礼

    写在开头 众所周知 Dapper 是 .NET 下最轻最快的 ORM,它是喜欢写 SQL 码农的福音,相对于 SqlHelper 它更加方便,据统计 10个 .NETer 有 9个 用过 Dapper ...

  9. 第7.23节 Python使用property函数定义属性简化属性访问的代码实现

    第7.23节 Python使用property函数定义属性简化属性访问的代码实现 一.    背景       在本章前面章节中,我们介绍了类相关的知识,并举例进行了说明,在这些例子中会定义一些形如 ...

  10. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件移除选项卡的removeTab和clear方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 要从一个QTabWidget中去除选项卡,可用使用removeTab和clear方法. 1.移除选项 ...