日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

原始套接字嗅探

發(fā)布時(shí)間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原始套接字嗅探 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
設(shè)置雜收模式 宏? #define SIO_RCVALL? (0x80000000 | (0x18000000) | (1))

IP頭:

typedef struct _IPHeader?
{??????????????????????? //IP數(shù)據(jù)包頭
?BYTE Ver_HLen;??????? //版本+報(bào)頭長(zhǎng)度
?BYTE TOS;??????????? //服務(wù)類型
?WORD TotalLen;??????? //總長(zhǎng)度
?WORD ID;??????????? //標(biāo)識(shí)
?WORD Flag_Segment;??? //標(biāo)志+片偏移
?BYTE TTL;??????????? //生存周期
?BYTE Protocol;??????? //協(xié)議類型
?WORD Checksum;??????? //頭部校驗(yàn)和
?in_addr? SrcIP;??????? //源IP地址
?in_addr DstIP;??????? //目的IP地址
} IPHEADER;

?

TCP頭:

typedef struct _TCPHEADER?
{
? unsigned short srcPort;//2個(gè)字節(jié)
? unsigned short DestPort;//2個(gè)字節(jié)
? unsigned int?? sequeceNo; //4 個(gè)字節(jié) 序號(hào)
? unsigned int?? acAnswerNo; //4字節(jié)
? unsigned char? dataoffset;//布首長(zhǎng)度
? unsigned char? flage;
? unsigned short windows;
? unsigned short checksum;
? unsigned short urgentPointer;
}TCPHEADER;

?

流程 --》 創(chuàng)建socket --》bind 本地地址-》ioctlsocket()設(shè)置雜收模式---》recv 接收數(shù)據(jù)

?

[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;??
  • }??
  • ?大概就是這樣,代碼肯定有一點(diǎn)小bug 請(qǐng)大家批評(píng)指正

    ?

    總結(jié)

    以上是生活随笔為你收集整理的原始套接字嗅探的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。