11054114 刘俊峰 网络嗅探器实验报告_第1页
11054114 刘俊峰 网络嗅探器实验报告_第2页
11054114 刘俊峰 网络嗅探器实验报告_第3页
11054114 刘俊峰 网络嗅探器实验报告_第4页
11054114 刘俊峰 网络嗅探器实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络嗅探器实验报告姓名:刘俊峰学号:11054114班级:11052411课程:网络攻防技术老师:张旻一、嗅探器简介定义:网络嗅探也叫网络侦听,指的是使用特定的网络协议来分解捕获到的数据包,并根据对应的网络协议识别对应数据片断。

作用:1.管理员可以用来监听网络的流量情况

开发网络应用的程序员可以监视程序的网络情况

3.黑客可以用来刺探网络情报

数据包的处理流程实验目的本实验通过研究Winpcap中常用的库函数的使用方式来实现了一个小型的网络数据包抓包器,并通过对原始包文的分析来展示当前网络的运行状况。1.实现对网络基本数据包的捕获2.分析捕获到的数据包的详细信息三、实验环境Windows操作系统VC++6.0开发环境四、实验设计系统在设计过程中按照MVC的设计模式,整体分为三层。第一层为Control层即控制层,这里为简化设计,将Control层分为两个部分,一部分为网络报文输入,另一部分为用户输入;第二层是Model层即模型层;第三层为View层即显示层。系统的整体运行过程为:从Control层得到数据,交到Model层进行处理,将处理完的结果交View层进行显示。Control层主要用于网络数据包的捕获以及获得用户的输入;Model层主要用于分析数据包,处理用户的输入;View层主要用于对处理后的结果进行显示。五、代码实现#include<winsock2.h>/*windowssocket的头文件,系统定义的*/#include<windows.h>#include<ws2tcpip.h>#include<stdio.h>#include<stdlib.h>#pragmacomment(lib,"ws2_32.lib")/*链接API相关连的Ws2_32.lib静态库*/#defineMAX_HOSTNAME_LAN255#defineSIO_RCVALL_WSAIOW(IOC_VENDOR,1)#defineMAX_ADDR_LEN16structipheader{unsignedchari_cl:4; /*headerlength(报头长度)*/unsignedchari_v:4; /*version(版本)*/unsignedchari_sot; /*typeOSservice服务类型*/unsignedshortinti_Len; /*totallength(总长度)*/unsignedshortinti_id; /*identification(标识符)*/unsignedshortinti_off; /*fragmentoffsetfield(段移位域)*/unsignedchari_Tl; /*timetolive(生存时间)*/unsignedchari_p; /*protocol(协议)*/unsignedshortinti_sum; /*checksum(校验和)*/unsignedinti_Sr; /*sourceaddress(源地址)*/unsignedinti_DST; /*destinationaddress(目的地址)*/}; /*totaliheaderlength:20bytes(=160bits)*/typedefstructdunderhead{unsignedshortintsport; /*sourceport(源端口号)*/unsignedshortintdport; /*destinationport(目的端口号)*/unsignedintTh_seq; /*sequencenumber(包的序列号)*/unsignedintTh_Mack; /*acknowledgenumber(确认应答号)*/unsignedcharTh_x:4; /*unused(未使用)*/unsignedcharTh_off:4; /*dataoffset(数据偏移量)*/unsignedcharFlags; /*标志全*/unsignedshortintTh_win; /*windows(窗口)*/unsignedshortintTh_sum; /*checksum(校验和)*/unsignedshortintTh_burp; /*urgentpointer(紧急指针)*/}TCP_HDR;typedefstructRudolph{ unsignedshortsport; /*sourceport(源端口号)*/ unsignedshortdport; /*destinationport(目的端口号)*/ unsignedshortLen; /*pudlength(pud长度)*/ unsignedshortcksum; /*pudchecksum(pud校验和)*/}UDP_HDR;以上是前44行1-9包含的一系列头文件11-23定义leadershipi报文首部的类型,详见注释25-36定义了dunderheadTCP报文首部的类型,详见注释38-43定义了RudolphUDP报文首部的类型,详见注释从45行开始是主函数voidmain(){SOCKETsock;WSADATAWSW;DWORDpresbytery;unsignedintoptval=1;unsignedchar*data,*data;inti,count=0,lent,plenum;SOCKADDR_INSA,outsource,Sade;structhostentFAR*hostel;charFARname[MAX_HOSTNAME_LAN];chancellorship[MAX_ADDR_LEN],pesticide[MAX_ADDR_LEN],Buffer[65535]={0};structRudolph*pUdpheader;structipheader*header;structtcpheader*pTcpheader;WSAStartup(MAKEWORD(2,1),&wsd);if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP))==SOCKET_ERROR)exit(1);gethostname(name,MAX_HOSTNAME_LAN);pHostent=gethostbyname(name);sa.sin_family=AF_INET;sa.sin_port=htons(6000);memcpy(&sa.sin_addr.S_un.S_addr,pHostent->h_addr_list[0],pHostent->h_length);bind(sock,(SOCKADDR*)&sa,sizeof(sa));/*bind()设定自己主机的IP地址和端口号*/if((WSAGetLastError())==10013)exit(1);WSAIoctl(sock,SIO_RCVALL,&optval,sizeof(optval),NULL,0,&dwBytesRet,NULL,NULL);pIpheader=(structipheader*)RecvBuf;pTcpheader=(structtcpheader*)(RecvBuf+sizeof(structipheader));pUdpheader=(structudphdr*)(RecvBuf+sizeof(structipheader));while(1){ /*死循环*/ memset(RecvBuf,0,sizeof(RecvBuf)); recv(sock,RecvBuf,sizeof(RecvBuf),0); saSource.sin_addr.s_addr=pIpheader->ip_src; strncpy(szSourceIP,inet_ntoa(saSource.sin_addr),MAX_ADDR_LEN); saDest.sin_addr.s_addr=pIpheader->ip_dst; strncpy(szDestIP,inet_ntoa(saDest.sin_addr),MAX_ADDR_LEN); lentcp=(ntohs(pIpheader->ip_len)-(sizeof(structipheader)+sizeof(structtcpheader))); lenudp=(ntohs(pIpheader->ip_len)-(sizeof(structipheader)+sizeof(structudphdr))); if((pIpheader->ip_p)==IPPROTO_TCP&&lentcp!=0){ printf("*******************************************\n"); pCount++; datatcp=(unsignedchar*)RecvBuf+sizeof(structipheader)+sizeof(struct tcpheader); printf("-TCP-\n"); printf("\n目的IP地址:%s\n",szDestIP); printf("\n目的端口:%i\n",ntohs(pTcpheader->dport)); printf("datatcpaddress->%x\n",datatcp); printf("sizeofipheader->%i\n",sizeof(structipheader)); printf("sizeoftcpheader->%i\n",sizeof(structtcpheader)); printf("sizeoftheholepacket->%i\n",ntohs(pIpheader->ip_len)); printf("\ncharPacket%i[%i]=\"",pCount,lentcp-1); for(i=0;i<lentcp;i++){ printf("\\x%.2x",*(datatcp+i)); if(i%10==0) printf("\"\n\""); } printf("\";\n\n\n"); for(i=0;i<lentcp;i++){ if(*(datatcp+i)<=127&&*(datatcp+i)>=20) printf("%c",*(datatcp+i)); else printf("."); } printf("\n\n*******************************************\n"); } if((pIpheader->ip_p)==IPPROTO_UDP&&lentcp!=0){ pCount++; dataudp=(unsignedchar*)RecvBuf+sizeof(structipheader)+sizeof(structudphdr); printf("-UDP-\n"); printf("\n目的IP地址:%s\n",szDestIP); printf("\n目的端口:%d\n",ntohs(pTcpheader->dport)); printf("UDP数据地址:%x\n",dataudp); printf("IP头部长度:%i\n",sizeof(structipheader)); printf("UDP头部长度:%i\n",sizeof(structudphdr)); printf("包的大小:%i\n",ntohs(pIpheader->ip_len)); printf("\ncharPacket%i[%i]=\"",pCount,lenudp-1); for(i=0;i<lenudp;i++){ printf("\\x%.2x",*(dataudp+i));

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论