freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于局域網(wǎng)的數(shù)據(jù)包的截獲與分析30畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-07-24 20:29 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 得端口號(hào) else a=1。 if(m_Ip!=0) { BYTE f0,f1,f2,f3。 (f0,f1,f2,f3)。 (%u.%u.%u.%u,f0,f1,f2,f3)。 d=m_Ip。//獲得IP地址 } else d=1。 c=m_Protocol。//獲得協(xié)議類型}該函數(shù)在線程UINT ThreadProc(LPVOID pParam)里調(diào)用,相應(yīng)代碼如下:::PostMessage(hWnd,WM_USER_MSG2,0,0)。把網(wǎng)卡設(shè)置在混亂模式下,創(chuàng)建一個(gè)套接字,用WSAIoctl()設(shè)置套接字選項(xiàng)。然后綁定這個(gè)套接字,即可截獲本局域網(wǎng)內(nèi)的所有的數(shù)據(jù)包!采用WINSOCK2技術(shù)和多線程技術(shù)實(shí)現(xiàn)數(shù)據(jù)包的截獲,創(chuàng)建一個(gè)工作者子線程實(shí)現(xiàn)無(wú)限循環(huán)截獲本局域網(wǎng)內(nèi)的數(shù)據(jù)包,創(chuàng)建一個(gè)全局變量控制線程的運(yùn)行。相關(guān)實(shí)現(xiàn)代碼如下:SOCKET m_Socket。//全局變量void BindSocket()//綁定套接字 { SOCKET_ADDRESS_LIST *slist=NULL。 char buffer[2048]。 DWORD dwBytesRet。 SOCKADDR_IN m_SockAddr。 DWORD dwVal=1。//建立套接字 m_Socket=WSASocket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED)。 if(m_Socket==INVALID_SOCKET) return。 //綁定套接字 if(WSAIoctl(m_Socket,SIO_ADDRESS_LIST_QUERY,NULL,0,amp。buffer,2048,amp。dwBytesRet,NULL,NULL)==SOCKET_ERROR) return 。 slist=(SOCKET_ADDRESS_LIST*)buffer。 if(slistiAddressCount=0) return 。 =((SOCKADDR_IN*)slistAddress[0].lpSockaddr)。 =AF_INET。 =htons(0)。 if(::bind(m_Socket,(SOCKADDR*)amp。m_SockAddr,sizeof(m_SockAddr))==SOCKET_ERROR) return 。 if(WSAIoctl(m_Socket,SIO_RCVALL,amp。dwVal,sizeof(dwVal),NULL,0,amp。dwBytesRet,NULL,NULL)==SOCKET_ERROR)return。 }UINT ThreadProc(LPVOID pParam)。//接受數(shù)據(jù)分析數(shù)據(jù)的線程函數(shù)volatile bool g_bdo=false。//控制線程的運(yùn)行g(shù)_bdo=true。//啟動(dòng)線程CWinThread*pWinThread=AfxBeginThread(ThreadProc,this)。//創(chuàng)建線程UINT ThreadProc(LPVOID pParam)//工作者線程,截獲數(shù)據(jù)包{ InitWinsock2()。 BindSocket()。 DWORD dwFlags。 DWORD dwBytesRead。 WSABUF wbuf。 char buff1[0x1500]。 =0x1500。 =buff1。 while(g_bdo)//循環(huán)截獲數(shù)據(jù)包 { dwFlags=0。 WSARecv(m_Socket,amp。wbuf,1,amp。dwBytesRead,amp。dwFlags,NULL,NULL)。//捕獲數(shù)據(jù)報(bào) WSABUF *pBuf=(WSABUF*)amp。wbuf。}} 經(jīng)多線程所截獲的數(shù)據(jù)包,一般都包含很多數(shù)據(jù)包頭,如: IP頭、TCP頭、ICMP頭和UDP頭。從這些頭信息中,我們可以提取源IP地址和目的IP地址、源端口、目的端口和協(xié)議類型等。去除這些頭結(jié)構(gòu)就可以獲得數(shù)據(jù)。把分析獲得的信息和數(shù)據(jù)存儲(chǔ)在ydwdatabase數(shù)據(jù)庫(kù)的IPData表中,并顯示在屏幕上。顯示在屏幕上利用消息機(jī)制調(diào)用函數(shù)OnUserMsg()實(shí)現(xiàn),其聲明和影射方式和OnUserMsg()函數(shù)的一樣。、。//IPv4包頭結(jié)構(gòu)體typedef struct ip_header { unsigned char ver_ihl。 //Version (4 bits) + Internet header length (4 bits) unsigned char tos。 //Type of service unsigned short tlen。 //Total length unsigned short identification。 //Identification unsigned short flags_fo。 //Flags (3 bits) + Fragment offset (13 bits) unsigned char ttl。 //Time to live unsigned char proto。 //Protocol unsigned short crc。 //Header checksum unsigned int ip_src。 //Source address unsigned int ip_dst。 //Destination address}IPHEADER,*PIPHEADER。//IPv4包頭結(jié)構(gòu)體//TCP包頭結(jié)構(gòu)體typedef struct tcp_header { WORD SourPort。 //源端口號(hào)   WORD DestPort。 //目的端口號(hào) DWORD SeqNo。 //序號(hào) DWORD AckNo。 //確認(rèn)序號(hào) BYTE HLen。 //首部長(zhǎng)度(保留位) BYTE Flag。 //標(biāo)識(shí)(保留位) WORD Window。 //窗口大小 WORD ChkSum。 //校驗(yàn)和 WORD UrgPtr。 //緊急指針}TCPHEADER,*PTCPHEADER。//UDP包頭結(jié)構(gòu)體typedef struct udp_header { short sport。 //源端口號(hào) short dport。 //目的端口號(hào) short len。 //數(shù)據(jù)報(bào)長(zhǎng)度 short crc。 //校驗(yàn)和}UDPHEADER,*PUDPHEADER。//ICMP報(bào)文結(jié)構(gòu)體typedef struct icmp_header{BYTE i_type。 //報(bào)文類型BYTE i_code。 //代碼short i_cksum。 //校驗(yàn)和 short i_id。 //標(biāo)志符 short i_seq。 //序列號(hào)}ICMPHEADER,*PICMPHEADER。CString strSourPort,strDestPort,strProto,strdestname,strsourcename。//全局變量顯示函數(shù)的參數(shù)char szSource[16],szDest[16]。//全局變量UINT ThreadProc(LPVOID pParam)//截獲數(shù)據(jù)包并分析,存儲(chǔ)和顯示信息和數(shù)據(jù){ InitWinsock2()。//初始化Winsock2 BindSocket()。//綁定套接字 DWORD dwFlags。 DWORD dwBytesRead。 WSABUF wbuf。 char buff1[0x1500]。 =0x1500。 =buff1。 unsigned char *buf。 PIPHEADER ip_header。 in_addr address。 (_uuidof(Recordset))。try { m_pRecordsetOpen(SELECT*FROM Ipdata,(),adOpenDynamic,adLockOptimistic,adCmdText)。 } catch(__error*e) { AfxMessageBox(eErrorMessage())。 } while(g_bdo) { dwFlags=0。 WSARecv(m_Socket,amp。wbuf,1,amp。dwBytesRead,amp。dwFlags,NULL,NULL)。//捕獲數(shù)據(jù)報(bào) WSABUF *pBuf=(WSABUF*)amp。wbuf。 buf=(UCHAR*)GlobalAlloc(GPTR,pBuflen)。 buf=(unsigned char *)pBufbuf。 ip_header=(PIPHEADER)buf。 =ip_headerip_dst。 strcpy(szDest,inet_ntoa(address))。 =ip_headerip_src。 strcpy(szSource,inet_ntoa(address))。 ::PostMessage(hWnd,WM_USER_MSG2,0,0)。 int s=0。 unsigned char * data=NULL。 //數(shù)據(jù)包數(shù)據(jù)指針 char tudata[256]。 //數(shù)據(jù)包數(shù)據(jù) int m=0。 if(d==1) { if(c!=0) { switch(c) { case 1: { if(ip_headerproto==6) { PTCPHEADER tcp_header。 tcp_header=(PTCPHEADER)(buf+sizeof(IPHEADER))。 if(a==htons(tcp_headerSourPort)||a==htons(tcp_headerDestPort)||a==1) {strProto=TCP。 (%d,htons(tcp_headerSourPort))。 (%d,htons(tcp_headerDestPort))。 s=1。 ::PostMessage(hWnd,WM_USER_MSG,0,0)。 data=buf+sizeof(IPHEADER)+sizeof(TCPHEADER)。 m=pBuflensizeof(IPHEADER)sizeof(TCPHEADER)。 } } }。 break。 case 2: { if(ip_headerproto==17) { PUDPHEADER udp_header。 udp_header=(PUDPHEADER)(buf+sizeof(IPHEADER))。 if(a==1||a==htons(udp_headersport)||a==htons(udp_headerdport)) { strProto=UDP。 (%d,htons(udp_headersport))。 (%d,htons(udp_headerdport))。 s=1。 ::PostMessage(hWnd,WM_USER_MSG,0,0)。 data=buf+sizeof(IPHEADER)+sizeof(UDPHEADER)。 m=pBuflensizeof(IPHEADER)sizeof(UDPHEADER)。 } } }。 break。 case 3: { if(ip_headerproto==1) { PICMPHEADER icmp_header。 icmp_header=(PICMPHEADER)(buf+sizeof(IPHEADER))。 strProto=ICMP。 strSourPort=。 strDestPort=。 ::PostMessage(hWnd,WM_USER_MSG,0,0)。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1