生活随笔
收集整理的這篇文章主要介紹了
原始套接字嗅探
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設置雜收模式 宏? #define SIO_RCVALL? (0x80000000 | (0x18000000) | (1))
IP頭:
typedef struct _IPHeader?
{??????????????????????? //IP數據包頭
?BYTE Ver_HLen;??????? //版本+報頭長度
?BYTE TOS;??????????? //服務類型
?WORD TotalLen;??????? //總長度
?WORD ID;??????????? //標識
?WORD Flag_Segment;??? //標志+片偏移
?BYTE TTL;??????????? //生存周期
?BYTE Protocol;??????? //協議類型
?WORD Checksum;??????? //頭部校驗和
?in_addr? SrcIP;??????? //源IP地址
?in_addr DstIP;??????? //目的IP地址
} IPHEADER;
?
TCP頭:
typedef struct _TCPHEADER?
{
? unsigned short srcPort;//2個字節
? unsigned short DestPort;//2個字節
? unsigned int?? sequeceNo; //4 個字節 序號
? unsigned int?? acAnswerNo; //4字節
? unsigned char? dataoffset;//布首長度
? unsigned char? flage;
? unsigned short windows;
? unsigned short checksum;
? unsigned short urgentPointer;
}TCPHEADER;
?
流程 --》 創建socket --》bind 本地地址-》ioctlsocket()設置雜收模式---》recv 接收數據
?
[cpp]?view plaincopy
unsigned?int??sinfferClass::_Run(LPVOID?lpramra)?? {?? ????SOCKET?s=socket(AF_INET,SOCK_RAW,IPPROTO_IP);?? ????int?nRet=WSAGetLastError();?? ????sockaddr_in?sin;?? ????sin.sin_family=AF_INET;?? ????sin.sin_port=htons(0);?? ????sin.sin_addr.S_un.S_addr=inet_addr("192.168.0.100");?? ????::bind(s,(sockaddr?*)&sin,sizeof(sin));?? ????nRet=WSAGetLastError();?? ????DWORD?dwValue=1;?? ????ioctlsocket(s,SIO_RCVALL,&dwValue);?? ????nRet=WSAGetLastError();?? ????char?*?pbuffer=new?char[1024];?? ????IPHEADER?ip;?? ????TCPHEADER?tcp;?? ????int?nIPLen=sizeof(IPHEADER);?? ????int?nTcpLen=sizeof(TCPHEADER);?? ????while(1)?? ????{?? ????????memset(pbuffer,0,1024);?? ????????nRet=recv(s,pbuffer,1024,0);?? ????????int?destPort=0;?? ?? ????????if?(nRet>0)?? ????????{?? ?????????memcpy(&ip,pbuffer,nIPLen);?? ?????????pbuffer=pbuffer+nIPLen;?? ?????????memcpy(&tcp,pbuffer,nTcpLen);?? ?????????destPort=ntohs(tcp.DestPort);?? ?????????TRACE(inet_ntoa(ip.SrcIP));?? ?????????TRACE("----->");?? ?????????TRACE(inet_ntoa(ip.DstIP));?? ?????????memmove(pbuffer,pbuffer+20,nRet-40);?? ????????}?? ?????????? ????}?? ????return?true;?? }?? ?大概就是這樣,代碼肯定有一點小bug 請大家批評指正
?
總結
以上是生活随笔為你收集整理的原始套接字嗅探的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。