资源简介
winsock 抓包,抓TCP,UDP,并解析报文头

代码片段和文件信息
#include
#include
#include
#include
#define SIO_RCVALL _WSAIOW(IOC_VENDOR1)
#define MAX_LOG 20
#pragma comment( lib “ws2_32.lib“ )
using namespace std;
//IP首部
typedef struct tIPPackHead
{
enum PROTOCOL_TYPE{
PROTOCOL_TCP = 6
PROTOCOL_UDP = 17
PROTOCOL_ICMP = 1
PROTOCOL_IGMP = 2
};
inline unsigned HeadLen() const
{
//首部长度单位为4bytes。因此乘4
return (ver_hlen & 0x0F) << 2;
}
inline unsigned PackLen() const
{
return wPacketLen;
}
BYTE ver_hlen; //IP协议版本和IP首部长度。高4位为版本,低4位为首部的长度(单位为4bytes)
BYTE byTOS; //服务类型
WORD wPacketLen; //IP包总长度。包括首部,单位为byte。[Big endian]
WORD wSequence; //序号,一般每个IP包的序号递增。[Big endian]
WORD wMarkFragPoi;
WORD wID; //片段ID标识
WORD wFlags; //标志
WORD FragOff; //片偏移
BYTE byTTL; //生存时间
BYTE byProtocolType; //协议类型,见PROTOCOL_TYPE定义
WORD wHeadCheckSum; //IP首部校验和[Big endian]
DWORD dwIPSrc; //源地址
DWORD dwIPDes; //目的地址
} IP_PK_HEAD;
int DecodeIP(char *buf int lenFILE *file)
{
//int n = len;
//if( n >= sizeof(IP_PK_HEAD) )
//{
IP_PK_HEAD iphead;
memcpy( &iphead buf sizeof(iphead) );
//以下三个为Big Endian字节顺序,转换成主机字节顺序
iphead.wPacketLen = ntohs( iphead.wPacketLen );
iphead.wSequence = ntohs( iphead.wSequence );
iphead.wHeadCheckSum = ntohs( iphead.wHeadCheckSum );
iphead.wID = ntohs( iphead.wID );
iphead.wFlags = ntohs( iphead.wFlags );
iphead.FragOff = ntohs( iphead.FragOff );
in_addr srcdst;
src.S_un.S_addr = iphead.dwIPSrc;
dst.S_un.S_addr = iphead.dwIPDes;
char strsrc[20]strdst[20];
strcpy(strsrc inet_ntoa(src) );
strcpy( strdst inet_ntoa(dst));
printf( “IP数据包: 版本=%d首部长度=%d协议类型=%dIP包总长度=%d序号=%d标识=%d标志=%d片偏移=%d生存时间=%dIP首部校验和=%d源地址=%s目的地址=%s “
iphead.ver_hlen >> 4
(iphead.ver_hlen & 0x0F) << 2
iphead.byProtocolType
iphead.wPacketLen
iphead.wSequence
iphead.wID
iphead.wFlags
iphead.FragOff
iphead.byTTL
iphead.wHeadCheckSum
strsrc
strdst );
printf(“\n\n“);
fprintf(file“IP数据包: 版本=%d首部长度=%d协议类型=%dIP包总长度=%d序号=%d标识=%d标志=%d片偏移=%d生存时间=%dIP首部校验和=%d源地址=%s目的地址=%s \n\n“
iphead.ver_hlen >> 4
(iphead.ver_hlen & 0x0F) << 2
iphead.byProtocolType
iphead.wPacketLen
iphead.wSequence
iphead.wID
iphead.wFlags
iphead.FragOff
iphead.byTTL
iphead.wHeadCheckSum
strsrc
strdst );
//}
return 0;
}
void AutoWSACleanup()
{
::WSACleanup();
}
int main(int argc char *argv[])
{
FILE *file;
if(argc != 2){
file = fopen(“log.txt““w“);
}
else{
file = fopen(argv[1]“w“);
}
//初始化winsock库,使用2.2版本
u_short wVersionRequested = 0x0202;
WSADATA wsaData;
if( SOCKET_ERROR == WSAStartup( wVersionRequested &wsaData ) )
{
cout
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3684 2008-06-18 03:20 0606303036(李辉)(需修订版)\log.txt
文件 846 2008-06-18 03:20 0606303036(李辉)(需修订版)\0606303036(李辉)(需修订版).plg
文件 5002 2008-06-18 03:08 0606303036(李辉)(需修订版)\0606303036(李辉)(需修订版).cpp
文件 41984 2008-06-18 03:23 0606303036(李辉)(需修订版)\0606303036(李辉)(需修订版).ncb
文件 205824 2008-06-18 03:20 0606303036(李辉)(需修订版)\Debug\vc60.idb
文件 151552 2008-06-18 03:20 0606303036(李辉)(需修订版)\Debug\vc60.pdb
文件 520317 2008-06-18 03:20 0606303036(李辉)(需修订版)\Debug\0606303036(李辉)(需修订版).exe
文件 1106944 2008-06-18 03:20 0606303036(李辉)(需修订版)\Debug\0606303036(李辉)(需修订版).pdb
文件 5730096 2008-06-18 03:20 0606303036(李辉)(需修订版)\Debug\0606303036(李辉)(需修订版).pch
文件 155562 2008-06-18 03:20 0606303036(李辉)(需修订版)\Debug\0606303036(李辉)(需修订版).obj
文件 790028 2008-06-18 03:20 0606303036(李辉)(需修订版)\Debug\0606303036(李辉)(需修订版).ilk
文件 3643 2008-06-18 03:20 0606303036(李辉)(需修订版)\0606303036(李辉)(需修订版).dsp
文件 48640 2008-06-18 03:23 0606303036(李辉)(需修订版)\0606303036(李辉)(需修订版).opt
文件 577 2008-06-18 03:23 0606303036(李辉)(需修订版)\0606303036(李辉)(需修订版).dsw
目录 0 2008-06-18 03:18 0606303036(李辉)(需修订版)\Debug
目录 0 2008-06-18 03:19 0606303036(李辉)(需修订版)
----------- --------- ---------- ----- ----
8764699 16
- 上一篇:开源MPEG2-TS格式分析工具
- 下一篇:电力行业规约645通信的VC++实现源码
相关资源
- Quectel_EC200xEG912YEC600NEC600S系列_TCP(I
- 基于STM32F407的W5500 tcpserver(官网例程
- 基于CS的TCP文件传输程序设计
- TCP/IP客户端和服务器端源代码,好用
- modbus tcp/ip 简单通讯
- libnet发送udp和tcp包
- socket tcp应用
- TCP/IP与串口调试
- Tcp自定义命令调试工具
- Qt TCP聊天室demo
- TCP服务端和TCP客户端通讯
- 基于TCP协议的C/S传输文件C++)
- C语言实现TCP/IP协议通信和UDP协议通信
- MFC下TCP服务器
- 基于TCP协议的文件传输编程
- TCP实现服务器和多客户端通信
- VC++6.0多人网络小游戏-支持多人联机网
- 基于TCP/IP socket的局域网聊天系统
- vc-基于MFC编程,使用TCP/IP模型编写
- Windows下基于ModbusTcp的Server端开发C语言
- 计算机网络实验设计---基于TCP的网络
- 基于TCP协议VC++6.0实现的聊天程序
- 基于MFC的TCP通信程序
- tcp客户端程序之mfc实现
- TCP/IP实现 简易聊天室 C++
- TcpView源代码MFC VS2005
- 基于TCP、IP的网络编程
- C语言编写TCP服务器
- 基于SOCKET的C++ 即时通讯系统
- 基于MFC modbusTcp
评论
共有 条评论