分享我做的一个封包嗅探和分析工具
主界面:

配置界面:

网卡选择界面:

【SnifferView介绍】
SnifferView是一款基于raw socket嗅探的网络封包嗅探,分析工具,它的特点如下:
通过raw嗅探获取ip层网路封包,绿色,精巧,不需要驱动,不需要安装,只有一个应用层的可执行文件大约300多KB
支持类似wireshark过滤器的过滤语句,并从一个普通程序员的角度出发做了一些调整和优化
网络封包的处理使用了多重缓存机制,不会因为封包的分析阻塞网络数据的接收
主界面大小可变,可以随意拖动,并且提供了gdi自绘的hex控件,支持高亮展示封包数据并且高亮内容支持配置
提供了网卡选择界面,可以通过配置嗅探你感兴趣网卡的网络封包
支持将嗅探到的网络封包保存成文件,支持封包文件数据的导入和分析
主界面网络封包的展示采取了特殊的处理,在网络流量很大的情况(2m/秒以上)或者封包总数很多的情况(总数超过50万条)下不会感到不流畅
PS:SnifferView嗅探网络数据需要admin权限,防火墙可能会影响嗅探结果,如果发现有部分封包不能正常的嗅探可以把防火墙关掉再试一下。
有BUG或者是瑕疵请告诉我,有好的过滤规则的点子也可以告诉我,如果好的话可以加进去。
【SnifferView过滤语法】
SnifferView的过滤语法举例:
ip.addr==192.168.168.231 过滤ip源地址或者目标地址为192.168.168.231的网络封包
tcp.port==8222 过滤tcp端口为8222的网络封包
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的封包
过滤规则的关键字:
ip层:ip, ip.addr, ip.srcaddr, ip.length
tcp层:tcp.port, tcp.srcport, tcp.dstport, tcp.length,tcp.flag.syn|ack|fin|rst|psh|urg, tcp[a:b](a为偏移,b是具体的数据类型,没有a的意思是偏移为0), tcp contains “aaa”(包含字符串aaa的tcp封包)
udp层: udp.port, udp.srcport, udp.dstport, udp.length, udp[a:b], udp contains “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
SnifferView下载链接:http://download.csdn.net/detail/u011391040/8695273
相关推荐
电信运营基于分类模型的客户流失预警系统:数据挖掘驱动的精准挽留策略设计
内容概要:本文围绕电信客户流失预警与挽留策略,构建了一套从数据探索、预处理、特征工程、分类建模、模型评估与解释到业务落地的端到端数据挖掘实战方案。基于公开的 Telco Customer Churn 数据集,项目聚焦于识别高流失风险客户,并通过逻辑回归、随机森林和XGBoost等模型进行对比分析,结合ROC-AUC、精确率、召回率、F1等指标评估性能,利用SHAP等方法实现模型可解释性,最终将预测结果转化为可操作的客户分层与差异化挽留策略。文中强调了数据泄漏防范、类别不平衡处理、模型可复现性及A/B测试验证增量收益的重要性,并明确指出当前图表为示意性质,需通过附录代码运行真实数据生成结果。; 适合人群:具备一定数据分析与机器学习基础,从事数据科学、用户运营或客户留存相关工作的从业者,尤其是工作1-3年希望提升实战能力的研发与分析人员。; 使用场景及目标:①掌握客户流失预测的全流程方法论,包括数据清洗、特征工程、建模调参与模型解释;②学习如何将机器学习模型输出转化为可运营的客户触达策略;③理解模型评估与业务目标之间的衔接,如预算约束下的优先级排序与A/B测试设计; 阅读建议:此资源以实际业务场景驱动,不仅关注算法实现,更重视从业务定义到策略落地的闭环逻辑。建议结合附录提供的完整Python代码,在本地环境中下载数据集并复现分析流程,重点关注数据预处理防泄漏机制、模型管道构建、超参数调优策略及SHAP解释应用,避免将文中的示意图表误认为实测结果。
旋转高频信号注入法在PMSM零低速无位置控制中的仿真研究(Matlab代码实现)
内容概要:本文系统研究了旋转高频信号注入法在永磁同步电机(PMSM)零低速无位置传感器控制中的应用,并提供了基于Matlab/Simulink的完整仿真代码实现。针对PMSM在启动及低速运行时反电动势微弱导致传统观测器失效的问题,该方法通过在定子绕组中注入高频旋转电压信号,利用电机自身凸极效应产生的响应电流特征,实现对转子位置的高精度在线估计。文中详细阐述了该技术的理论基础、数学建模过程、仿真系统架构设计以及关键参数整定方法,全面验证了其在零速和低速工况下对转子初始位置辨识与动态跟踪的准确性、有效性及强鲁棒性。; 适合人群:具备电机控制理论基础知识和Matlab/Simulink仿真能力的电气工程、自动化、电力电子等相关专业的硕士研究生、博士研究生、科研人员以及从事高性能电机驱动系统研发的工程师。; 使用场景及目标:① 深入理解高频信号注入类无位置传感器控制技术的工作原理、信号处理机制与工程实现细节;② 掌握利用Matlab/Simulink搭建PMSM高性能矢量控制系统及高级观测器的仿真方法;③ 为开发高精度、低成本、全速度范围适用的PMSM无位置传感器驱动器提供坚实的理论依据和技术验证平台。; 阅读建议:建议读者结合文中详尽的理论推导与所提供的仿真代码进行对照学习,亲自动手运行、调试仿真模型,通过改变负载、转速、注入信号参数等工况,观察系统响应与控制效果的变化,从而深刻掌握旋转高频注入法的内在工作机制与设计要点。
Python小Demo实例源码爬取网易云音乐评论
Python小Demo实例源码爬取网易云音乐评论
Python3 finally执行铁律
finally代码块无论try内部是否报错、是否执行return,都会强制执行。唯一例外:调用os._exit()直接终止解释器,跳过finally。业务场景:数据库连接、网络套接字、文件句柄回收,放入finally保证资源释放。特殊细节:try内部return不会立刻返回,会先执行finally内部代码,再返回结果。新手易错:在finally内部写入return,会覆盖try原有返回值,导致业务数据异常,严禁在finally使用return语句。 tiyu.xastone.com www.yingjie168.com 17kuaibu.com www.0760yx.net 1900kk.com
基于线性时变MPC的无人驾驶车辆双移线轨迹跟踪仿真研究(Matlab代码、Simulink仿真实现)
基于线性时变MPC的无人驾驶车辆双移线轨迹跟踪仿真研究(Matlab代码、Simulink仿真实现)


网络编程
