网络编程课程设计-网路嗅探器

合集下载

网络嗅探课程设计

网络嗅探课程设计

一,引言目的:了解黑客惯用的各种网络嗅探技术及其对网络安全的威胁,针对不同嗅探方法采用相应的防范对策。

要求:应具备以下知识:网络嗅探原理。

了解流行网络协议的数据封装格式。

内容:通过理解黑客惯用的网络嗅探技术以及对于WiresharkPortable等sniff工具的使用,分析黑客的主要攻击手段,并学会配置测试计算机采用IPSec加密,预防网络嗅探,从而达到保护自我的目的.主要任务:1、描述模拟黑客嗅探所在网络中的传输流量,捕获帐号、密码等敏感信息,对加密的密码进行破解攻击。

2、使用WiresharkPortable等网络工具进行嗅探。

3、使用网络数据包嗅探专家、dsniff等黑客工具进行密码嗅探和破解。

4、配置测试计算机采用IPSec加密,重复上述嗅探过程,观察结果。

二,仪器设备和材料1、每组4台PC划做一个VLAN。

2、4台PC,A号PC机用于黑客攻击,B,C,D分别用于Windows文件服务器、Web服务器、FTP服务器等模拟。

三,黑客攻击主要手段分析黑客除了利用漏洞扫描技术进行踩点外,还可以在条件满足的情况下,对目标主机所在网络进行嗅探,并对嗅探到的信息进行分析,从中获得所需的敏感信息,如密码等。

网络嗅探工具通常用来进行协议分析和网络监控,以便于进行故障诊断、性能分析和安全分析等,黑客则用之进行安全敏感信息的监听和截取。

其实,网络嗅探的原理很简单,他是一种数据链路层的技术,利用的是共享式网络传输介质.共享即意味着网络中的一台机器可以嗅探到传递给本网段中所有机器的报文.网卡存在一种特殊的工作模式,在这种工作模式下,网卡不对目的地址进行判断,而直接将他收到的所有报文都传递给操作系统处理.这种特殊的工作模式,就称之为混杂模式.网络嗅探器通过将网卡设置为混杂模式,并利用数据链路访问技术来实现对网络的嗅探.实现了对数据链路层的访问,我们就可以把嗅探能力扩展到任意类型的数据链路帧,而不光是IP数据报.网络嗅探器,可以理解为一个安装在计算机上的窃听设备,它可以用来窃听计算机在网络上所产生的众多的信息,可以窃听计算机程序在网络上发送和接收到的数据,用来接收在网络上传输的信息。

在vs2008MFC下开发基于winpcap的网络嗅探器(IP,TCP,UDP)

在vs2008MFC下开发基于winpcap的网络嗅探器(IP,TCP,UDP)

课程设计Ⅰ设计报告题目:基于Winpcap的网络嗅探器的实现学号:姓名:学院:专业班级:指导教师:设计时间:指导老师评语:评定成绩: 签名: 日期:目录1 概述 (3)1.1课程设计的目的 (3)1.2设计任务与要求 (3)1.3开发环境 (3)2系统设计的基本概念与原理 (3)2.1IP协议基本知识 (3)2.2TCP协议基本知识 (6)2.3UDP协议基本知识 (9)2.4 WINPCAP基本知识 (9)2.5 WINPCAP基本原理 (14)2.6MFC编程框架 (16)3 基于WINPCAP的单文档网络嗅探器的设计与分析 (19)3.1系统设计实现的基本原理与过程 (19)3.2系统功能设计 (21)3.3系统架构设计 (22)3.4子系统与模块设计 (23)3.4.1网络嗅探器设置模块 (23)3.4.2网络数据包的捕获模块 (23)3.4.3解析和显示模块 (23)4 系统详细设计与实现 (24)4.1数据结构的设计 (24)4.2全局变量与函数的声明 (25)4.3嗅探器界面设计 (25)4.4嗅探器捕获模块的设计与实现 (26)4.5网络数据包捕获模块的设计与实现 (31)4.6解析和显示模块的设计与实现 (32)4.6.1列表视图初始化设置 (32)4.6.2从读取离线数据包并在列表视图中显示 (33)4.6.2响应用户鼠标消息,解析对应行的数据包信息。

(36)5 系统调试与运行 (38)5.1 WINPCAP函数库的安装 (38)5.2 SNIFFER网络嗅探器的测试与运行 (38)6 课程设计总结 (39)参考文献 (40)1 概述1.1 课程设计的目的目的:设计一个GUI程序,实现IP、TCP、UDP数据包的捕获和解析。

通过编程了解各类数据报的结构,掌握网络编程的基本原理和方法。

1.2 设计任务与要求本课程设计的基本内容是捕获IP,TCP,UDP数据包,通过解析数据包,理解和掌握各类数据包的结构(1)设计一个GUI程序,完成局域网数据包的捕获和IP、TCP、UDP数据包的解析;(2)捕获几个网络数据报,给出实例并分析各数据包各字段的含义;(3)说明基于Winpcap编程的基本原理、程序的总体框架,绘制每个函数的详细设计流程图。

(2020年编辑)网络嗅探器的设计与实现

(2020年编辑)网络嗅探器的设计与实现

《网络与信息安全》课程设计报告班级学号:姓名:题目:评阅:成绩:2011年1月目录一、开发背景1、网络安全现状。

2、开发意义。

二、设计分析1、实现目标。

2、开发技术简介。

三、详细设计1、嗅探原理。

2、代码设计。

四、测试运行五、总结六、参考文献摘要网络嗅探器是作用在网络上的一种监听程序,它是系统管理员的一个得力助手,管理员可以用它来分析网络。

例如当网络繁忙时可利用它来查找是哪一段网络繁忙,数据报文是属于哪一种协议,这样可以计算出哪种业务受欢迎。

但是当有黑客使用它时,它又变得很可怕。

它可以非法获取一些保密性信息,如帐号、密码等,它带来的负面破坏是非常大的。

作为从事网络安全技术方面的人员来说,要想有效地利用它、防范它就得深入地学习、分析网络嗅探技术。

1、本设计的基本任务是设计一个嗅探软件,实现对常用网络数据包抓取、分析。

2、软件所要完成对本机在网络中的通信数据,比如协议类型,源、目的地址和端口、数据包的大小等加以分析的功能。

3、本设计用到的开发工具为Microsoft Visual Studio 2010 开发环境为Windows 7。

4、程序由韩瑞彬同学和我共同完成,本人主要负责主界面的设计和网络数据包的抓取,韩瑞彬同学负责对数据包的解析设计。

关键字:嗅探器,安全,黑客,数据报文一、开发背景1、网络安全现状随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。

但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。

计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。

Internet 的安全已经成为亟待解决的问题。

多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。

嗅探器是一种常用的收集有用数据的方法,可以作为分析网络数据包的设备。

网络嗅探器的设计实现

网络嗅探器的设计实现

- - -.《网络与信息安全》课程设计报告2011年1月目录一、开发背景1、网络安全现状。

2、开发意义。

二、设计分析1、实现目标。

2、开发技术简介。

三、详细设计1、嗅探原理。

2、代码设计。

四、测试运行五、总结六、参考文献摘要网络嗅探器是作用在网络上的一种监听程序,它是系统管理员的一个得力助手,管理员可以用它来分析网络。

例如当网络繁忙时可利用它来查找是哪一段网络繁忙,数据报文是属于哪一种协议,这样可以计算出哪种业务受欢迎。

但是当有黑客使用它时,它又变得很可怕。

它可以非法获取一些XX性信息,如XX、密码等,它带来的负面破坏是非常大的。

作为从事网络安全技术方面的人员来说,要想有效地利用它、防X它就得深入地学习、分析网络嗅探技术。

1、本设计的基本任务是设计一个嗅探软件,实现对常用网络数据包抓取、分析。

2、软件所要完成对本机在网络中的通信数据,比如协议类型,源、目的地址和端口、数据包的大小等加以分析的功能。

3、本设计用到的开发工具为Microsoft Visual Studio 2010 开发环境为Windows 7。

4、程序由韩瑞彬同学和我共同完成,本人主要负责主界面的设计和网络数据包的抓取,韩瑞彬同学负责对数据包的解析设计。

关键字:嗅探器,安全,黑客,数据报文一、开发背景1、网络安全现状随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。

但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。

计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。

Internet 的安全已经成为亟待解决的问题。

多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。

嗅探器是一种常用的收集有用数据的方法,可以作为分析网络数据包的设备。

课程设计--基于C#的网络嗅探器的设计和实现

课程设计--基于C#的网络嗅探器的设计和实现

网络与信息安全课程设计网络嗅探器的设计和实现学院:计算机科学与技术班级:网络工程08-1班姓名:学号:指导老师:目录一、什么是嗅探器--------------------------------------------1二、嗅探器的作用---------------------------------------------1三、网络嗅探器的原理-----------------------------------------1四、反嗅探技术----------------------------------------------7五、网络嗅探器的设计-----------------------------------------8六、结语---------------------------------------------------14参考书目--------------------------------------------------14网络嗅探器的实际与实现一、什么是嗅探器嗅探器,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。

简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。

可是,计算机直接所传送的数据,事实上是大量的二进制数据。

因此, 一个网络窃听程序必须也使用特定的网络协议来分解嗅探到的数据,嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。

计算机的嗅探器比起电话窃听器,有他独特的优势:很多的计算机网络采用的是“共享媒体"。

也就是说,你不必中断他的通讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。

我们称这种窃听方式为“基于混杂模式的嗅探”(promiscuous mode)。

网络嗅探器程序课程设计

网络嗅探器程序课程设计

计算机学院课程设计专业:课程名称: TCP/IP协议分析实验课题名称: 网络嗅探器程序设计教师:学号: 姓名:时间: 2011 年月日网络嗅探器程序设计一. 需求分析.............................................................................................................................. - 3 -二. 技术分析.............................................................................................................................. - 3 -2.1 Wincap的基本结构................................................................................................... - 3 -2.2 抓包系统 ................................................................................................................. - 4 -三. 软件设计 (5)3.1 总体规划 (5)3.2 分块设计...................................................................................................................... - 5 -3.2.1 获得网卡信息.................................................................................................. - 5 -3.2.2 数据包过滤...................................................................................................... - 5 -3.2.3 数据包捕获...................................................................................................... - 5 -3.2.4 数据包分析...................................................................................................... - 5 -四. 代码实现 (6)4.1 获得设备列表 (6)4.2 打开一个适配器开始捕获数据包.............................................................................. - 6 -4.3 过滤数据包.................................................................................................................. - 6 -4.4 获取包数据.................................................................................................................. - 7 -4.5 解析数据包 (8)4.6 将数据包存入文件...................................................................................................... - 9 - 五软件图形界面 (10)5.1 软件实现图: (10)5.2 捕获UDP数据包:.................................................................................................... - 10 -5.3 捕获到的数据包解析: (11)六总结...................................................................................................................................... - 11 - 参考文献.................................................................................................................................... - 11 -网络嗅探器程序设计摘要:随着网络入侵的不断发展,网络安全变得越来越重要,利用一种方法对网络数据包进行高效捕获,并进行一系列的分析,从而进行可靠的网络安全管理显得尤为重要。

网络嗅探器的设计与实现-毕业设计

网络嗅探器的设计与实现-毕业设计

毕业论文题目:网络嗅探器的设计与实现学院:数学与信息工程学院专业:计算机科学与技术此毕业设计还包括以下文件,需要的下载后留下邮箱方便发给大家网络嗅探器的设计与实现摘要:嗅探器,英文可以翻译为Sniffer,是一种基于被动侦听原理的网络分析方式。

使用这种技术方式,可以监视网络的状态、数据流动情况以及网络上传输的信息。

实际上Sniffer技术被广泛地应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。

本次设计完成了一个较为简单的嗅探器,它实现了对本机的网络监控的作用,对IP包进行了分析,获得其运行的信息。

信息包括了源IP地址,目标IP地址,协议,时间,吞吐量,识别码,校验码,长度等等。

也可以保存所需要的包信息,也可选择所要嗅探的协议类型,以便获得要想的信息。

同时,通过POP3服务器设置端口的值来获取数据包,得到登入邮箱的帐号和密码。

关键词:嗅探器;协议;数据包;监听;吞吐量Design and Implementation of snifferZhang yin(College of Mathematics and Information Engineering, Jinxing University)Abstract:Sniffer, can be translated into English Sniffer,is a passive network analysis method based on the principle of listener. The use of such technology, can monitor the status of networks, data flows and information of network transmission. In fact Sniffer technology is widely used in network diagnosis, analysis of the agreement, performance analysis of the application and network security, and other fields.The design complete a relatively simple sniffer, it realized that the local network monitoring role, analysis the information of IP packet and get their information about the running system. Information includes the source address,destination address, protocol, time, throughput, identification, checking code, length and so on. It can save the information of required packet, and can choose the type of protocol to be sniffing, in order to get to the information.Meanwhile,it can get the Email’s log-mail account and password by analysis the port valu of the POP3 Server.Keywords:Sniffer; Protocol; Data packet; Monitor; Throughput目录1 绪论 (5)1.1 课题背景 (5)1.2 网络嗅探器的概述 (6)1.2.1 网络嗅探器的概念与原理 (6)1.2.2 网络嗅探的检测和防范 (7)1.2.3 网络嗅探器软件需要解决的问题 (8)2 网络嗅探器设计相关技术简述 (8)2.1 在交错环境下的嗅探技术 (8)2.1.1 ARP欺骗 (8)2.1.2 交换机MAC地址表溢出 (9)2.1.3 MAC地址伪造 (9)2.1.4 ICMP路由器发现协议欺骗 (9)2.1.5 ICMP重定向攻击 (9)2.2 C#语言编程 (10)2.3 网络协议 (10)2.3.1 IP (10)2.3.2 TCP (11)2.3.3 UDP (11)3 系统需求分析 (12)3.1 系统性能要求 (12)3.2 软件实现的功能 (12)4 网络嗅探器的相关拓展 (14)总结 (16)致谢 (16)参考文献 (17)附件 (18)1 绪论嗅探器,Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。

上机1:基于WinPcap的网络嗅探器设计与实现.

上机1:基于WinPcap的网络嗅探器设计与实现.

上机1:基于WinPcap的网络嗅探器设计1、目的与要求掌握基于WinPcap的网络编程模式。

理解并能应用WinPcap设计并实现网络数据包的捕获与解析。

2、设备与上机环境连网PC机(至少一台)。

计算机硬件要求:Intel Pentium5 处理器、256MB以上内存,Ethernet网卡,网线若干。

计算机软件要求:MS Windows 9x/2000/XP操作系统,TCP/IP协议,WinPcap430,Visual c++6.0/.net系统。

3、上机内容与步骤:在程序设计之前,请参照提供的软件安装WinPcap。

之后,按照如下步骤操作:步骤1:在VC++ 6.0下创建一个DOS命令行程序,工程名:自己的学号-PacketDump步骤2:打开main(函数,在主程序中增加如下头文件和常量定义:#include#define LINE_LEN 16pcap_if_t *alldevs, *d;pcap_t *fp;u_int inum, i=0;char errbuf[PCAP_ERRBUF_SIZE];int res;struct pcap_pkthdr *header;const u_char *pkt_data;printf("pktdump_ex: prints the packets of the network using WinPcap.\n"; printf(" Usage: pktdump_ex [-s source]\n\n"" Examples:\n"" pktdump_ex -s file.acp\n"" pktdump_ex -s \\Device\\NPF_{C8736017-F3C3-4373-94AC-9A34B7DAD998}\n\n"; if(argc < 3{printf("\nNo adapter selected: printing the device list:\n";/* The user didn't provide a packet source: Retrieve the local device list */if(pcap_findalldevs(&alldevs, errbuf == -1{fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf;exit(1;}/* Print the list */for(d=alldevs; d; d=d->next{printf("%d. %s\n ", ++i, d->name;if (d->descriptionprintf(" (%s\n", d->description;elseprintf(" (No description available\n";}if (i==0{printf("\nNo interfaces found! Make sure WinPcap is installed.\n"; return -1;}printf("Enter the interface number (1-%d:",i;scanf("%d", &inum;if (inum < 1 || inum > i{printf("\nInterface number out of range.\n";/* Free the device list */pcap_freealldevs(alldevs;return -1;}/* Jump to the selected adapter */for (d=alldevs, i=0; i< inum-1 ;d=d->next, i++;/* Open the adapter */if ((fp = pcap_open_live(d->name, // name of the device65536, // portion of the packet to capture.// 65536 grants that the whole packet will be captured on all the MACs. 1, // promiscuous mode (nonzero means promiscuous1000, // read timeouterrbuf // error buffer== NULL{fprintf(stderr,"\nError opening adapter\n";return -1;}}else{/* Do not check for the switch type ('-s' */if ((fp = pcap_open_live(argv[2], // name of the device65536, // portion of the packet to capture.// 65536 grants that the whole packet will be captured on all the MACs. 1, // promiscuous mode (nonzero means promiscuous1000, // read timeouterrbuf // error buffer== NULL{fprintf(stderr,"\nError opening adapter\n";return -1;}}/* Read the packets */while((res = pcap_next_ex( fp, &header, &pkt_data >= 0{if(res == 0/* Timeout elapsed */continue;/* print pkt timestamp and pkt len */printf("%ld:%ld (%ld\n", header->_sec, header->_usec, header->len; /* Print the packet */for (i=1; (i < header->caplen + 1 ; i++{printf("%.2x ", pkt_data[i-1];if ( (i % LINE_LEN == 0 printf("\n";}printf("\n\n";}if(res == -1{printf("Error reading the packets: %s\n", pcap_geterr(fp;return -1;}pcap_close(fp;return 0;步骤3:为编译器指定包含文件和库文件搜索目录。

网络嗅探软件课程设计

网络嗅探软件课程设计

网络嗅探软件课程设计一、课程目标知识目标:1. 让学生理解网络嗅探软件的基本概念、原理和功能。

2. 掌握网络嗅探软件的使用方法和操作流程。

3. 了解网络嗅探软件在网络安全防护和数据分析中的应用。

技能目标:1. 培养学生运用网络嗅探软件进行数据捕获、分析和解读的能力。

2. 提高学生运用网络嗅探软件解决实际问题的能力。

3. 培养学生独立思考和团队协作的能力。

情感态度价值观目标:1. 培养学生正确的网络安全意识,遵守网络道德规范。

2. 增强学生对我国网络安全的责任感,激发爱国情怀。

3. 引导学生树立正确的价值观,抵制不良网络行为。

课程性质:本课程为信息技术学科,旨在让学生掌握网络嗅探软件的基本知识和操作技能,提高网络安全意识。

学生特点:学生处于高年级阶段,具有一定的网络知识和操作技能,对网络技术有较高的兴趣。

教学要求:结合学生特点和课程内容,注重实践操作,提高学生的实际操作能力和问题解决能力。

同时,注重培养学生的情感态度和价值观,使他们在掌握知识技能的同时,树立正确的网络安全观念。

通过本课程的学习,学生能够达到以上所述的知识、技能和情感态度价值观目标。

二、教学内容1. 网络嗅探软件概述- 网络嗅探软件的定义与功能- 网络嗅探软件的分类与应用2. 网络嗅探原理- 数据包捕获原理- 数据包分析原理3. 常用网络嗅探软件介绍- Wireshark- Fiddler- Tcpdump4. 网络嗅探软件的安装与使用- 软件下载与安装- 基本操作与功能使用5. 实践操作与案例分析- 数据捕获与分析- 网络问题诊断与解决- 安全隐患识别与防范6. 网络安全意识与道德规范- 遵守法律法规- 抵制不良网络行为- 保护个人隐私与数据安全教学内容安排与进度:第一课时:网络嗅探软件概述、常用网络嗅探软件介绍第二课时:网络嗅探原理、安装与使用第三课时:实践操作与案例分析第四课时:网络安全意识与道德规范本章节内容与课本紧密关联,确保科学性和系统性。

网络嗅探器课程设计

网络嗅探器课程设计

网络嗅探器课程设计一、课程目标知识目标:1. 学生能理解网络嗅探器的基本原理和功能。

2. 学生能掌握网络嗅探器的工作流程和使用方法。

3. 学生了解网络安全知识,认识到网络嗅探器的合法与非法应用。

技能目标:1. 学生能够运用网络嗅探器进行数据包捕获和解析。

2. 学生能够分析捕获到的数据包,提取有用信息。

3. 学生能够独立完成网络嗅探器的操作,解决实际网络问题。

情感态度价值观目标:1. 学生培养对网络技术的兴趣,提高探究网络知识的热情。

2. 学生树立正确的网络安全意识,遵循法律法规,抵制非法网络行为。

3. 学生通过本课程的学习,增强团队协作能力,培养自主学习和解决问题的能力。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握网络嗅探器相关知识的基础上,提高实际操作技能,同时注重培养学生的网络安全意识和团队协作能力。

课程目标具体、可衡量,便于后续教学设计和评估。

二、教学内容1. 网络嗅探器原理及功能- 网络嗅探器的定义与作用- 数据包捕获与解析原理- 常用网络嗅探器软件介绍2. 网络嗅探器操作与实践- 安装与配置网络嗅探器- 数据包捕获、过滤与分析- 常见协议的数据包解析方法3. 网络安全与合法应用- 网络嗅探器的合法应用场景- 网络嗅探器在网络安全中的作用- 非法网络嗅探行为的危害及法律责任4. 教学案例分析与讨论- 实际案例介绍与问题分析- 团队协作分析与解决方案- 教师点评与总结教学内容依据课程目标,注重科学性和系统性,按照以下教学大纲进行安排:第1周:网络嗅探器原理及功能第2周:网络嗅探器操作与实践第3周:网络安全与合法应用第4周:教学案例分析与讨论教学内容与课本紧密关联,结合实际教学进度,确保学生能够逐步掌握网络嗅探器的相关知识。

三、教学方法本课程采用多样化的教学方法,旨在激发学生的学习兴趣和主动性,提高教学效果。

1. 讲授法:- 对于网络嗅探器的基本原理、功能以及网络安全等理论知识,采用讲授法进行教学。

《网络嗅探器》课程设计报告

《网络嗅探器》课程设计报告

《网络与信息安全技术》课程报告课题名称:网络嗅探器提交报告时间:2010年12月17日各成员的工作量划分表网络嗅探器专业组号指导老师[摘要]随着网络技术的飞速发展,网络安全问题越来越被人重视。

嗅探技术作为网络安全攻防中最基础的技术,既可以用于获取网络中传输的大量敏感信息,也可以用于网络管理。

通过获取网络数据包的流向和内容等信息,可以进行网络安全分析和网络威胁应对。

因此对网络嗅探器的研究具有重要意义。

本课程设计通过分析网络上常用的嗅探器软件,在了解其功能和原理的基础上,以VC为开发平台,使用Windows环境下的网络数据包捕获开发库WinPcap,按照软件工程的思想进行设计并实现了一个网络嗅探工具。

该嗅探工具的总体架构划分为5部分,分别是最底层的数据缓存和数据访问,中间层的数据捕获,协议过滤,协议分析和最顶层的图形画用户界面。

本嗅探器工具完成了数据包捕获及分析,协议过滤的主要功能,实现了对网络协议,源IP地址,目标IP地址及端口号等信息的显示,使得程序能够比较全面地分析出相关信息以供用户参考决策。

关键词:网络嗅探;WinPcap编程接口;数据包;网络协议;多线程(中文摘要在150字左右。

摘要正文尽量用纯文字叙述。

用五号宋体字。

姓名与摘要正文之间空二行。

关键词与摘要之间不空行。

“摘要”这两个字加粗)关键词:入侵检测系统;感应器;分析器;分布式入侵检测系统模型Network snifferMajor: software engineeringGroup Number: 29[Abstract] With the rapid development of network technology, network security is increasingly being attention. Sniffing network security technology as the most basic offensive and defensive techniques,both used to obtain a large number of network transmission of sensitive information can also be used for network management. Access to network packets through the flow and content and other information, can be network security threat analysis and response networks. Therefore, the network sniffer is of great significance.The course is designed by analyzing the commonly used network sniffer software, to understand the functions and principles, based on the VC as a development platform, using the Windows environment, the development of network packet capture library WinPcap, according to software engineering design And implementation of a network sniffer tool. The overall structure of the sniffer is divided into five parts, namely, the bottom of the data caching and data access, middle layer of the data capture, protocol filtering, protocol analysis and top graphic art user interface.The completed tool sniffer packet capture and analysis of data, protocol filtering of the main functions, the realization of network protocol, source IP address, destination IP address and port number and other information display, makes the program out to a more comprehensive analysis of relevant information Decision-making for user reference[Keyword]network sniffer; WinPcap programming interface; data packet; network protocol; multi-threaded《网络与信息安全》课程报告错误!未定义书签。

5-编程实现简单的网络嗅探器

5-编程实现简单的网络嗅探器
2.4对数据包进行分析以获得数据包的长度;
2.5也可以只分析一种协议,比如IEEE802.3协议、IP协议、TCP协议、或UDP协议等。如果每层协议都分析,可获加分。
2.6显示分析结果
3.开发工具不限,建议使用VC++
设计内容与步骤
1.学习原始套接字编程的基本机制;
2.学习对数据包进行协议分析的基本方法。
计算机网络课程设计任务书
设计题目
编程实现简单的网络嗅探器——协议分析
已知技术参数和设计要求
1.利用原始套接字实现简单的网络嗅探器。
2.系统功能包括:
2.1原始套接字与网卡邦定,并接收流经网卡的所有数据包;
2.2对数据包进行分析以获得源IP地址和目的IP地址;
2.3对数据包进行分析以获得运输层协议类型、源端口号和目的端口号;
3.设计简单网络嗅探器的基本框架。
4.设计并实现简单的网络嗅探器。
5.课程设计任务说明书
设计工作计划与进度安排
1.原始套接字编程的基本机制2小时
2.对数据包进行网络嗅探器框架结构设计4小时
5.简单网络嗅探器设计与实现16小时
6.课程设计说明书12小时

网络嗅探器的设计与实现

网络嗅探器的设计与实现

+-----++----+.............+-----+ UserA ----- 路由 ............. UserB +-----+^+----+.............+-----+ \.........../ \---------/ +------+ 嗅探器 +------+ UserAIP地址:10.0.0.23 UserBIP地址:192.168.100.54 现在知道UserA要于UserB进行计算机通讯, UserA需要为10.0.0.23到192.168.100.54的通讯建 立一个IP包。这个IP包在网络上传输,它必须能够 穿透路由器。因此,UserA必须首先提交这个包给 路由器。由每个路由器考查目地IP地址然后决定传 送路径。UserA所知道的只是本地与路由的连接, 和UserB的IP地址。UserA并不清楚网络的结构情况 和路由走向。UserA必须告诉路由预备发送的数据 包的情况,以太网数据传输结构大概是这样的: +--+--+--+--+--+--+ 目标MAC +--+--+--+--+--+--+ 源MAC +--+--+--+--+--+--+ 0800
+--+--+-----------+ .. .IP包. .. +--+--+--+--+-----+ CRC校验 +--+--+--+--+ 理解一下这个结构,UserA的计算机建立了一 个包假设它由100个字节的长度(我们假设一下, 20个字节是IP信息,20个字节是TCP信息,还有60 个字节为传送的数据)。现在把这个包发给以太 网,放14个字节在目地MAC地址之前,源MAC地址, 还要置一个0x0800的标记,他指示出了TCP/IP栈后 的数据结构。同时,也附加了4个字节用于做CRC校 验(CRC校验用来检查传输数据的正确性)。 现在发送数据到网络。所有在网内的计算机通 过适配器都能够发现这个数据片,其中也包括路由 适配器,嗅探器和其他一些机器。通常,适配器都 具有一块芯片用来做结构比较的,检查结构中的目 地MAC地址和自己的MAC地址,如果不相同,则适配 器会丢弃这个结构。这个操作会由硬件来完成,所 以,对于计算机内的程序来说,整个过程时毫无察 觉的。 当路由器的以太网适配器发现这个结构后,它会读 取网络信息,并且去掉前14个字节,跟踪4个字 节。查找0x8000标记,然后对这个结构进行处理

实验四 网络嗅探实验

实验四 网络嗅探实验

实验四网络嗅探实验实验四:网络嗅探实验一、实验目的1. 掌握Sniffer〔嗅探器〕工具的使用方法,实现FTP、数据包的捕捉。

2. 掌握对捕获数据包的分析方法,了解FTP、数据包的数据结构和连接过程,了解FTP、协议明文传输的特性,以建立平安意识。

二、实验环境1. 实验室所有机器安装了Windows操作系统,并组成了一个局域网,并且都安装了SnifferPro软件。

2. 每两个学生为一组:其中学生A进行或者Ftp连接,学生B运行SnifferPro软件监听学生A主机产生的网络数据包。

完成实验后,互换角色重做一遍。

三、实验内容任务一:熟悉SnifferPro工具的使用任务二:捕获FTP数据包并进行分析任务三:捕获数据包并分析四、实验步骤任务一:熟悉SnifferPro的使用网络监控面板Dashboard使用Dashboard作为网络状况快速浏览Detail〔协议列表〕Matrix 〔网络连接〕设置实验原理:〔1〕网卡有几种接收数据帧的状态:unicast〔接收目的地址是本级硬件地址的数据帧〕,Broadcast〔接收所有类型为播送报文的数据帧〕,multicast〔接收特定的组播报文〕,promiscuous〔目的硬件地址不检查,全部接收〕〔2〕以太网逻辑上是采用总线拓扑结构,采用播送通信方式,数据传输是依靠帧中的MAC地址来寻找目的主机。

〔3〕每个网络接口都有一个互不相同的硬件地址〔MAC地址〕,同时,每个网段有一个在此网段中播送数据包的播送地址〔4〕一个网络接口只响应目的地址是自己硬件地址或者自己所处网段的播送地址的数据帧,丢弃不是发给自己的数据帧。

但网卡工作在混杂模式下,那么无论帧中的目标物理地址是什么,主机都将接收〔5〕通过Sniffer工具,将网络接口设置为“混杂〞模式。

可以监听此网络中传输的所有数据帧。

从而可以截获数据帧,进而实现实时分析数据帧的内容。

任务二:捕获FTP数据包并进行分析分组角色:学生A进行FTP连接,学生B使用Sniffer监视A的连接。

网络嗅探器的设计与实现

网络嗅探器的设计与实现

计算机网络课程设计报告网络嗅探器的设计与实现目录第一章设计目的、任务与要求 (1)1.1设计的目的 (1)1.2设计的任务与要求 (1)第二章系统分析设计 (1)2.1需求分析 (1)2.2 原理分析 (1)2.3网络中数据传送过程以及数据包结构 (2)2.3.1信息传送过程 (2)2.3.2 数据包的结构 (2)第三章系统实现 (4)3.1 Winpcap技术 (4)3.2系统主要模块 (7)3.3 实现界面 (9)第四章心得体会 (10)4.1 程序总结 (10)4.2 个人总结 (10)参考文献 (10)附录 (11)第一章设计目的、任务与要求1.1设计的目的编写程序实现捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

1.2设计的任务与要求IP数据包的捕获与分析,程序能够自动的收集局域网中的IP数据包,能在程序运行时进行显示。

实现在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

程序的具体要求如下:1)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

2)形成记录结果的日志文件。

第二章系统分析设计2.1需求分析在通常情况下,网络通讯的Socket程序只能响应与自己硬件地址想匹配的或者是以广播形式发出的数据桢,对于其他形式的数据桢,比如已到达网络接口但却不是发给此地址的数据桢,网络接口在验证目的MAC并非自身地址之后,将不进行响应,也就是说应用程序无法收取与自己无关的数据包。

所以,我们要想实现截获流经网络设备的所有数据包,都要采取一点特别的手段了:将网卡设置为混杂模式,这样以来,该主机的网卡就可以捕获所有流经其网卡的数据包和帧。

网络编程网络嗅探器PPT课件

网络编程网络嗅探器PPT课件

2021/3/12
11
网络编程技术
课堂练习题
1. 网卡通常有两种工作模式,即


2. 主机在接收到目的地址是本地的数据包的时候才 会接受,其他的数据包会丢弃,这个工作是
来完成的。
3. 为了捕获网络中的所有数据包,我们需要将网卡
设置成
模式。
4. 解析TCP包,检查封包的目的端口号,如果是
端口号是
,则说明使用的是FTP协议。
❖ 一般情况下,网卡是处于非混杂模式的,在这种 模式下,网卡只接收目的地址等于自己地址的数 据包。
❖ 如果把网卡设为混杂模式,就可以接收所有的网 络数据包,无论其目的地址是否等于自已的地址, 都一并接收。
❖ 为了捕获网络中的所有数据包,需要将网卡设置 成混杂模式。
2021/3/12
5
网络编程技术
嗅探器的原理
2021/3/12
10
网络编程技术
解析TCP数据包,取出登陆FTP的用户名和密码
void GetFtp(char *pData, DWORD dwDestIp) {
char szBuf[256]; static char szUserName[21]; static char szPassword[21]; if(strnicmp(pData, "USER ", 5) == 0) {
网络编程——
网络嗅探器
授课教师:
2021/3/12
1
导入
❖ 网络嗅探是指监听网络的数据信息。目前有很多 商业的或者免费的嗅探工具,也称嗅探器 (Sniffer)。
❖ 网络嗅探是网络监测和数据分析等管理活动常用 的的方法。网络嗅探器一般是通过网络传输介质 的共享特性实现抓包,获得当前网络的使用状况, 为网络管理员对网络中的信息进行实时的监测并 分析提供的一个合适的工具。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊目录1 设计目的 (2)2 设计内容 (2)3 程序流程 (2)4 设计步骤 (4)5 设计总结 (11)┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊1 设计目的网络通信课程设计是网络工程专业的大型作业课。

是培养计算机领域从事网络技术及应用工作的高级工程技术人才的必修课程。

本课的主要任务是使学生队所学的《计算机网络》知识从实践上有一个较清晰的了解。

对当前计算机网络的主要种类和常用的网络协议有更进一步的深入认识。

学会计算机网络设计和日常管理及维护的最基本方法。

网络编程简单的理解就两台计算机相互通讯数据,通过使用套接字来达到进程通信目的编程就是网络编程。

网络编程最主要工作就是在发送端把信息通过规定好的协议进行组包,在接收端按照规定好的协议把包进行解析,从而提取出相应的信息,达到通信的目的。

中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理。

本次实验运用C++的网络编程相关知识,通过学习了解了TCP和UDP协议的基本知识和SOCKET编程的基本概念,完成tracert程序,实现ping功能和路由追踪功能。

2 设计内容一、学习实践要求1.对计算机网络的物理构成有清晰的了解;2.理解计算机网络体系结构的内涵;3.熟悉计算机网络的分类及常用的网络协议;4.基于掌握计算机网络软件的开发方法;5.具备管理计算机网络的基本知识及技能。

二、模块功能(1)pin功能:发送ICMP数据包到计算机,如有返回,显示相应时间等。

(2)路由探测功能:依次ping途经的路由器或网关设备,依次显示途经路由器的响应时间。

3 程序流程┊┊┊┊┊┊Array┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊图1 流程图4 设计步骤一、程序运行结果相关截图图2 运行结果┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊图3 运行结果图4 运行结果┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊图5 运行结果二、程序源代码#include <iostream>#include <winsock2.h>#include <ws2tcpip.h>using namespace std;#pragma comment(lib, "Ws2_32.lib")//IP报头typedef struct{unsigned char hdr_len:4; //4位头部长度 unsigned char version:4; //4位版本号unsigned char tos; //8位服务类型 unsigned short total_len; //16位总长度┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ unsigned short identifier; //16位标识符unsigned short frag_and_flags; //3位标志加13位片偏移unsigned char ttl; //8位生存时间unsigned char protocol; //8位上层协议号unsigned short checksum; //16位校验和unsigned long sourceIP; //32位源IP地址unsigned long destIP; //32位目的IP地址} IP_HEADER;//ICMP报头typedef struct{BYTE type; //8位类型字段BYTE code; //8位代码字段USHORT cksum; //16位校验和USHORT id; //16位标识符USHORT seq; //16位序列号} ICMP_HEADER;//报文解码结构typedef struct{USHORT usSeqNo; //序列号DWORD dwRoundTripTime; //往返时间in_addr dwIPaddr; //返回报文的IP地址}DECODE_RESULT;//计算网际校验和函数USHORT checksum(USHORT *pBuf,int iSize){unsigned long cksum=0;while(iSize>1){cksum+=*pBuf++;iSize-=sizeof(USHORT);}if(iSize){cksum+=*(UCHAR *)pBuf;}cksum=(cksum>>16)+(cksum&0xffff);cksum+=(cksum>>16);return (USHORT)(~cksum);}//对数据包进行解码BOOL DecodeIcmpResponse(char * pBuf,int iPacketSize,DECODE_RESULT &DecodeResult,BYTE ICMP_ECHO_REPLY,BYTE ICMP_TIMEOUT){//检查数据报大小的合法性┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ IP_HEADER* pIpHdr = (IP_HEADER*)pBuf;int iIpHdrLen = pIpHdr->hdr_len * 4;if (iPacketSize < (int)(iIpHdrLen+sizeof(ICMP_HEADER)))return FALSE;//根据ICMP报文类型提取ID字段和序列号字段ICMP_HEADER *pIcmpHdr=(ICMP_HEADER *)(pBuf+iIpHdrLen);USHORT usID,usSquNo;if(pIcmpHdr->type==ICMP_ECHO_REPLY) //ICMP回显应答报文{usID=pIcmpHdr->id; //报文IDusSquNo=pIcmpHdr->seq; //报文序列号}else if(pIcmpHdr->type==ICMP_TIMEOUT) //ICMP超时差错报文{char * pInnerIpHdr=pBuf+iIpHdrLen+sizeof(ICMP_HEADER); //载荷中的IP头int iInnerIPHdrLen=((IP_HEADER *)pInnerIpHdr)->hdr_len*4; //载荷中的IP头长ICMP_HEADER * pInnerIcmpHdr=(ICMP_HEADER *)(pInnerIpHdr+iInnerIPHdrLen);//载荷中的ICMP头usID=pInnerIcmpHdr->id; //报文IDusSquNo=pInnerIcmpHdr->seq; //序列号}else{return false;}//检查ID和序列号以确定收到期待数据报if(usID!=(USHORT)GetCurrentProcessId()||usSquNo!=SeqNo){return false;}//记录IP地址并计算往返时间DecodeResult.dwIPaddr.s_addr=pIpHdr->sourceIP;DecodeResult.dwRoundTripTime=GetTickCount()-DecodeResult.dwRoundTripTime;//处理正确收到的ICMP数据报if (pIcmpHdr->type == ICMP_ECHO_REPLY ||pIcmpHdr->type == ICMP_TIMEOUT){//输出往返时间信息if(DecodeResult.dwRoundTripTime)cout<<" "<<DecodeResult.dwRoundTripTime<<"ms"<<flush;elsecout<<" "<<"<1ms"<<flush;}return true;}┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊void main(){//初始化Windows sockets网络环境WSADATA wsa;WSAStartup(MAKEWORD(2,2),&wsa);char IpAddress[255];cout<<"请输入一个IP地址或域名:";cin>>IpAddress;//得到IP地址u_long ulDestIP=inet_addr(IpAddress);//转换不成功时按域名解析if(ulDestIP==INADDR_NONE){hostent * pHostent=gethostbyname(IpAddress);if(pHostent){ulDestIP=(*(in_addr*)pHostent->h_addr).s_addr;}else{cout<<"输入的IP地址或域名无效!"<<endl;WSACleanup();return;}}cout<<"Tracing roote to "<<IpAddress<<" with a maximum of 30 hops.\n"<<endl;//填充目地端socket地址sockaddr_in destSockAddr;ZeroMemory(&destSockAddr,sizeof(sockaddr_in));destSockAddr.sin_family=AF_INET;destSockAddr.sin_addr.s_addr=ulDestIP;//创建原始套接字SOCKETsockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0,WSA_FLAG_OVERLAPPED);//超时时间int iTimeout=3000;//接收超时setsockopt(sockRaw,SOL_SOCKET,SO_RCVTIMEO,(char *)&iTimeout,sizeof(iTimeout)); //发送超时setsockopt(sockRaw,SOL_SOCKET,SO_SNDTIMEO,(char *)&iTimeout,sizeof(iTimeout));//构造ICMP回显请求消息,并以TTL递增的顺序发送报文//ICMP类型字段const BYTE ICMP_ECHO_REQUEST=8; //请求回显const BYTE ICMP_ECHO_REPLY=0; //回显应答const BYTE ICMP_TIMEOUT=11; //传输超时┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ //其他常量定义const int DEF_ICMP_DATA_SIZE=32; //ICMP报文默认数据字段长度const int MAX_ICMP_PACKET_SIZE=1024;//ICMP报文最大长度(包括报头)const DWORD DEF_ICMP_TIMEOUT=3000; //回显应答超时时间const int DEF_MAX_HOP=30; //最大跳站数//填充ICMP报文中每次发送时不变的字段char IcmpSendBuf[sizeof(ICMP_HEADER)+DEF_ICMP_DATA_SIZE]; //发送缓冲区memset(IcmpSendBuf, 0, sizeof(IcmpSendBuf)); //初始化发送缓冲区 char IcmpRecvBuf[MAX_ICMP_PACKET_SIZE]; //接收缓冲区memset(IcmpRecvBuf, 0, sizeof(IcmpRecvBuf)); //初始化接收缓冲区ICMP_HEADER * pIcmpHeader=(ICMP_HEADER*)IcmpSendBuf;pIcmpHeader->type=ICMP_ECHO_REQUEST; //类型为请求回显pIcmpHeader->code=0; //代码字段为0pIcmpHeader->id=(USHORT)GetCurrentProcessId(); //ID字段为当前进程号memset(IcmpSendBuf+sizeof(ICMP_HEADER),'E',DEF_ICMP_DATA_SIZE);//数据字段USHORT usSeqNo=0; //ICMP报文序列号int iTTL=1; //TTL初始值为1BOOL bReachDestHost=FALSE; //循环退出标志int iMaxHot=DEF_MAX_HOP; //循环的最大次数DECODE_RESULT DecodeResult; //传递给报文解码函数的结构化参数while(!bReachDestHost&&iMaxHot--){//设置IP报头的TTL字段setsockopt(sockRaw,IPPROTO_IP,IP_TTL,(char *)&iTTL,sizeof(iTTL));cout<<iTTL<<flush; //输出当前序号//填充ICMP报文中每次发送变化的字段((ICMP_HEADER *)IcmpSendBuf)->cksum=0; //校验和先置为0((ICMP_HEADER *)IcmpSendBuf)->seq=htons(usSeqNo++); //填充序列号((ICMP_HEADER *)IcmpSendBuf)->cksum=checksum((USHORT*)IcmpSendBuf,sizeof(ICMP_HEADER)+DEF_ICMP_DATA_SIZE); //计算校验和//记录序列号和当前时间SeqNo=((ICMP_HEADER*)IcmpSendBuf)->seq; //当前序号DecodeResult.dwRoundTripTime=GetTickCount(); //当前时间//发送TCP回显请求信息sendto(sockRaw,IcmpSendBuf,sizeof(IcmpSendBuf),0,(sockaddr*)&destSockAddr,sizeof(de stSockAddr));//接收ICMP差错报文并进行解析处理sockaddr_in from; //对端socket地址int iFromLen=sizeof(from); //地址结构大小int iReadDataLen; //接收数据长度while(1){//接收数据┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊iReadDataLen=recvfrom(sockRaw,IcmpRecvBuf,MAX_ICMP_PACKET_SIZE,0,(sockaddr*)&from,& iFromLen);if(iReadDataLen!=SOCKET_ERROR) //有数据到达{//对数据包进行解码if(DecodeIcmpResponse(IcmpRecvBuf,iReadDataLen,DecodeResult,ICMP_ECHO_REPLY,ICMP_TI MEOUT)){//到达目的地,退出循环if(DecodeResult.dwIPaddr.s_addr==destSockAddr.sin_addr.s_addr) bReachDestHost=true;//输出IP地址cout<<'\t'<<inet_ntoa(DecodeResult.dwIPaddr)<<endl;break;}}else if(WSAGetLastError()==WSAETIMEDOUT) //接收超时,输出*号{cout<<" *"<<'\t'<<"Request timed out."<<endl;break;}else{break;}}iTTL++; //递增TTL值}}5 设计总结通过这次课程设计,让我受益匪浅,使我掌握了网络通信编程的基本思想。

相关文档
最新文档