TCP/IP 抓包 流量監聽 SOCK_RAW

ForTechnology發表於2011-08-06
研究一下網上的相關文章自己又實踐了下,走了一些歪路,不過最終在xp下可以用
環境:VC6.0 ,XP系統
關鍵步驟:
1.設定Socket:socket(AF_INET,SOCK_RAW,IPPROTO_IP)
2.bind(...)地址為本機地址,埠隨便,協議簇:AF_INET
3.設定抓取的協議型別:
  可以用  ioctlsocket(sock,SIO_RCVALL, &dwLen);
  或者 WSAIoctl( sock, SIO_RCVALL ,......)可能會出現 SIO_RCVALL未定義
加人如下程式碼在標頭檔案中:
//  Copyright (C) Microsoft Corporation, 1996-1999
#if _MSC_VER > 1000
#pragma once
#endif

/* Argument structure for SIO_KEEPALIVE_VALS */

struct tcp_keepalive {
    u_long  onoff;
    u_long  keepalivetime;
    u_long  keepaliveinterval;
};

// New WSAIoctl Options

#define SIO_RCVALL            _WSAIOW(IOC_VENDOR,1)
#define SIO_RCVALL_MCAST      _WSAIOW(IOC_VENDOR,2)
#define SIO_RCVALL_IGMPMCAST  _WSAIOW(IOC_VENDOR,3)
#define SIO_KEEPALIVE_VALS    _WSAIOW(IOC_VENDOR,4)
#define SIO_ABSORB_RTRALERT   _WSAIOW(IOC_VENDOR,5)
#define SIO_UCAST_IF          _WSAIOW(IOC_VENDOR,6)
#define SIO_LIMIT_BROADCASTS  _WSAIOW(IOC_VENDOR,7)
#define SIO_INDEX_BIND        _WSAIOW(IOC_VENDOR,8)
#define SIO_INDEX_MCASTIF     _WSAIOW(IOC_VENDOR,9)
#define SIO_INDEX_ADD_MCAST   _WSAIOW(IOC_VENDOR,10)
#define SIO_INDEX_DEL_MCAST   _WSAIOW(IOC_VENDOR,11)
4.接受用recv就ok了
5.其他的就是IP包分析了,定義不同的協議頭,分析就行了。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25897606/viewspace-704312/,如需轉載,請註明出處,否則將追究法律責任。

相關文章