Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Those who know how to use raw socket to do a sniff , can help me ?

Those who know how to use raw socket to do a sniff , can help me ?

Scheduled Pinned Locked Moved C / C++ / MFC
helptutorialquestionannouncement
4 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    fyr000000
    wrote on last edited by
    #1

    #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define BUFFER_SIZE 65535 #pragma comment(lib, "ws2_32.lib") #define PROTOCOL_STRING_ICMP_TXT "ICMP" #define PROTOCOL_STRING_TCP_TXT "TCP" #define PROTOCOL_STRING_UDP_TXT "UDP" #define PROTOCOL_STRING_SPX_TXT "SPX" #define PROTOCOL_STRING_NCP_TXT "NCP" #define PROTOCOL_STRING_UNKNOW_TXT "UNKNOW" //…… char* GetProtocolTxt(int Protocol) { switch (Protocol){ case IPPROTO_ICMP : //1 /* control message protocol */ return PROTOCOL_STRING_ICMP_TXT; case IPPROTO_TCP : //6 /* tcp */ return PROTOCOL_STRING_TCP_TXT; case IPPROTO_UDP : //17 /* user datagram protocol */ return PROTOCOL_STRING_UDP_TXT; default: return PROTOCOL_STRING_UNKNOW_TXT; } } typedef struct _TCP{ WORD SrcPort; // 源端口 WORD DstPort; // 目的端口 DWORD SeqNum; // 顺序号 DWORD AckNum; // 确认号 BYTE DataOff; // TCP头长 BYTE Flags; // 标志(URG、ACK等) WORD Window; // 窗口大小 WORD Chksum; // 校验和 WORD UrgPtr; // 紧急指针 } TCP; typedef TCP *LPTCP; typedef TCP UNALIGNED * ULPTCP; typedef struct _IP{ union{ BYTE Version; // 版本 BYTE HdrLen; // IHL }; BYTE ServiceType; // 服务类型 WORD TotalLen; // 总长 WORD ID; // 标识 union{ WORD Flags; // 标志 WORD FragOff; // 分段偏移 }; BYTE TimeToLive; // 生命期 BYTE Protocol; // 协议 WORD HdrChksum; // 头校验和 DWORD SrcAddr; // 源地址 DWORD DstAddr; // 目的地址 BYTE Options; // 选项 } IP; typedef IP * LPIP; typedef IP UNALIGNED * ULPIP; void main() { WSADATA WSAData; SOCKET sock; BOOL flag=true; char LocalName[16]; struct hostent *pHost; struct sockaddr_in addr_in; char RecvBuf[BUFFER_SIZE]; IP ip; TCP tcp; /////////////////////////////////////////////////////////////有问题!!!!!!!!! // 检查 Winsock 版本号,WSAData为WSADATA结构对象 WSAStartup(MAKEWORD(2, 2), &WSAData);

    F 2 Replies Last reply
    0
    • F fyr000000

      #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define BUFFER_SIZE 65535 #pragma comment(lib, "ws2_32.lib") #define PROTOCOL_STRING_ICMP_TXT "ICMP" #define PROTOCOL_STRING_TCP_TXT "TCP" #define PROTOCOL_STRING_UDP_TXT "UDP" #define PROTOCOL_STRING_SPX_TXT "SPX" #define PROTOCOL_STRING_NCP_TXT "NCP" #define PROTOCOL_STRING_UNKNOW_TXT "UNKNOW" //…… char* GetProtocolTxt(int Protocol) { switch (Protocol){ case IPPROTO_ICMP : //1 /* control message protocol */ return PROTOCOL_STRING_ICMP_TXT; case IPPROTO_TCP : //6 /* tcp */ return PROTOCOL_STRING_TCP_TXT; case IPPROTO_UDP : //17 /* user datagram protocol */ return PROTOCOL_STRING_UDP_TXT; default: return PROTOCOL_STRING_UNKNOW_TXT; } } typedef struct _TCP{ WORD SrcPort; // 源端口 WORD DstPort; // 目的端口 DWORD SeqNum; // 顺序号 DWORD AckNum; // 确认号 BYTE DataOff; // TCP头长 BYTE Flags; // 标志(URG、ACK等) WORD Window; // 窗口大小 WORD Chksum; // 校验和 WORD UrgPtr; // 紧急指针 } TCP; typedef TCP *LPTCP; typedef TCP UNALIGNED * ULPTCP; typedef struct _IP{ union{ BYTE Version; // 版本 BYTE HdrLen; // IHL }; BYTE ServiceType; // 服务类型 WORD TotalLen; // 总长 WORD ID; // 标识 union{ WORD Flags; // 标志 WORD FragOff; // 分段偏移 }; BYTE TimeToLive; // 生命期 BYTE Protocol; // 协议 WORD HdrChksum; // 头校验和 DWORD SrcAddr; // 源地址 DWORD DstAddr; // 目的地址 BYTE Options; // 选项 } IP; typedef IP * LPIP; typedef IP UNALIGNED * ULPIP; void main() { WSADATA WSAData; SOCKET sock; BOOL flag=true; char LocalName[16]; struct hostent *pHost; struct sockaddr_in addr_in; char RecvBuf[BUFFER_SIZE]; IP ip; TCP tcp; /////////////////////////////////////////////////////////////有问题!!!!!!!!! // 检查 Winsock 版本号,WSAData为WSADATA结构对象 WSAStartup(MAKEWORD(2, 2), &WSAData);

      F Offline
      F Offline
      fyr000000
      wrote on last edited by
      #2

      I write the sentence "printf("haha\n");" to debug the program !!! But the recv method can't return an value , and nothing to do but wait. How to solve it ? And why it will perform like that??? Thank you very much!!! :-O Jeff Fan No change is the worst!!! The principal of mine msn:fyr000000@hotmail.com If you like coding , add me.

      S 1 Reply Last reply
      0
      • F fyr000000

        I write the sentence "printf("haha\n");" to debug the program !!! But the recv method can't return an value , and nothing to do but wait. How to solve it ? And why it will perform like that??? Thank you very much!!! :-O Jeff Fan No change is the worst!!! The principal of mine msn:fyr000000@hotmail.com If you like coding , add me.

        S Offline
        S Offline
        Sandeep Vaidya
        wrote on last edited by
        #3

        If dont want Recv to be blocked, use fcntl call to set the time out. So that Recv will not block and wait.

        1 Reply Last reply
        0
        • F fyr000000

          #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define BUFFER_SIZE 65535 #pragma comment(lib, "ws2_32.lib") #define PROTOCOL_STRING_ICMP_TXT "ICMP" #define PROTOCOL_STRING_TCP_TXT "TCP" #define PROTOCOL_STRING_UDP_TXT "UDP" #define PROTOCOL_STRING_SPX_TXT "SPX" #define PROTOCOL_STRING_NCP_TXT "NCP" #define PROTOCOL_STRING_UNKNOW_TXT "UNKNOW" //…… char* GetProtocolTxt(int Protocol) { switch (Protocol){ case IPPROTO_ICMP : //1 /* control message protocol */ return PROTOCOL_STRING_ICMP_TXT; case IPPROTO_TCP : //6 /* tcp */ return PROTOCOL_STRING_TCP_TXT; case IPPROTO_UDP : //17 /* user datagram protocol */ return PROTOCOL_STRING_UDP_TXT; default: return PROTOCOL_STRING_UNKNOW_TXT; } } typedef struct _TCP{ WORD SrcPort; // 源端口 WORD DstPort; // 目的端口 DWORD SeqNum; // 顺序号 DWORD AckNum; // 确认号 BYTE DataOff; // TCP头长 BYTE Flags; // 标志(URG、ACK等) WORD Window; // 窗口大小 WORD Chksum; // 校验和 WORD UrgPtr; // 紧急指针 } TCP; typedef TCP *LPTCP; typedef TCP UNALIGNED * ULPTCP; typedef struct _IP{ union{ BYTE Version; // 版本 BYTE HdrLen; // IHL }; BYTE ServiceType; // 服务类型 WORD TotalLen; // 总长 WORD ID; // 标识 union{ WORD Flags; // 标志 WORD FragOff; // 分段偏移 }; BYTE TimeToLive; // 生命期 BYTE Protocol; // 协议 WORD HdrChksum; // 头校验和 DWORD SrcAddr; // 源地址 DWORD DstAddr; // 目的地址 BYTE Options; // 选项 } IP; typedef IP * LPIP; typedef IP UNALIGNED * ULPIP; void main() { WSADATA WSAData; SOCKET sock; BOOL flag=true; char LocalName[16]; struct hostent *pHost; struct sockaddr_in addr_in; char RecvBuf[BUFFER_SIZE]; IP ip; TCP tcp; /////////////////////////////////////////////////////////////有问题!!!!!!!!! // 检查 Winsock 版本号,WSAData为WSADATA结构对象 WSAStartup(MAKEWORD(2, 2), &WSAData);

          F Offline
          F Offline
          fyr000000
          wrote on last edited by
          #4

          I have known why , if somebody want to know , can go to this link http://www.codeguru.com/forum/showthread.php?t=384592 Jeff Fan No change is the worst!!! The principal of mine msn:fyr000000@hotmail.com If you like coding , add me.

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups