c/c++写的Mini Sniffer(嗅探工具)

本文介绍了使用C/C++编写的Mini Sniffer,该工具利用原始套接字将网卡设置为混杂模式,监听并捕获所有经过主机的网络IP封包。虽然目前仅能输出十六进制ASCII码,但已实现对TCP和UDP封包的初步分析,包括源/目标IP、端口等信息。
摘要由CSDN通过智能技术生成
                                                 c/c++写的Mini Sniffer
前两天写了一个mini sniffer 原理很简单,就是利用原始套接字将网卡设置成混杂模式,然后利用套接字监听经过本主机的所有网络IP封包,但是由于本人现在能力有限,还不能很好的对数据包进行解码分析,就只能将它们的十六进制ASCL码输出..以下是源代码.编译器是vs2005
// 头文件 DataStruct.h
#ifndef _DATASTRUCT_H_
#define  _DATASTRUCT_H_
char  szText[ 1024 ];
typedef 
struct  _IP_HDR
{
UCHAR ipVersion;
//IP版本号和头长度
UCHAR ipTos;//服务类型
USHORT ipLength;//总长度
USHORT ipID;//封包标识,用于将分片重新组装成封包
USHORT ipFlag;//标志,目前只有前两位有意义,|DF|MF|...DF是不能分片,MF是有更多的分片
UCHAR ipTTL;//封包生存时间,也就是经过的路由个数
UCHAR ipProtocol;//指定数据包携带的数据是使用的是那种协议:TCP,UDP,ICMP??
USHORT ipCheckSum;//首部校验和
ULONG ipSourceAdd;//数据报源地址
ULONG ipDestination;//数据报目的地址
}
IPHEADER,  * PIPHEADER;
typedef 
struct  _UDP_HDR
{
USHORT sourcePort;
//源端口号
USHORT destinationPort;//目的端口号
USHORT len;//封包长度
USHORT chekSum;//校验和
}
UDPHEADER,  * PUDPHEADER;
­
/*该程序没有ICMP数据包的解析
typedef struct _ICMP_HDR
{
USHORT icmp_type;
USHORT icmp_code;
USHORT icmp_chekSum;
USHORT icmp_id;
USHORT icmp_sequuence;
ULONG icmp_timestamp;
}ICMP_HDR, *PICMP_HDR;
*/

typedef  
struct  _TCP_HDR
{
USHORT sourcePort;
//16位源端口号
USHORT destPort;//目的端口号
ULONG sequenceNumber;// 序列号
ULONG ACK;//确认号
UCHAR dataOffset;//4位首部长度/6位保留字
UCHAR flags;//6位标志位
USHORT windowLen;//窗口大小
USHORT checkSum;//校验和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值