首页
社区
课程
招聘
[原创]SnifferView(封包嗅探分析工具)-更新至1.0.0.23 加入工具条,菜单,加入进程网络状态查看功能
发表于: 2015-5-12 09:41 27949

[原创]SnifferView(封包嗅探分析工具)-更新至1.0.0.23 加入工具条,菜单,加入进程网络状态查看功能

2015-5-12 09:41
27949
关于网络分析工具SnifferView:
SnifferView是一个网络分析工具,体积小巧,速度快,支持类似抓包工具Wireshark的过滤语句。
支持Tcp,Udp,Http等协议的分析,以后还会加入更多的协议。
支持网络数据的导入和导出。
支持应用程序网络状态的查看分析,并且支持通过多种过滤方式进行进程的筛选。
支持根据窗体获取应用程序的网络状态等功能。

SnifferView界面截图:




SnifferView的过滤规则设置功能:
可以通过三种方式唤出规则设置对话框:点击工具栏上的规则设置按钮,或者在ListCtrl窗体上右键选择过滤规则,或者通过Ctrl+H可以弹出过滤规则设置对话框,可以在过滤规则编辑框或者显示规则对话框中输入过滤语句,过滤语句的语法跟WireShark的过滤语句很像,可以点击旁边的帮助按钮查看过滤语句的语法规则,输入完成后直接按回车键即可。比如我们对8222端口的tcp封包比较感兴趣,可以在过滤规则的编辑框内输入tcp.port==8222,然后我们想筛选出来自ip为152.32.34.122的封包,我们就可以在显示规则的编辑框中输入ip.addr==152.32.34.122,这样我们需要的封包就筛选出来了,以后还会支持更多的协议类型。
注:规则分两种,过滤规则和显示规则,符合过滤规则的封包会保存在内存里,可以随时导出到文件或者通过显示规则来进行查看,显示规则会将符合规则的封包从过滤规则的封包中查询出来展示在主界面上。

SnifferView的网络状态查看功能:
点击工具栏的网络状态按钮即可弹出应用程序网路状态的对话框,可以通过三种方式来选择查看指定应用程序的网络状态,不设置的话就是查看所有应用程序的网络状态,比如如果我们想查看QQ.exe的网络状态,我们可以选择按进程路径或者名称进行过滤,然后在编辑框中输入QQ.exe然后按回车即可,进程路径中包含QQ.exe的所有进程的网络状态就会被筛选出来,左键双击其中的数据会弹出进程的详细信息,包括进程的全路径,版本号等等。

SnifferView的按窗口查看网络状态功能:
这个功能跟VS附带的窗口查看工具Spy++的用法很像,鼠标移动到工具栏的查找窗口按钮按下别松开,然后将鼠标移动到我们想要查看的窗口上面,松开,就会弹出窗口所属进程的详细的信息,包括网络状态,进程的全路径,版本号等等,这个功能用于对付右下角经常弹出的小广告很有效。

SnifferView更新记录:
V1.0.0.23 2015/08/13
1.SnifferView加入了菜单和工具栏,操作更加方便
2.加入了查看应用程序网络状态查看功能,对于新增的记录和消失的记录有渐变效果,方便查看
3.应用程序网络查看功能可以分三种方式进行过滤(按应用程序名或者路径,按pid,按端口)
4.加入根据窗口搜索进程网络状态的功能,使用方法类似spy++
5.去除多余的调试信息
6.进程网络状态支持多条过滤规则,规则之间用;分割


V1.0.0.13 2015/07/13
1.加入了对应用层http协议的支持,加入了若干个http协议的过滤语法,具体参见帮助文档
2.不同的网络链接使用不同的背景色进行了区分
3.优化的过滤规则的语法,更加简洁,比如:tcp.srcport调整为tcp.src, tcp.dstport调整为tcp.dst,具体的参见帮助文档
4.协议类型加入了http的支持
5.加入暂停嗅探功能
6.使用压缩壳,可执行文件体积更加小巧

功能展示:




SnifferView过滤规则
SnifferView的过滤语法举例:
ip.addr==192.168.168.231   过滤ip源地址或者目标地址为192.168.168.231的网络封包
tcp.src==8345              过滤tcp源端口为8345的网络封包
tcp.length>128             过滤长度大于128字节的tcp封包,这个长度刨除ip头和tcp头
tcp contains "GET"         过滤内容中包含GET字符串的tcp封包
tcp[4:n32]==0x12ff         过滤tcp用户数据偏移4字节取一个32位数据大小为0x12ff的封包
tcp.flag.syn               过滤有syn标记的tcp封包
tcp[chars]=="GET"          过滤tcp用户数据偏移O字节为GET的封包、
http                       过滤http协议
http.get                   过滤http的get协议
http.post                  过滤http post协议
http.resp                  过滤http的返回包
http.url contains "img"    过滤http的url中包含img字符串的封包

过滤规则的关键字:
ip层:ip, ip.addr, ip.src, ip.dst, ip.length
tcp层:tcp.port, tcp.src, tcp.dst, tcp.length,tcp.flag.syn|ack|fin|rst|psh|urg, tcp[a:b](a为偏移,b是具体的数据类型,没有a的意思是偏移为0), tcp contains “aaa”(包含字符串aaa的tcp封包)
udp层:和tcp类似,不再赘述

应用层协议:
http协议:http, http.get, http.post, http.head, http.options, http.put, http.delete, http.tarce, http.url contains "aaa"(http的url包含aaa的封包)

过滤规则的数据类型(用于tcp[a:b]或者udp[a:b]):
n8(8位无符号整型),n16(16位无符号整型),n32(32位无符号整型),byte(同n8),bytes(byte列表),char(字符型),chars(字符串)

过滤规则的逻辑连接符:
>(大于), <(小于), >=(大于等于), <=(小于等于), ==(等于), !=(不等于), &(按位与)

各个过滤表达式可以用and(&&)或者or(||)进行连接,可以使用小括号 比如获取长度大于128的GET包或者POST包:
tcp.length>128 and (tcp[chars]==”GET” or tcp[chars]== “POST”)

SnifferView语法相对wireshark的主要改进:
wireshark过滤封包内容的时候语法是这样的tcp[a:b],a为偏移,b为匹配的长度,偏移是从tcp头开始的,并且tcp头还是变长的,并且只能按字节逐个匹配,用起来很不方便,我们通常关注的并不是tcp头中的内容,而是用户数据的内容,因此SnifferView过滤内容的时候偏移是从用户数据开始的,程序自动计算tcp头的长度,支持各种的数据类型的匹配,自动计算匹配的长度,如果匹配的字符串里有\n\r将自动换为回车和换行。
比如:
tcp[4:n16]==0x33ee             从用户数据偏移4字节匹配一个16位整型数据,大小为0x33ee
tcp[5:chars]=="aaaa"            从用户数据偏移5个字节匹配一个字符串aaaa

关于配置界面里的主机字节序和网络字节序:
选主机字节序的意思是封包里的数据是以主机字节序的方式存储的,选网络字节序的意思是封包里的数据是以网络字节序存储的。
比如:
tcp[4:n32]==0x12345678
如果选的是主机字节序会从用户数据偏移4字节的地方开始依次匹配0x78,0x56,0x34,0x12
如果选的是网络字节序会从用户数据偏移4字节的地方开始依次匹配0x12,0x34,0x56,0x78

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (26)
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
能设定过滤规则,好酷
2015-5-12 09:52
0
雪    币: 2325
活跃值: (4832)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不能暂停捕获··不好!!
2015-5-12 10:03
0
雪    币: 577
活跃值: (900)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
暂停的话可以通过网卡配置界面进行设置
2015-5-12 10:12
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
你的Sniffer不能用了,你也不更新...也快1年了,也不开源...
2015-5-12 10:35
0
雪    币: 577
活跃值: (900)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
shilyx 你的粉丝啊。
2015-5-12 10:44
0
雪    币: 16386
活跃值: (1600)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
http://bbs.pediy.com/showthread.php?p=1370298#post1370298

请老师 把这个  给我 拿下。
2015-5-12 10:53
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
原来snffier是你的,你能在加个自定义封包发送的功能吗,或者扩展插件接口,我们自己写一个解密算法好用
2015-5-12 13:52
0
雪    币: 577
活跃值: (900)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
这个工具是基于raw嗅探的,定位是嗅探和分析网络封包的,所以没有封包发送的功能。
2015-5-12 14:58
0
雪    币: 233
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好酷,想问一下过滤过则的部分的思路
2015-5-23 20:26
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不错,感谢分享
2015-5-23 20:52
0
雪    币: 577
活跃值: (900)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
过滤规则的实现思路比较复杂,大体的流程是先分析过滤规则串,将单个的过滤规则提取出来,然后进行合并,优先合并小括号里的过滤规则,然后对生成的规则进行优化,最后生成比较高效的并可以直接使用的过滤规则的集合,用这个集合对封包进行过滤。
2015-5-25 09:17
0
雪    币: 30
活跃值: (1292)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
要是能公布源码更好
2015-5-31 09:31
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
能开源给我们学习下吗
2015-5-31 10:55
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
看起来还不错,能开源就更好了
2015-5-31 11:24
0
雪    币: 577
活跃值: (900)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
加入http协议的支持。
2015-7-17 14:08
0
雪    币: 577
活跃值: (900)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
升级,加入菜单工具栏,加入进程网络状态查看功能。
2015-8-3 10:24
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
18
mark 备用。。。。谢谢楼主
2015-8-5 14:17
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
又更新啦,不错
2015-10-10 09:08
0
雪    币: 144
活跃值: (335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
支持一个 好东西
2015-10-10 09:22
0
雪    币: 326
活跃值: (56)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
支持一下Raw socket。
2015-10-10 09:25
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
厉害 这个支持~
2015-10-10 09:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这个和SRSniffer网络监听 V0.61  啥区别啊
2015-10-15 12:54
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
动了。。。 真不错,但是 下面的。。。。封包不让复制啊。
2016-1-20 16:26
0
雪    币: 6525
活跃值: (3373)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
希望新版能把配置保存到ini中,并且希望能复制下面的数据
2016-2-16 14:58
0
游客
登录 | 注册 方可回帖
返回
//