




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课程设计题 目网络嗅探器的设计与实现系(部)姓 名 学 号 指导教师2015年7月18日计算机网络课程设计任务书一、设计题目、内容及要求题目:网络嗅探器的设计与实现内容:本设计是关于网络嗅探器的设计与实现,功能包括实现网络层抓包,对获得包的源和目的地址、端口、协议等进行分析和实现简单的包嗅探器功能。要求:1.实现网络嗅探器的界面2 .实现抓取数据包的功能。3 .实现清空列表功能二、要求的设计成果(课程设计说明书、设计实物、图纸等)1 .课程设计报告2 .实现网络嗅探器的程序代码三、进程安排1、 设计工作4学时2、 实现与调试20学时3、 课程设1f报告6学时四、主要参考资料4、 王群
2、计算机网络安全技术5、 吴功宜,董大凡王理等.计算机网络高级软件编程技术【M.北京:清华大学出版社,20083谢小特,王勇军.基于winPcap 的捕包程序设计【J.软件/I刊,2007 (11 ):71-724胡晓元,史浩山.winpcap包截获系统的分析及其应用【J】.计算机工程,2005 (1 ): 96-975赵辉,叶子青.VisualC+ 系统开发实例精粹【M,北京:人民邮电出版 社,2005网络嗅探器的设计与实现摘要:网络嗅探器是对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法。本设计是关于网络嗅探器的设计与实现,其功能包括实现网络层抓包,对获得包的源和目
3、的地址、端口、协议等进行分析和实现简单的包嗅探器功能。关键字:网络嗅探器;数据包捕获;套接字引言由于网络技术的发展,计算机网络的应用越来越广泛,其作用也越来越重要。计算机网络安全问题更加严重,网络破坏所造成的损失越来越大。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。嗅探器是一种常用的收集有用数据的方法,可以作为网络数据包的设备。嗅探器是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket )方式来进行。通常的套接字程序只能响应与自己硬件地址相
4、匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。 而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。1 基本概念1.1 嗅探器每一个在局域网(LAN )上的工作站都有其硬件地址,这些地址唯一地表示了网络上的机器。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应。嗅探器工作在网络的底层,在网络上监听
5、数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,其内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU ,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:a)广播方式:该模式下的网卡能够接收网络中的广播信息。b)组播方式:设置在该模式下的网卡能够接收组播数据。c)直接方式:在这种模式下,只有目的网卡才能接收该数据。d)混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给
6、它的。嗅探程序是一种利用以太网的特性把网络适配卡(NIC , 一般为以太网卡)置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包,而不管该数据是否传给它的。1.2 相关协议1.2.1 IP 协议网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UDP层;相反,IP层也把从 TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)
7、和接收它的主机的地址(目 的地址)。1.2.2 TCP 协议如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如 Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。1.2.3 UDP 协议UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP
8、主要用于那些面向查询 -应答的服务,例如NFS。相对于 FTP或Telnet ,这些服务需要交换的信息量较小。使用 UDP的服务包才NTP (网落时间协议)和 DNS (DNS也使用 TCP)。 欺骗UDP包比欺骗 TCP包更容易,因为 UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与 UDP相关的服务面临着更大的危险。1.3 数据包“包”(Packet)是TCP/IP协议通信传输中的数据单位, 一般也称“数据包” 。TCP/IP 协议是工作在 OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层 (数 据链路层)。上一层的内容由下一层的内
9、容来传输,所以在局域网中,“包”是包含在“帧”里的。数据包的结构非常复杂,主要由“目的 IP地址”、“源IP地址”、“净载数据”等部分构成。正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。比如说当你上网时打开某个网页,这个简单的动作,就是你先发送数据包给那个 网站,它接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。2网络嗅探器的作用嗅探器是网络的抓包工具,可以对网络中大量数据抓取,从而方便使用者对网络中用户的一些信息进行分析,所以,通
10、常被黑客运用于网络攻击。我们如果也能掌握网络 嗅探器的原理和设计,可以将它运用与网络故障检测、网络状况的监视,还可以加强企 业信息安全防护。3网络嗅探器原理嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的
11、也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混 杂模式。具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw socket) 来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接 字后,需要通过setsockopt() 函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过 ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过r
12、ecv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包 并不仅仅是单纯的数据信息,而是包含有IP头、TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。下面给出数据包的总体结构:3.1 UDP数据段头数据在从应用层到达传车层时,将添加 TCP数据段头,或是 UDP数据段头。其 中UDP数据段头比较简单,由 source port( 源端口号)、destination port( 目的端口 号)、udp l
13、ength(udp 长度)、udp checksum(udp 校验和)组成。UDP 报头结构体 为:typedef struct udphdr unsigned short sport;/*source port(源端口号)*/unsigned short dport;/*destination port(目的端口号)*/unsigned short len;/*udp length(udp长度)*/unsigned short cksum;/*udp checksum(udp校验和)*/UDP_HDR;3.2 TCP数据段头TCP数据头则比较复杂,以 20个固定字节开始,在固定头后面还可以有
14、一些长度不固定的可选项,由 source port(源端口号)、destination port(目的端口号)、顺序 号、确认号、 TCP头长、校验和 紧急指针、可选项 (0或更多的32位字)、数据(可选 项)。组成。TCP报头结构体为:typedef struct tcpheader unsigned short int sport;/*source port (源端口号)*/unsigned short int dport;/*destination port( 目的端口号)*/unsigned int th_seq;unsigned int th_ack;unsigned char th
15、_x:4;unsigned char th_off:4;unsigned char Flags;unsigned short int th_win;unsigned short int th_sum;/*sequence number( 包的序列号)*/*acknowledgement number(确认应答号)*/*unused(未使用)*/*data offset(数据偏移量)*/*标志全*/*windows(窗 口 )*/*checksum(校验和)*/unsigned short int th_urp;/*urgent pointer(紧急指针)*/TCP_HDR;3.3 IP数据段头
16、在网络层,还要给 TCP数据包添加一个IP数据段头以组成IP数据报。IP数据头以大端点机次序传送,从左到右,版本字段的高位字节先传输(SPARC 是大端点 机;Pentium 是小端点机)。如果是小端点机,就要在发送和接收时先行转换然后才能进 行传输。IP数据段头格由版本IHL服务类型 总长、标志、 分段偏移、头校验和、源地址、目的地、选项(0或更多)组成。IP数据报头的结构体为:struct ipheader unsigned char ip_hl:4;unsigned char ip_v:4;unsigned char ip_tos;/*header length(报头长度)*/*vers
17、ion(版本)*/*type os service服务类型 */unsigned short int ip_len;/*total length ( 总长度)*/unsigned short int ip_id;"identification ( 标识符)*/unsigned short int ip_off;/*fragment offset field(段移位域 )*/unsigned char ip_ttl;/*time to live ( 生存时间)*/unsigned char ip_p;/*protocol( 协议)*/unsigned short int ip_sum;
18、/*checksum( 校验和)*/unsigned int ip_src;/*source address( 源地址)*/unsigned int ip_dst;/*destination address( 目的地址)*/4网络嗅探器的设计在以太网中,信息是以明文的形式在网络上传输,当将网络适配器设置为混杂模式时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可捕获任何一个在同一冲突域上传输的数据包。IEEE802. 3标准的以太网采用的是持续CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息
19、捕获系统能够拦截我所要的信息,这是捕获数据包的物理基础。首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分运行在操作系统核心内部,直接与网络接口驱动交互。这个部分是系统依赖的,在W inpcap的解决方案里它被认为是一个设备驱动称作 NPF ( NetgroupPacket F ilter)。 W inpcap提供了两个不同的库:Packet. dll和W pcap. dll o Wpcap. dll提供了更加友好、功能更加强大的函数调用。W inPcap 的优势在于提供了一套标准的抓包接口,与libpcap 兼容,可使得原来许多UN IX平台下的网络分析工具
20、快速移植过来,便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于 NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。前者提供了一个底层AP I,伴随着一个独立于M icrosoft 操作系统的编程接口 ,这些AP I可以直接用来访问驱动的函数;后者导出了一组更强大的与libpcap一致的高层抓包函数库(capture prmi itives) 。这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。网络嗅探器工作在网络环境的底层 ,拦截所有正在网络上传送的数据,并且通过相应的解析处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体
21、拓扑布局。含了相应设备的名 称和描述。取得网卡列表后就在屏幕上显示出来,如果网卡没有被发现就显示有关错误pcap _ findalldevs ()同其他的libpcap 函数一样有一个errbuf 参数,当有异常情况发生时,这个参数会被pcap填充为某个特定错误字串。程序功能示意如下:获得网卡的信息后就可以按数据捕获的要求打开网卡。但是大部分的包捕获程序都将混杂模式设为默认。数据包的过滤通过设置数据流过滤规则来实现,数据包过滤处理时嗅探技术中的难点和重点,WinPcap提供了最强大的数据流过滤引擎。它才用了一种高效的方法来捕获网络数据流的某些数据且常常和系统的捕获机制相集成。过滤数据的函数定U
22、DP的起始位置,就可以解析出原端口和目的端口。数据包捕获流程图:图4.1数据包捕获流程图4.1 嗅探器设计需要结构体嗅探器需要的结构体是由IP数据报结卞体、TCP报头结构体、UDP报头结构体组成。每个结构体如何定义已在网络嗅探器的原理中具体讲过。4.2 过滤规则的主要代码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.
23、sin_port = htons(6000);memcpy(&sa.sin_addr.S_un.S_addr,pHostent->h_addr_list0,/*bind()设定自己主机的IPpHostent->h_length);bind(sock, (SOCKADDR *)&sa, sizeof(sa);地址和端口号*/if (WSAGetLastError()=10013)exit(1);WSAIoctl(sock, SIO_RCVALL, &optval, sizeof(optval), NULL, 0, &dwBytesRet, NULL,
24、NULL);pIpheader = (struct ipheader *)RecvBuf;pTcpheader = (struct tcpheader *)(RecvBuf+ sizeof(struct ipheader );pUdpheader = (struct udphdr *) (RecvBuf+ sizeof(struct ipheader );while (1)memset(RecvBuf, 0, sizeof(RecvBuf);recv(sock, RecvBuf, sizeof(RecvBuf), 0);saSource.sin_addr.s_addr = pIpheader-
25、>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(structipheader)+sizeof(structtcpheader);lenudp =(
26、ntohs(pIpheader->ip_len)-(sizeof(structudphdr);4.3 循环抓包4.3.1 TCP 包if(pIpheader->ip_p)=IPPROTO_TCP&&lentcp!=0)printf("*n");pCount+;datatcp=(unsigned char *) RecvBuf+sizeof(struct ipheader)+sizeof(struct tcpheader); printf("-TCP-n");printf("n 目的 IP 地址:sn",sz
27、DestIP);printf("n 目的端: %in",ntohs(pT cpheader->dport);printf("datatcp address->%xn",datatcp);printf("size of ipheader->%in",sizeof(struct ipheader);printf("size of tcpheader->%in",sizeof(struct tcpheader);printf("size of the hole packet->%i
28、n",ntohs(pIpheader->ip_len);printf("nchar Packet%i %i="",pCount,lentcp-1);for (i=0;i<lentcp;i+)printf("x%.2x",*(datatcp+i);if (i%10=0)printf(""n"");printf(""nnn");for (i=0;i<lentcp;i+)if( *(datatcp+i)<=127&&*(datatc
29、p+i)>=20)printf("%c",*(datatcp+i);elseprintf(".");printf("nn*n");运行后的结果:IPUR INT DE» SI« PRE COM N口U OTC MOI DSP COR' - . - ac>502 B磋d餐.body b<fcoloruwJiitc <CGnt Gr>,Chl >502 Dad 5七/已 vCZh1 ><-<centRi*>. .<hvXcfinter>ng
30、inx/l .4.1<Zcente>>>. H<ZTindy|>, ./HtinlA.0L . .* X NX yt * M 姓-X * X * M XM R = SM JH 奸 MKM * M A X =陛 X * M *TCP一目的IP地址;211,137.123.17目的端口 i NM Qdl9Lcp address >11fc68 eWk号 aFs isc of tcplic*dcir->20|s i of tlw: Iwile pankftt->52chat- Packctl61 Ill 1 -“、x0e”H '"
31、;Xxi14KxHh Xjcti4 XWl XmH3! 3cM1! XxM2 3fkl l kxBl 04 ,Bc02i?;图4.3.1 TCP包运行结果4.3.2 UDP 包if(pIpheader->ip_p)=IPPROTO_UDP&&lentcp!=0)pCount+;dataudp=(unsignedchar*)RecvBuf+sizeof(structipheader)+sizeof(struct udphdr);printf("-UDP-n");printf("n目的 IP 地址:%sn",szDestIP);prin
32、tf("n目的端口: %dn",ntohs(pT cpheader->dport);printf("UDP 数据地址:xn",dataudp);printf("IP头部长度:%in",sizeof(struct ipheader);printf("UDP头部长度:%in",sizeof(struct udphdr);printf("包的大小:%in",ntohs(pIpheader->ip_len);printf("nchar Packet%i %i=""
33、;,pCount,lenudp-1);for (i=0;i<lenudp;i+)printf("x%.2x",*(dataudp+i);if (i%10=0)printf(""n"");printf(""nnn");for (i=0;i<lenudp;i+)if( *(dataudp+i)<=127&&*(dataudp+i)>=20)printf("%c",*(dataudp+i);elseprintf(".");print
34、f("nn*n");)运行后的结果:r D:WIN我的文和-其巨-电费关TUt&KT口造商辂裸程母计UebugZOl3050135.皿*3T>*2Sk5H35 皿 738W6ESx£43Sx4F rM523(Sfi 53 Z 二八xtm1?LDDEHFCFIEDEIDlFPFEFJErFGFlEDFhftA. R HR GFP FHEHFDECFCE PFH UfcFFFFFA GAB.SH耽* 昌 .g,L *,5*$MLGL0T<B«OUSEMORWGROUP4.3GRXCH8UTV0FXCZ,XNKM X M MMKMKXXKM
35、KMMM MX M M MM. MX K K X X M K KX H JK K M X K KK-IIDP-目的 IPi也址:10.S3.91,255目的端口1 13BUDP加堀地址:IlFcEcI灰线亮2«U暧特限度;8包的大小 244char PnckuMOB 2亚:! - "511"'JWa 3oc:9 3fBpXie5bjcRl KwHR xH a st fl H'r' pXxc a Xx00Xx0BXx2 0x44x44X1(45 Xx48 x46Xx43 ,<4bK49Xx4E Kx44x4E 'k»4
36、9 S«4< m49 Sk4C k4G"346 x45 W4K Sxlrt Xx45 oc5 B k46 x43 54E549 "*x45 Xx44x46 Xx4bx41、x4i xBBXx20x*ll、x4W,T图4.3.2 UDP包运行结果5总结通过这次课程设计,使我更加扎实的掌握了有关嗅探器方面的知识,在设计过程中虽然遇到了 一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。这次课程设计不仅培养了我独 立思考、动手操作的能力,在各种其它能力上也都有了提高。从理论到实践,在这段日子里,不仅
37、可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才 能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。此次设计也让我明白了思路即出路,有不懂或不明白的地方要及时请教或上网查 询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。参考文献:1吴功宜,董大凡王培等.计算机网络高级软件编程技术【 M.北京:清华大学出版社,20082谢小特,王勇军.基于winPcap的捕包程序设计【J】.软件特刊,2007 (11 ) : 71-723
38、胡晓元史浩山.winpcap包截获系统的分析及其应用【J】.计算机工程,2005 ( 1) : 96-974赵辉,叶子青.VisualC+系统开发实例精粹【 附件:M】,北京:人民邮电出版社,2005#include <winsock2.h>/*windowssocket的头文件,系统定义的*/#include <windows.h>unsigned short int sport;port (源端口号)*/unsigned short int dport;/*source#include <ws2tcpip.h>/*destination port(目的端
39、口号)*/#include <stdio.h>#include <stdlib.h>unsigned int th_seq;number( 包的序列号 )*/*sequence#pragma comment(lib,"ws2_32.lib")/*unsigned int th_ack;链接API相关连的 Ws2_32.lib 静态库*/#define MAX_HOSTNAME_LAN 255#define SIO_RCVALL/*acknowledgement number( unsigned char th_x:4;/*unused(未使用)*/确
40、认应答号)*/_WSAIOW(IOC_VENDOR,1)#define MAX_ADDR_LEN 16unsigned char th_off:4;offset(数据偏移量)*/*datastruct ipheader unsigned char ip_hl:4;/*headerlength(报头长度)*/unsigned char Flags;unsigned short int th_win;/*windows(窗 口 )*/*标志全*/unsigned char ip_v:4;/*version(本)*/版unsigned short int th_sum;/*checksum(校验和)
41、*/unsigned char ip_tos;/*type osservice服务类型*/unsigned short int ip_len;/*totallength (总长度)*/unsigned short int th_urp; pointer( 紧急指针)*/ TCP_HDR;typedef struct udphdr /*urgentunsigned short int ip_id;/*identification (标识符)*/unsigned short int ip_off;unsigned short sport;port(源端口号)*/unsigned short dpo
42、rt;/*source"fragment offset field(段移位域)*/*destination port(目的端口号)*/unsigned char ip_ttl;/*time to live(生存时间)*/unsigned short len;length(udp 长度)*/*udpunsigned char ip_p;/*protocol( 协议)*/unsigned short int ip_sum;/*checksum(校验和)*/unsigned int ip_src;/*sourceaddress(源地址)*/unsigned int ip_dst;/*des
43、tinationaddress(目的地址)*/unsigned short cksum; checksum(udp 校验和)*/ UDP_HDR;void main()SOCKET sock;WSADATA wsd;DWORD dwBytesRet;unsigned int optval = 1;/*udp;/* total ip header length: 20 bytes (=160unsigned char *dataudp,*datatcp;int i,pCount=0,lentcp, lenudp;bits) */typedef struct tcpheader SOCKADDR_
44、IN sa,saSource, saDest;struct hostent FAR * pHostent;char FARnameMAX_HOSTNAME_LAN;char szSourceIPMAX_ADDR_LEN, szDestIPMAX_ADDR_LEN,RecvBuf65535 =0;struct udphdr *pUdpheader;struct ipheader *pIpheader;struct tcpheader *pTcpheader;WSAStartup(MAKEWORD(2,1),&wsd);if (sock = socket(AF_INET,SOCK_RAW,
45、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_list0, pHostent->h_length);bind(sock, (SOCKADDR *)&sa, sizeof(sa);/*bind() 设定自己主机的IP地
46、址和端口号*/if (WSAGetLastError()=10013) exit(1);WSAIoctl(sock, SIO_RCVALL, &optval, sizeof(optval), NULL, 0, &dwBytesRet, NULL, NULL);pIpheader = (struct ipheader*)RecvBuf;pTcpheader = (struct tcpheader *)(RecvBuf+ sizeof(struct ipheader );pUdpheader = (struct udphdr *) (RecvBuf+ sizeof(struct i
47、pheader );while (1) memset(RecvBuf, 0, sizeof(RecvBuf);recv(sock, RecvBuf, sizeof(RecvBuf), 0);saSource.sin_addr.s_addr = pIpheader->ip_src;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=
48、(ntohs(pIpheader->ip_len)-(sizeof(struct ipheader)+sizeof(struct tcpheader);lenudp=(ntohs(pIpheader->ip_len)-(sizeof(struct ipheader)+sizeof(struct udphdr);if(pIpheader->ip_p)=IPPROTO_TCP&&le ntcp!=0)printf("*n,);pCount+;datatcp=(unsigned char *)RecvBuf+sizeof(structipheader)+sizeof(struct tcpheader);printf("-TCP-n");printf("n目的 IP地址:%sn",szDestIP);printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深入理解2025年软件测试术语试题及答案
- 基于2025年视角的城市农贸市场改造社会稳定风险评估与社区动员模式分析报告
- 2025定制类委托合同范本格式
- 工业互联网平台边缘计算硬件架构在2025年智能工厂生产安全监控中的优化应用报告
- 数字水印技术在工业互联网平台中实现数据访问控制报告
- 数字化保护2025年文化遗产与利用的数字文化遗产保护技术专利布局优化策略实施效果评估
- 工业互联网平台网络安全隔离技术2025年产业发展现状与市场前景
- 企业重点技术改造-年产120万吨水泥粉磨站项目可行性研究报告
- 新能源汽车制造行业智能化生产设备应用研究报告
- 电力系统基础练习卷含答案
- 2023-2024学年全国初中一年级下历史人教版期末试卷(含答案解析)
- 2024京东代运营服务合同范本
- 审计质量影响因素的实证分析
- 山东省青岛市即墨市2024年中考适应性考试数学试题含解析
- 海上风电柔性直流输电系统先进控制技术分析报告
- MOOC 大学物理-力学、电磁学-重庆大学 中国大学慕课答案
- 废旧物资合同
- 三年级语文下册 期末综合模拟测试卷(人教浙江版)
- 好老师是民族的希望
- 构建自媒体内容生产与运营流程
- 《卫生经济学》课件
评论
0/150
提交评论