资源简介
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++实现源码
相关资源
- 基于tcp mfc 文件传输 源代码 基于TCP的
- TCP协议客户服务器方式网络通信对话
- TCP数据包转发程序
- c语言简易飞秋
- C语言实现TCP连接
- c++(socket)音频传输
- VS2017实现Tcp socket多线程通信C++
- VC++远程桌面监控系统
- C++编写基于TCP/IP的Modbus网络通讯工具
- VC6.0实现socket、tcp传输,支持各类文件
- 用C语言实现Socket模拟TCP协议
- modbus tcp/rtu客户端服务端通讯程序合集
- dll 封装 socket tcp/ip 简单易懂。
- MFCtcpip
- 基于TCP协议的网络聊天室
- MFC SOCKET TCP VC6.0 服务器 客户端 源码编
- TCP多客户端通讯,单管道、双管道通
- c++ Windows Socket实现最简单的C/S网络通
- c++语言opencv加socket实现远程桌面监控
- tcp ip sockets编程 c语言实现 第2版 中文
- RTSP PUSH tcp udp h264 easydarwin
- mfc实现抓包程序
- TCPSocket摄像头实时传输视频和图片传
- VS2005下TCP网络编程,亲自调试成功w
- MFC实现TCP数据传输
- TCP/IP协议详解卷一
- 基于MFC的TCP通信服务器端
- MFC编程TCP通信程序
- MFC TCP多客户端通信(基于CAsyncSocket)
- QtTcpCpp.rar
评论
共有 条评论