• 大小: 1.86MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-01
  • 语言: C/C++
  • 标签: tcp  

资源简介

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


评论

共有 条评论