在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编程的基本原理、程序的总体框架,绘制每个函数的详细设计流程图。
1.3 开发环境标准PC机,Windows操作系统,vs2008集成开发环境,Winpcap函数库。
2系统设计的基本概念与原理2.1 IP协议基本知识(1) IP协议介绍IP是英文Internet Protocol(网络互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。
在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。
任何厂家生产的计算机系统,只要遵守 IP协议就可以与因特网互连互通。
(2) IP 协议的网络互连实现各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。
IP 协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP 数据包”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。
(3) IP 数据报TCP/IP 协议定义了一个在因特网上传输的包,称为IP 数据报(IPDatagram)。
这是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式如图2.1所示:图2.1 IP 数据报一般格式IP 数据报的详细格式如图2.2所示: 0 3 7 15 31版本 首部长度 服务类型总长度 标识标志 片偏移 生存时间 协议头校验和 源IP 地址目的IP 地址选项填充域数据部分图2.2 IP 数据报的详细格式 IP 数据报固定部分各字段含义:(1)版本 占4位,指IP 协议的版本。
通信双方使用的IP 协议版本必须一致。
目前广泛使用的IP 协议版本号为4(即IPv4)。
关于IPv6,目前还处于草案阶段。
数据报的数据区 数据报首部(2)首部长度占4位,可表示的最大十进制数值是15。
请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP 的首部长度为1111时(即十进制的15),首部长度就达到60字节。
当IP 分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。
首部长度限制为60字节的缺点是有时可能不够用。
但这样做是希望用户尽量减少开销。
最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务占8位,用来获得更好的服务。
这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。
1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。
只有在使用区分服务时,这个字段才起作用。
(4)总长度总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。
当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification) 占16位。
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。
当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位,但目前只有2位有意义。
标志字段中的最低位记为MF(More Fragment)。
MF=1即表示后面“还有分片”的数据报。
MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。
只有当DF=0时才允许分片。
(7)片偏移占13位。
片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。
也就是说,相对用户数据字段的起点,该片从何处开始。
片偏移以8个字节为偏移单位。
这就是说,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。
由发出数据报的源点设置这个字段。
其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。
最初的设计是以秒作为TTL的单位。
每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。
若数据报在路由器消耗的时间小于1秒,就把TTL值减1。
当TTL值为0时,就丢弃这个数据报。
(9)协议占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和占16位。
这个字段只检验数据报的首部,但不包括数据部分。
这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。
不检验数据部分可减少计算的工作量。
(11)源地址占32位。
(12)目的地址占32位。
IP数据报可选部分字段含义:IP首部的可变部分就是一个可选字段。
选项字段用来支持排错、测量以及安全等措施,内容很丰富。
此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
某些选项项目只需要1个字节,它只包括1个字节的选项代码。
但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
2.2 TCP协议基本知识(1)TCP协议介绍TCP:Transmission Control Protocol (传输控制协议)TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。
在OSI/RM模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
(2)TCP协议的作用在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的运输层。
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。
之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和稍待确认机制。
在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。
在拥塞控制上,采用慢启动算法。
(3) TCP报文段格式两台机器上的TCP软件之间传送的数据单元称为报文段。
两台机器通过报文段的交互来建立连接、传送数据、发送确认、通告窗口大小及关闭连接。
每个报文段分为两个部分:首部和数据。
TCP报文格式如图2.3:0 4 10 16 24 31源端口目的端口序号确认序号首部长度保留代码比特窗口校验和紧急指针选项填充数据图2.3 TCP报文段详细格式TCP报文字段说明:源端口号(16位),标识主机上发起传送的应用程序;目的端口(16位)标识主机上传送要到达的应用程序。
序号:占32比特。
用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
确认序号:占32比特。
只有ACK标志为1时,确认号字段才有效。
它包含目标端所期望收到源端的下一个数据字节。
首部长度:占4比特。
给出头部占32比特的数目。
没有任何选项字段的TCP 头部长度为20字节;最多可以有60字节的TCP头部。
预留:由跟在数据偏移字段后的6位构成,预留位通常为0.代码比特(U、A、P、R、S、F):占6比特。
各比特的含义如下:URG:紧急指针(urgent pointer)有效。
VS2008下计算器的MFC编程实现..
VS2008下计算器的MFC编程实现简单的计算器编程,完全在VS2008下实现,主要用于熟悉VS2008的功能。
谨以此分享给和我一样初学MFC的朋友们。
STEP1:页面设计1.新建工程首先打开Visual Studio2008,选择MFC应用程序,设定好路径和工程名(这里我设置工程名为为“Calculator”)。
这里要注意的是在创建向导步骤1的时候,我们选择“基本对话框”,其他选项默认即可。
之后我们可以点击完成便看到以下界面:此时我们把当前页面上原配的控件按Delete全部清除(如下图)2.添加控件接着我们按照MFC自带的控件选项进行我们本次计算器的控件添加。
点击右侧的工具栏按钮(以下是控件)我们在原先清空的界面中依次用上图控件画出一个基本的计算器页面(如下图)。
影响用户的心情。
3.修改空间ID和Caption上图各控件类型如下:Edit ControlButtonGroup Box:选择其中一个GroupBox,右键单击,选择[属性]。
在右边显示属性对话框。
每个控件“属性”都有属于它自己的ID,默认的Group Box的ID为IDC_STATIC,而且Cap当然我们为了“顾名思义”,对控件ID进行修改成我们容易辨认的(也可以不改),添加完控件并修改ID。
4个Group Box的ID分别修改为IDC_STATIC_FRAME ,IDC_STATIC_IN, IDC_STATIC_RESULT, IDC_STATIC_BUTTON 控件Edit Control和Button也按相同的办法处理。
ID设置完成可以在“Resourse.h”中查看。
完成修改ID后,就需给控件添加消息响应了。
在属性对话框的上方点击闪电“”图标,添加控件事件。
如对于按钮“”,点击“”点击下拉键头,添加控件事件,页面自动切换到代码的编辑页面,如“添加OnBnClickedButton5”MFC默认下了的响应信息都为On_开头。
基于Winpcap的网络嗅探器的设计与实现
性 与可靠 性 日益 受到人们 的重 视 。网络 嗅探 器 可 以有效完 成对 网络 上 传输 数 据 包 的捕 获 , 而收 从 集 与分析 网络 信息 , 网络 流 量监 控 和 故 障 检测 是
所 必 不 可 少 的 工 具 之 一 , 网 络 管 理 与 网 络 安 全 对 具 有重要 的意义 。
Ab t a t Ai n t h e u t wbe fn t r n g me t t ep p r rp ss an t o k s i e t n c p sr c : mi g a es c r y p lmso ewo k ma a e n , a e o o e ew r nf r h Wi p a t i h p wi
a e e o me tp a om n s a sd v l p n lt r a d Viu lC f a e eo me t o l ip a n iu l .T e fn a n a p i cpe o s d v l p n o n c p a d v s a t W C h d me t r i l f u l n
De i n a d I p e e t to f sg n m lm n a i n o
Newo k S i e s d o i p a t r n f r Ba e n W n c p
C HENG 。 n L n I Fa g
( col f o p t cec , agh Istt o eh o g , agh u e 4 5 0 ) Sh o o m ue S i e Hun sin tue f c nl y Hun si b i 3 0 3 C r n i T o H
随着 I e e 的迅 猛发展 , nr t tn 网络 已 1益成 为 工 3
基于Winpcap的网口测试软件开发
基于Winpcap的网口测试软件开发摘要:网口通信常用于通信系统间收发数据,由于系统间的差异,需要在链路层进行数据的发送和接收。
本文利用Winpcap在Windows系统上开发了一个在链路层进行通信的软件,使用MFC完成界面设计,使用多线程完成同时收发的功能,具有一定的工程实用意义。
关键词:网口通信Winpcap MFC 多线程1.引言网口通信常用于各种通信系统间收发数据。
Windows系统中提供了基于TCP/IP协议的网口通信API,利用API能够收发IP数据包。
但是在Windows系统与其他系统进行网口通信时,无法通过IP进行数据的收发,需要对链路层数据进行处理。
因此,在Windows系统下开发一种能于链路层进行数据收发的软件具有重要意义。
本文在Microsoft Visual Studio 2010环境下使用MFC开发了一种基于Winpcap的网口测试软件,能够在Windows下与其他系统进行网口通信,具有一定的工程实用价值。
1.Winpcap技术1.WinpcapWinpcap是应用于Windows平台下对网络数据包捕获功能的一个开源、公共、免费的网络访问系统。
其为Windows环境下应用程序提供了直接访问网络底层的能力,常用于Windows系统下的直接网络编程[1]。
Winpcap由内核态下的NPFDevice Driver、用户态下的动态链接库peaket.dll和Wpcap.dll三部分组成,其结构如图 1所示。
图1Winpcap结构Winpcap通过3个模块提供以下功能:1)捕获原始数据包,包括在共享网络上各主机发送、接收以及相互之间交换数据包;2)在数据包发往应用程序前,按照自定义的规则将某些特殊数据包过滤掉;3)在网络上发送原始数据包;4)收集网络通信过程中的统计信息。
1.2.数据接收和发送由于本文需要在链路层进行网口数据的收发,因此本文使用Winpcap中的1、3功能,具体实现方法如下:1)使用Winpcap中pcap_findalldevs_ex函数查找计算机中所有网卡;2)使用Winpcap中pcap_open函数打开需要使用的网卡;3)使用pcap_sendpacket和pcap_next_ex函数分别实现网口的数据发送及数据接收功能。
基于windows平台的网络嗅探器系统的设计与实现
・ 1 7 9 ・
基于 wi n d o ws 平台 的网络嗅探红岩 彭 斌 ( 吉林 建筑大学电气与计算机 学院 , 吉林 长春 1 3 0 0 2 1 ) 摘 要: 网络嗅探和分析技 术是很 多网络 安全软件 实现 的基础 , 也是设计 网络分析软件 的基础 , 现存在的一 些技术如 防火墙 、 协议分 析 等软件 的实现 的前提都是 以数据 包的嗅探捕获 , 所以研 究相 关的数据 包嗅探 和分析技 术对保证 网络 的安全运行是十分必要的。该项 目 实现 了数据 包嗅探 分析 器。程序 中网络监 听的 目标 T C P B P协议 中的 A R P 、 I P 、 T C P 、 U D P四种协议 , 基 于 Wi n d o w s操作 系统 为平 台, 在数 据链路层捕 获原始数据 包, 并从 中提取 出网络通信协议及数据 包的数据。 关键词 : 数据 包; 网络 监 听 ; 嗅探 捕 获 ; 网络 通信 协议 随着计算机技术的迅速发展 , 网络的应用 的迅速普及 , 网络已 日 益 成 为生 活 中必不 可少 的一部 分 。由于计算 机 网络具 有 连接形 式 多样性 、 f o r ( i n t i =0 ; i <m _ P a c k e t Mo n i t o r s . L e n g t h ; i + + 】 { 互联性 、 开放性 、 等特点 , 而且多数都采用了 T C P / I P 协议 , 而T C P / I P在 P a c k e t Mo n i t o r s 0 ]=n e w P a c k e t Mo n i t o r ( h o s t s [ i  ̄ 设计上要求运行效率 , 而且要建立在互相信任 的基础上, 其本身就是造 成网络不安全的主要 因素 ,因此这也是 T C P  ̄ P协议在设计上的缺陷 , ) P a c k e t s=n e w A r r a y L i s t 0 ; 从而导致针对网络系统的攻击事件频繁发生, 当我们在享受网络带来的 } 方便 、 快捷 、 的同时, 也应该认识到网络安全所面临的严峻考验。与此 同 P r i v a t e v o i d P a c k e t Mo n i t o r mF o r m C l o s i n g ( o b j e c t s e n d e r , C a n c e l E v e n t A r g s e ) ( 时, 网络的安全胜与可靠性 日益受到人们越来越高的重视 , 安全 l 生 指的 O n T o o l B a r C l i c k ( t h i s , n e w T o o l B a r B u t t o n C l i e k E v e n t A r g s ( S t o p B u t t o n ) ) ; 1 是网络上的信息不被更改、 泄露、 和破坏。网络数据包捕获、 监听与分析 p u b l i c v o i d On T o o l B a r C l i c k ( o b j e c t s e n d e r , T o o l B a r B u t t o n C l i c k E v e n t A r g s 曲{ 技术是网络安全维护的一个基础技术 , 同时也是网络入侵的核心手段。 i f ( e . B u t t o n= =S t o p B u t t o n ) f / / 停 止监听所有的端 口 f o r ( i n t i=0 ; i<m_ P a e k e t Mo n i t o r s . L e n g t h ;i + + ) { 所 以研究有关数据包捕获和分析技术对保证 网络的健康 、安全运行是 非 常 意义 的 。 e d=f a l s e ; 1技 术背景 S t a t u s B a r . T e x t =” 停止嗅探 ” +s t r i n g . F o r r l f l 卅 数据包总量 1 . 1 嗅探原理。嗅探是一种常用的收集有用数据的方法 , 嗅探器是 f 0 l 字节数 : 利用计算机 的网络接 口截获 目的地为其他计算机 的数据报文的一种工 … 1 b y t e s ” , m_ P a c k e t s . C o u n t , m_ P a c k e t s S i z e ) ; ) e l s e i f ( e B u t t o n= =S t a r t B u t t o n ) { / / 开始监听所有的端口 具。嗅探器的工作原理总共可以分为三大类 : a 基于中间人攻击的嗅探 f o r ( i n t i=0 ; i<m _ P a e k e t Mo n i t o r s . L e n g t h ; i + + 】{ 原理 ; b . 基于A R P欺骗的网络嗅探原理 ; c . 基于网卡混杂模式的嗅探原 r y f 理: 网卡一般可以分为四种接收模式 : 直接方式 : 在这种模式下 , 只有 P a c k e t M o n i t o r s [ i ] . S t a r t 0 ; ) c a t c h( E x c e p t i o n e x ) ( 目的网卡才能接收该数据 ; b . 混杂模式 : 在这种模式下的网卡能够接收 Me s s a g e B o x . S h o w ( t h i s , ” 界面出现—个错误 ”+ 切通过它的数据 . c . 广播方式 : 该模式下的网卡能够接收网络 中的广 Me n t a l i s . o r g P a c k e t M o n i t o r  ̄ i ] . I R T o S t i r n g 0 +” n ’ +e x . Me s s a g e+’ T ’ , ” P a c k e t M o n i t o r ” , M e s s a g e B o x B u t t o n  ̄ O I < , Me s s a g e B o x l c o n . E r r o r ) ; 播信 息; d . 组播方式 : 设置在该模式下的网卡能够接收组播数据。 】 1 . 2 捕获机制。 网络数据包捕获技术是从 网络上捕获特定的或所有 的网络数据包信息, 供其他网络 安全系统使用。 不同的网络有不 同的 J 捕获技术, 不同的操作系统其捕获机理也不尽不同。 操作系统提供的捕 S t a t u s B a r . T e x t :” 检测所有端口 ” ; 获机制主要有以下 三种 : a . S O C K _ P AC K E T类型套接 口; b .数据链路提 1 e l s e i f ( e . B u t t o n= =C l e a r B u t t o n ) ( / / 清除列表 P a c k e t L i s t I t e ms . C l e a r 0 ; 供者接 口( ( D a t a l i n k P r o v i d e r I n t e r f a c e , D L P I ) ) ; c 伯 克利数据包过滤
开发基于winPcap的嗅探器.
网络安全课程设计报告(2015-2016 第一学期)题目开发基于winPcap的嗅探器专业学号姓名指导教师日期评分分细评分项优秀良好中等差遵守机房规章制度实验原理分析与设计课题功能实现情况设计验收与答辩课程设计报告书写简短评语教师签名:年月日评分等级备注开发基于winPcap的嗅探器一、实验目的开发一个winpcap的嗅探器,用它来捕获所有流经网卡的数据包,并进行分析。
二、实验环境操作系统:Windows 2000/XP编程环境:Visual c++6.0附加库:Winpcap三、实验内容和要求内容:所开发的程序可以输出本机所有网卡的信息和捕获流经网卡的数据包并能够过滤出IP、TCP、UDP、ICM P等数据包要求:掌握基于WinPcap的网络编程模式。
理解并能应用WinPcap设计并实现网络数据包的捕获与解析。
四、实验原理和步骤原理:我们所要做的嗅探器是一种常用的网络数据收集软件,它是在广播式网络环境下利用计算机网络接口截获目的地为其它计算机的数据报文的一种工具。
在以太网中,信息是以明文的形式在网络上传输 ,当将网络适配器设置为混杂模式时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。
IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。
运用这一原理使信息捕获系统能够拦截我们所要的信息,这是捕获数据包的物理基础。
首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分运行在操作系统核心内部,直接与网络接口驱动交互。
这个部分是系统依赖的,在Winpcap的解决方案里它被认为是一个设备驱动,称作NPF(Netgroup PacketFilter)。
Winpcap提供了两个不同的库:Packet.dll和Wpcap.dll。
上机1:基于WinPcap的网络嗅探器设计与实现
上机1:基于WinPcap的网络嗅探器设计与实现上机1:基于WinPcap的网络嗅探器设计1、目的与要求掌握基于WinPcap的网络编程模式。
理解并能应用WinPcap设计并实现网络数据包的捕获与解析。
2、设备与上机环境连网PC机(至少一台)。
计算机硬件要求:Intel Pentium5 处理器、256MB以上内存,Ethernet网卡,网线若干。
计算机软件要求:MS Windows 9x/2000/XP操作系统,TCP/IP协议,WinPcap430,Visualc++6.0/.net系统。
3、上机内容与步骤:在程序设计之前,请参照提供的软件安装WinPcap。
之后,按照如下步骤操作:步骤1:在VC++ 6.0下创建一个DOS命令行程序,工程名:自己的学号-PacketDumpint 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-9A34 B7DAD998}\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 inpcap_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->description)printf(" (%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 promiscuous)1000, // read timeouterrbuf // error buffer)) == NULL){fprintf(stderr,"\nError openingadapter\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 promiscuous)1000, // read timeouterrbuf // error buffer)) == NULL){fprintf(stderr,"\nError openingadapter\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:为编译器指定包含文件和库文件搜索目录。
上机:基于WinPcap的网络嗅探器设计与实现
}
ﻩﻩ
ﻩﻩprintf("Enterthe interface number(1-%d):",i);
ﻩscanf("%d",&inum);
ﻩ
ﻩﻩif (inum <1|| inum>i)
ﻩ{
ﻩprintf("\nInterfacenumber outofrange.\n");
ﻩ{
fprintf(stderr,"Error inpcap_findalldevs_ex: %s\n",errbuf);
ﻩﻩexit(1);
ﻩﻩ}
ﻩ
ﻩ/* Printthe list*/
for(d=alldevs;d;d=d->next)
ﻩ{
printf("%d.%s\n",++i,d->name);
ﻩ/*Free thedevicelist*/
ﻩﻩpcap_freealldevs(alldevs);
ﻩﻩreturn -1;
}
ﻩ
/* Jumptothe selectedadapter*/
ﻩfor(d=alldevs, i=0;i<inum-1 ;d=d->next, i++);
ﻩ/*Opentheadapter */
ﻩﻩﻩreturn-1;
ﻩ}
ﻩ}
else
ﻩ{
ﻩﻩ/*Do notcheck fortheswitchtype ('-s') */
ﻩif((fp=pcap_open_live(argv[2],// name ofthe device
ﻩﻩ65536,ﻩﻩﻩﻩﻩ//portion of the packet tocapture.
基于Winpcap嗅探器技术分析与实现
网 卡是 网 络 中 节 点 主 机 的关 键 硬 件 设 备 。 对 数 据 的
心 数 据 结 构 设 计 ,函 数 及 Wi n p c a p包获 取 流 程 ,并 最后 给 出了 实验 结果 。
关 键 词 :嗅探 器 ; 网络 安 全 ;数 据 结 构 ;动 态链 接 库 ;函数
随着计算 机技术 和 I n t e r n e t 网 络 技 术 在 生 产 和 生 活 是 否 接 收处 理数 据 ,如 果 认 为 应 该 处 理 ,则 网 卡 就 会 产
可 以通 过 嗅探 器 分 析 网络 流 量 ,找 出 网络 阻 塞 的来 源 。
模 式 :只有 匹配 的 目的 网卡 才 能 接 收 数 据 信 息 。 混 杂 模 式 :网 卡能 够 可 以接 收一 切 通 过 它 的数 据 信 息 。
为 实 现 接 收 网 络 中经 过 网卡 的所 有 数 据 ,需 要 把 网
温 乃 宁 ,龚 尚福
( 西 安科 技大 学 计算 机学 院 ,陕西 西安 7 1 0 0 5 4 )
摘 要 :嗅探 器技 术在 网络 安 全技 术 中 处 于 非 常 重 要 的 作 用 ,直 接 关 系到 网络 中数 据 传 输 的安 全 性 和 可 靠 性 。 本 文 分析 了嗅探 器 的概 念 和 工 作 原 理 、Wi n p c a p嗅探 器 的 功 能 和 组 成 , 阐述 了 Wi n p c a p嗅 探 器 的 核
基于WinPcap 的网络嗅探器设计与实现
基于WinPcap 的网络嗅探器设计与实现作者:赵钢来源:《电脑知识与技术》2013年第15期摘要:针对安全问题在网络管理中的日益突出,基于Winpcap开发平台,使用Visual C + +作为开发工具,设计并开发了一个网络嗅探器。
该文设计了一个GUI程序,实现IP、TCP、UDP数据包捕获和分析。
同时分析了网络嗅探器的基本工作原理,并阐述了应用捕获数据包流,根据Winpcap关键功能给出了其具体实现。
结果表明,该网络嗅探器结构简单,捕获数据快速,对网络安全管理具有重要意义。
关键词:WinPcap;MFC;嗅探器;计算机网络中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)15-3506-031 嗅探协议原理1.1 IP协议IP是英文Internet Protocol(网络互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。
在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。
任何厂家生产的计算机系统,只要遵守 IP协议就可以与因特网互连互通。
1.2 TCP协议TCP:Transmission Control Protocol (传输控制协议)TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。
在OSI/RM模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
1.3 UDP协议UDP的全称是用户数据报协议,在网络中该协议用于处理数据包。
它处在OSI模型中的第四层,即传输层,它处在TCP协议的更高一层。
UDP不提供数据报分组、装配,不能将退回的数据包进行排序。
也就是说,在消息发送后,不知道是否它是安全完整无损地运到了。
UDP是用来支持那些需要相互传递数据的计算机网络应用程序。
许多系统,包括网络视频会议系统,客户端/服务器模式的网络应用程序,都需要使用UDP协议。
基于WinPcap的网络嗅探器设计
结课论文题目名称:端口扫描程序的设计和实现院系名称:计算机学院班级:网络124学号:201200824426学生姓名:张继杰授课教师:孙飞显2014 年12月15目录1 引言 (3)1.1 课题的背景及意义 (3)1.2 端口扫描现状 (3)2 系统设计 (3)2.1 系统主要目标 (3)2.2 开发环境及工具 (4)2.3 功能模块与系统结构 (4)3 系统功能程序设计 (5)3.1、TCP端口扫描的工作原理: (5)3.2 TCP端口扫描的关键问题: (6)3.3TCP端口扫描程序代码分析 (7)4 设计步骤与实现 (7)4.1使用vc++6.0创建一个工程 (7)4.2 设计程序对话框 (10)4.3在的初始化对话框函数OnInitDialog()中添加列表控件的初始化: (11)4.4TCP connect() 扫描 (13)4.4UDP扫描: (14)4.41UDP相关代码截图: (15)5运行结果 (16)结论 (18)参考文献 (18)摘要计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。
端口扫描技术是发现安全问题的重要手段之一。
本程序是在Windows系统中使用C语言用MFC完成的一个端口扫描程序。
此程序主要完成了TCP connect()扫描和UDP扫描功能。
TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。
能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。
此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。
而对于UDP扫描只支持单线程,速度较慢。
扫描结果以列表的形式直观地展现出来。
关键词:端口扫描、TCP、UDP扫描1引言1.1 课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。
入侵者们是如何找到,并打开它们的城门呢?这些城门究竟通向何处?在网络中,把这些城堡的“城门”称之为计算机的“端口”。
