本文是雪域论坛的一篇优秀文章
参见雪论坛作者ID:楼
数据包嗅探分析工具
代码云git地址:
https://gitee.com/lougd/snifferview.git
已编译的可执行文件:
https://pan.baidu.com/s/1XapqLl7YgjkO5yhrNPqehg
作者联系方式:QQ:412776488 mail:lougdhr@126.com
如果你觉得这个工具对你有帮助,请点一颗星,谢谢!
发展记录
这个工具的第一个版本是在2015年制作的,因为经常需要在不同的终端PC上进行数据包捕获和网络协议分析,而wireshark一直用于数据包捕获分析。wireshark的安装包比较大,每次安装都太繁琐,不支持环回网络包的捕获,所以决定自己做包协议分析工具。
所以有了这个工具的第一个版本。然后在使用的同时丰富工具的功能,现在就有这个版本了。
主要功能和特点
该工具不是一个演示,而是一个稳定、实用、功能强大的网络数据包修改和分析工具。如果需要经常捕获、分析和记录网络数据包,可以使用这个工具。
支持本地所有网卡的网络封包嗅探捕获,包括127地址的回环包。支持类似wireshark的封包过滤语句,方便灵活的对网络封包进行过滤。支持tcp流追踪功能,方便的跟踪单个的tcp数据流。支持进程网络状态探测,可以方便的查看指定进程的网络状态。支持已捕获网路数据的导入导出,可以方便的随时dump已捕获的网络数据。工具小巧,绿色(1mb多,只有一个可执行文件),无任何依赖,启动运行速度快。C++语言开发,vs2008集成工具开发工具编译,用vs2008打开工程根目录下的SnifferView.sln工程文件编译即可。工具功能截图
软件体系结构
ComLib子项目:
基本功能的静态库为每个子功能提供通用的基本功能组件。
SnifferView子项目:
主要功能模块实现主要功能,包括网络数据包嗅探、过滤语句编译解析器实现、网络协议分析、数据流查看等。
转储子项目:
异常捕获处理模块捕获未处理的异常,并生成异常转储和异常日志,用于分析异常的原因。
语法视图子项目:
语法高亮控件,基于Scintilla,目前用于显示tcp数据流。
指令
这个程序只有一个可执行程序,程序启动后就开始包嗅探。但是由于此时没有过滤语句,会捕获到很多数据包,所以可以在主界面的过滤规则框中输入合适的过滤规则来捕获感兴趣的网络数据包。特定的过滤规则和wireshark类型已经过优化。主要规则如下。
嗅探器查看过滤规则:
嗅探器视图的过滤器语法示例:
Ip.addr== 192.168。168.231过滤ip源地址或目的地址为192.168的网络数据包。168.231
Icmp过滤icmp协议的数据包
Tcp.src== 8345使用Tcp源端口8345过滤网络数据包
tcp.length>。128过滤长度大于128字节的tcp数据包,不包括ip报头和tcp报头
Tcp包含“获取”过滤器,过滤内容中带有获取字符串的TCP数据包
Tcp[ 4:n32]== 0x12ff过滤偏移4字节的Tcp用户数据,以获取32位数据大小为0x12ff的数据包
Tcp.flag.syn过滤标有syn的Tcp数据包
Tcp[字符]==“获取”过滤数据包,其TCP用户数据偏移量为0字节
Http过滤http协议
Http。获取过滤器http的获取协议
Http.post筛选器http post协议
Http.resp过滤Http的返回数据包
http.url contains "img"过滤http的url中包含img字符串的封包 Http.url包含“img”过滤http . URL中包含img字符串的数据包
过滤规则的关键字:
Ip层:IP,IP.addr,IP.src,IP.dst,IP.length。
Icmp层:icmp
Tcp层:tcp.port,tcp.src,tcp.dst,tcp.length,tcp . flag . syn | ack | fin | rst | psh | urg,tcp [a: b] (a为偏移量,b为具体数据类型,no a表示偏移量为0),TCP包含“aaa”
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位无符号整数)、字节(与N8相同)、字节(字节列表)、字符(字符类型)、字符(字符串)
过滤规则的逻辑连接器:
>。(大于),:=(大于或等于),
过滤器表达式可以用和(&:& amp;)或或(||),可以使用括号,如长度大于128的GET包或POST包:
tcp.length>。128 and(TCP[chars]= " GET " or TCP[chars]= " POST ")
与wireshark相比,嗅探器新语法的主要改进:
wireshark过滤包内容时,语法是tcp[ a:b],其中A是偏移量,B是匹配长度,偏移量从tcp头开始,tcp头还是比较长的,只能逐字节匹配,不方便使用。我们通常不关注tcp报头中的内容,而是关注用户数据的内容。因此,当嗅探器视图过滤内容时,偏移量从用户数据开始。程序自动计算tcp报头长度,支持各种数据类型匹配,自动计算匹配长度。如果匹配字符串中有nr,将自动改为回车换行。
例如:
Tcp[ 4:n16]== 0x33ee从用户数据偏移4个字节,以匹配大小为0x33ee的16位整数数据
Tcp[ 5:chars]== "aaaa "从用户数据偏移5个字节,以匹配字符串aaaa
关于配置界面中的主机字节顺序和网络字节顺序:
选择主机字节顺序意味着数据包中的数据以主机字节顺序存储,选择网络字节顺序意味着数据包中的数据以网络字节顺序存储。
例如:
tcp[ 4:n32]== 0x12345678
如果选择主机字节顺序,它将从用户数据偏移4字节的位置依次匹配0x78、0x56、0x34、0x12
如果选择网络字节顺序,它将从用户数据偏移4字节的位置开始依次匹配0x12、0x34、0x56、0x78
关于作者
QQ:412776488 mail:lougdhr@126.com
有什么问题或者好的建议可以联系作者。谢谢!
见雪id:娄国栋
https://bbs.pediy.com/user-468728.htm
*本文原作者是观雪论坛娄国栋。请注明来自观雪社区
高级安全圈,我必须读的一本书
﹀
﹀
﹀
1.《sniffer 开源自己开发的一些工具--封包嗅探工具SnifferView》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《sniffer 开源自己开发的一些工具--封包嗅探工具SnifferView》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1087732.html