首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

端口 捕包 UDP。帮忙编译出来。高分悬赏

2012-12-29 
端口 抓包 UDP。帮忙编译出来。高分悬赏!需要: 抓包》》from自本地 6112端口 to 255.255.255.255:6112的所有UD

端口 抓包 UDP。帮忙编译出来。高分悬赏!
需要:
 抓包》》from自本地 6112端口 to 255.255.255.255:6112  的所有UDP包
               返回byte[]

我现在有部分代码:



我要的数组 getbyte(){

DWORD dwFlags;
DWORD dwBytesRead;
WSABUF wbuf;

char buf[0x1500];
wbuf.len =0x1500;
wbuf.buf=buf;
int k=0;


 // InitSocket();

WORD wReqVer = MAKEWORD(2, 2);
WSADATA wsa;
if(::WSAStartup(wReqVer, &wsa))return NULL;


//
 
      m_sock=::WSASocket(AF_INET,SOCK_DGRAM,IPPROTO_UDP,NULL,0,WSA_FLAG_OVERLAPPED);
          if (m_sock==INVALID_SOCKET) return NULL;
    

//绑定
SOCKET_ADDRESS_LIST *slist=NULL;
char buff[2048];
DWORD dwBytesRet2;
SOCKADDR_IN if0;
if (SOCKET_ERROR==WSAIoctl(m_sock,SIO_ADDRESS_LIST_QUERY,
NULL,0,buff,2048,&dwBytesRet2,NULL,NULL))
return NULL;
slist=(SOCKET_ADDRESS_LIST *)buf;
if (slist->iAddressCount<=0) return NULL;
if0.sin_addr.s_addr = 
((SOCKADDR_IN *)slist->Address[0].lpSockaddr)->sin_addr.s_addr;
if0.sin_family=AF_INET;
if0.sin_port =htons(0);
if(SOCKET_ERROR == ::bind(m_sock, (SOCKADDR *)&if0, sizeof(if0)))
return NULL;  

//

DWORD dwVal=1;
DWORD dwBytesRet;
      if (SOCKET_ERROR==WSAIoctl(m_sock, SIO_RCVALL, &dwVal,
sizeof(dwVal), NULL, 0, &dwBytesRet, NULL, NULL)) return NULL;
 



while(true)
{
        dwFlags=0;
WSARecv(m_sock , &wbuf, 1, &dwBytesRead, &dwFlags, NULL, NULL);
wbuf.len=dwBytesRead;
WSABUF* pBuf = (WSABUF *)&wbuf;
        UCHAR* buf = (UCHAR *)pBuf->buf;
buf = (UCHAR *)::GlobalAlloc(GPTR, pBuf->len);
             memcpy(buf, pBuf->buf, pBuf->len);
        WSABUF *pbuf = new WSABUF;
        pbuf->buf = (char *)buf;
        pbuf->len = pBuf->len;
if( 判断我的条件   ){
printf("源IP:%d.%d.%d.%d  ",buf[12], buf[13], buf[14], buf[15]);
printf("目的IP:%d.%d.%d.%d\n",buf[16], buf[17], buf[18], buf[19]);
return  我要的数组
                }




}
}



[解决办法]
这样抓包不知道会不会影响正常进程的数据接收。

上面程序抓到的是一个IP数据包,其中buf[9]是IP包类型,0x11十进制17就是UDP数据

buf[12], buf[13], buf[14], buf[15] 源IP

buf[16], buf[17], buf[18], buf[19] 目的IP

buf[20], buf[21] 源端口  buf[22], buf[23] 目的端口

buf[28] 开始就是UDP数据

热点排行