求一个C++或C编写网络嗅探器的设计思路和代码

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:50:51
RT
1、不限平台。可以使用libpcap、winpcap 或 Linux的原始套接字SOCK_RAW;
2、能够解析出IP层和传输层的协议头;
3、能够输出文本方式传送的数据包的内容;
4、有检查校验和以及简单的合法性检查的功能;
5、选作:用你的sniffer对局域网进行流量审计分析;

Windows下面的
#include <vector>
#include <iostream>
#include <winsock2.h>
#include <mstcpip.h>

#pragma comment( lib, "ws2_32.lib" )

using namespace std;

struct IPHeader
{
unsigned char mHeaderLengthAndVersion;
unsigned char mTypeOfService;
unsigned short mTotalLength;
unsigned short mIdentifier;
unsigned short mFragment;
unsigned char mTTL;
unsigned char mProtocolType;
unsigned short mCheckSum;
unsigned int mSourceIP;
unsigned int mDestIP;

int getHeaderLength() const
{
return mHeaderLengthAndVersion & 0xf;
}
};

struct TCPHeader
{
unsigned short mSourcePort;
unsigned short mDestPort;
unsigned int mSequence;
unsigned int mAck;
unsigned char mLengthAndReserve;
unsigned char mFlags;
unsigned short mWindow;
unsigned short mCheckSum;
unsigne