数据包捕获与解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
含义 适配器链表 适配器链表 存储错误信息的字符串
图 2-8 CAdpterDlg 类中函数调用流程图
CCapPackView,视图类,主要功能是实现接收从类 MainFrm 传递过来的消息和报 文,将数据包的头部及数据包的数据内容分别保存在 CArray 数组中,然后调用报文类
IPGram、 ARPGram、RARPGram 中的函数,将数据包简要信息显示于界面。表 3-3 为 CCapPackView 的成员函数及成员变量的说明。图 3-9 为其类中方法调用流程图。
1.1 课程设计的内容
(1)掌握数据包捕获和数据包分析的相关知识; (2)掌握 Ethreal 软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能; (3)设计一个简单的数据包捕获与分析软件。
1.2 课程设计的要求
(1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。
关键词 协议分析;Ethereal;数据包;Visual C++
1 引言
本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在 TCP/IP 各层的封 装过程,对于网络协议的研究具有重要的意义。Ethereal 是当前较为流行的图形用户接 口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它 通常被用来检查网络工作情况,或是用来发现网络程序的 bugs。通过 ethereal 对 TCP、 UDP、SMTP、telnet 和 FTP 等常用协议进行分析,非常有助于网络故障修复、分析以及 软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员 使用为网络协议分析搭建了一个良好的研究平台。
2.2WinPcap 简介
WinPcap 是一个在 Windows 操作系统下的免费、公开的用于直接访问网络的开发工 具包(编程 API)。大多数 Windows 网络应用程序都是通过 Winsock API(Windows 套接 口)这类高级编程接口访问网络的。这种方法允许在网络上进行简单的数据传送,因为 操作系统的 TCP/IP 协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提 供一个类似于读写文件的函数接口。然而,有时候“简便方法”并不能满足实际需要。有 些程序希望绕过 TCP/IP 协议栈,直接处理底层网络中的通信数据,它们需要对网络进 行底层进行直接访问,即在没有类似协议栈(TCP/IP 协议栈)的实体介入条件下对网络 进行原始访问。基于 Winsock API 编程,应用程序是通过调用操作系统提供的编程接口 访问 TCP/IP 协议栈实现网络通信的。基于 WinPcap 编程,网络程序实际上是绕开操作 系统的 TCP/IP 协议栈直接通过底层网络发送数据,因此网络程序可以实现一些更低级、 更灵活的功能[6]。
图 2-5 选择适配器对话框
2.5 程序设计思想
本程序中,主要有四种类型的类,主控类:CMainFrame,视图类:CCapPackView、 CProTreeView,对话框类:CAdpterDlg 以及报文类。图 3-6 为整体的类之间的调用流程 图。
图 2-6 总体类调用流程图
CMainFrame,是用于主控的类,它起到分区、处理消息、传递消息的功能。将用
流逝的秒数
delta
int
一秒内收到的字节数
图 2-9 CCapPackView 类中函数调用流程图
CProTreeView,视图类,主要功能是接收来自于 CapPackView 的消息,调用消息处
适配器链表
isStart
bool
是否开始抓包
isStop
bool
是否停止抓包
图 2-7 CMainFrame 类中方法调用流程图
CAdpterDlg:对话框类,此对话框分为两部分:树形控件和 list 控件。当对话框被触
发后,树形控件显示了本机所有的适配器列表,双击选中网卡,list 控件显示其名称、
成员函数
参数
功能
OnInitDialog()
无
初始化树形控件,设置 list 控件,
公有
读取适配器并将适配器列表显示
在树形控件中。当网卡绑定以后再
次打开此对话框,直接显示其信
息。
续表 2-2: OnClickAdpTree() 消息处理函数
NMHDR*pNMHDR, LRESULT* pResult
图 2-4 菜单栏
然后,打开 Sniffer.rc 文件,对工具栏进行修改。自做了一个工具栏图片 Toolbar1.bmp 来代替原来工程的 Toolbar.bmp,然后将多余的复制粘贴等工具按钮信息删除掉,回到
界面处,再对每个按钮图标进行 ID 设置。如图:
,从左向右依次是:
开始抓包、停止抓包、选择适配器、帮助图标按钮。
话框
OnFileStart()
无
消息处理函数
设置抓包状态,释放所有包,清 空内容,启动收包线程,开始捕获
包。
OnFileStop()
无
消息处理函数
停止抓包
OnUpdateFileStart( )
消息处理函数
CCmdUI* pCmdUI
当在捕获包时,禁用“抓包”按钮
OnUpdateFileStop() 消息处理函数
2.3 建立工程
在 VC++ 6.0 下创建一个单文档的 MFC 应用程序,工程名:Sniffer 如图 3-1->图 3-2-> 图 3-3。
图 2-1 建立工程
图 2-2 选中单文档
图 2-3 自动生成的类列表 到 http://www.winpcap.org/devel.htm 下载 WinPcap 4.0.2.zip,然后解压,解压缩就可 以 看 见 Includelib ; 在 "Project->Settings" 标 签 栏 中 选 择 "C/C++" , 在 "Preprocessor
户区分为两个视图,点击菜单里的按钮,触发打开适配器对话框或者开始抓包、停止抓
包的动作。图 3-7 为 CMainFrame 类中方法调用流程图。表 3-1 CMainFrame 类说明为
CMainFrame 函数成员的说明。
表 2-1 CMainFrame 类说明
CMainFrame 类
父类
CFrameWnd 类
显示所有抓到的包的简要信息
OnItemchanged() 消息处理函数
NMHDR* pNMHDR, 当点击列表中某行信息,将向
LRESULT* pResult
ProTreeView 发送消息,并传递报
文信息。
成员变量
类型
含义
index
int
序号
totalmem
int
收到的报文占用总字节数
time
int
CCmdUI* pCmdUI
当停止捕获包时,禁用“停止”按 钮
成员变量
类型
含义
*PackView
CCapPackView
显示所有抓到的包的简要信息
*ProTreeView
CProTreeView
显示选中的包的具体信息,用解 析树表达
*alldevs
pcap_if_t
适配器链表
*dev
pcap_if_t
成员函数
参数
功能
OnCreateClient()
LPCREATESTRUCT 将 用 户 区 分 为 左 右 两 个 视 图
lpcs, CCreateContext* ProTreeView、CapPackView
pContext
OnAdpChoose()
无
消息处理函数
为适配器对话框初始化值,即点 击选中适配器按钮弹出适配器对
表 2-3 CCapPackView 类说明
CCapPackView 类
父类
CListView 类
成员函数
参数
功能
OnInitialUpdate() 无 公有
设置 CapPackView 视图的视图 风格,设置其列信息。
OnPacketReceive() 消息处理函数
pcap_pkthdr*pkt_header, constu_char*pkt_data
2.4 进行界面的设计
工程建好了,下面进行界面的设计: 首先,对菜单栏进行修改,去掉原来单文档所自带的“文件”、“编辑”菜单选项,保 留“查看”和“帮助”,新建“文件”,下面有“开始抓包(ID_FILE_START)”、“停止抓包 (ID_FILE_STOP)”、“退出(ID_APP_EXIT)”三个菜单选项。再建“适配器”菜单,下 面有“选择适配器(ID_ADP_CHOOSE)”选项,并对每个新建的选项进行注释说明。如 图 3-4:
1.3 课程设计平台
Windows XP;Visual C++
2 用 Visual C++设计一个简单的数据包捕获和分析软件
2.1 Visual C++简介
Visual C++即 VC,微软公司出品的高级可视化计算机程序开发工具。他提 供了一套开发环境:Visual Studio,Visual Studio 本身包括一个文本编辑器、资源 编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及 一套联机文档,借助这套工具,用户可以随心所欲地开发出各种功能的应用软件 以及借助 OpenGL 和 DirectX 技术开发游戏软件。Visual C++可以识别 C/C++并编 译,支持 MFC 类库,并提供了一系列模板,常用的 MFC AppWizard(EXE/DLL),MFC ActiveXControlWizard,Win32Application,Win32ConsoleApplication,ATLCOMAppWi zard。这种可视化编程环境可以令程序员花更多精力在程序功能的实现上,而不是 底层的建设上,这就大大加快了程序开发速度和效率,这也是 Visual C++一个显著 的特点。利用 Visual C++编译出的程序空间小,运行快,比其他的编译工具编译出 的软件占据较多优势。现在常用的版本有 Visual C++ 6.0/.Net/2005[5]。
definitions"的输入框里添加"WPCAP";再选择"Link",在"Object/library modules"的输入 框里添加"wpcap.lib "。然后再设置 VC++环境变量:选择 Tools->options->Directories 的 include 里 面 加 入 下 载 的 winpcap 开 发 包 解 压 以 后 的 include 文 件 选 择 Tools->options->Directories 的 lib 里面加入下载的 winpcap 开发包解压以后的 lib 文件夹 [7]。
OnOK()
无
消息处理函数
OnCancel()
无
消息处理函数
成员变量
类型
*dev
pcap_if_t
*alldevs
pcap_if_t
errbuf
char
[PCAP_ERRBUF_SIZE]
当双击选中网卡时,找到选中的 网卡,设置 list 控件,并显示网 卡名称、描述等信息。 对选中的网卡进行判断,不可以 选虚拟网卡也不可不选。 关闭对话框
数据包捕获与解析课程设计报告
学生姓名:董耀杰 学 号:1030430330 指导教师:江珊珊
数据包捕获与分析
摘 要 本课程设计通过 Ethereal 捕捉实时网络数据包,并根据网络协议分析流程对数 据包在 TCP/IP 各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到 一个感性的层面,为网络协议分析提供技术手段。最后根据 Ethereal 的工作原理,用 Visual C+ + 编写一个简单的数据包捕获与分析软件。
Байду номын сангаас
描述、子网掩码、IP 地址等信息。点击确定按钮即绑定了此网卡,注意虚拟网卡是不能
被绑定的。表 3-2 为类 CAdpterDlg 的成员函数及成员变量的说明。CAdpterDlg 类中函
数调用流程图如图 3-8 所示。
表 2-2 CAdpterDlg 类说明
CAdpterDlg 类
父类
CDialog 类
最后,新建一个选择适配器的基本对话框,ID 标识为 IDD_ADP_DIALOG,双击此
对话框新建一个类:CAdpterDlg。在此基本对话框上拖入一个 Tree Contrl 控件和 List
Contrl 控件,对控件属性界面进行调整,打开类向导,将 Tree Contrl 成员变量设置为:
m_treeCtrl,List Contrl 成员变量设置为 m_listCtrl。如图 3-5:
图 2-8 CAdpterDlg 类中函数调用流程图
CCapPackView,视图类,主要功能是实现接收从类 MainFrm 传递过来的消息和报 文,将数据包的头部及数据包的数据内容分别保存在 CArray 数组中,然后调用报文类
IPGram、 ARPGram、RARPGram 中的函数,将数据包简要信息显示于界面。表 3-3 为 CCapPackView 的成员函数及成员变量的说明。图 3-9 为其类中方法调用流程图。
1.1 课程设计的内容
(1)掌握数据包捕获和数据包分析的相关知识; (2)掌握 Ethreal 软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能; (3)设计一个简单的数据包捕获与分析软件。
1.2 课程设计的要求
(1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。
关键词 协议分析;Ethereal;数据包;Visual C++
1 引言
本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在 TCP/IP 各层的封 装过程,对于网络协议的研究具有重要的意义。Ethereal 是当前较为流行的图形用户接 口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它 通常被用来检查网络工作情况,或是用来发现网络程序的 bugs。通过 ethereal 对 TCP、 UDP、SMTP、telnet 和 FTP 等常用协议进行分析,非常有助于网络故障修复、分析以及 软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员 使用为网络协议分析搭建了一个良好的研究平台。
2.2WinPcap 简介
WinPcap 是一个在 Windows 操作系统下的免费、公开的用于直接访问网络的开发工 具包(编程 API)。大多数 Windows 网络应用程序都是通过 Winsock API(Windows 套接 口)这类高级编程接口访问网络的。这种方法允许在网络上进行简单的数据传送,因为 操作系统的 TCP/IP 协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提 供一个类似于读写文件的函数接口。然而,有时候“简便方法”并不能满足实际需要。有 些程序希望绕过 TCP/IP 协议栈,直接处理底层网络中的通信数据,它们需要对网络进 行底层进行直接访问,即在没有类似协议栈(TCP/IP 协议栈)的实体介入条件下对网络 进行原始访问。基于 Winsock API 编程,应用程序是通过调用操作系统提供的编程接口 访问 TCP/IP 协议栈实现网络通信的。基于 WinPcap 编程,网络程序实际上是绕开操作 系统的 TCP/IP 协议栈直接通过底层网络发送数据,因此网络程序可以实现一些更低级、 更灵活的功能[6]。
图 2-5 选择适配器对话框
2.5 程序设计思想
本程序中,主要有四种类型的类,主控类:CMainFrame,视图类:CCapPackView、 CProTreeView,对话框类:CAdpterDlg 以及报文类。图 3-6 为整体的类之间的调用流程 图。
图 2-6 总体类调用流程图
CMainFrame,是用于主控的类,它起到分区、处理消息、传递消息的功能。将用
流逝的秒数
delta
int
一秒内收到的字节数
图 2-9 CCapPackView 类中函数调用流程图
CProTreeView,视图类,主要功能是接收来自于 CapPackView 的消息,调用消息处
适配器链表
isStart
bool
是否开始抓包
isStop
bool
是否停止抓包
图 2-7 CMainFrame 类中方法调用流程图
CAdpterDlg:对话框类,此对话框分为两部分:树形控件和 list 控件。当对话框被触
发后,树形控件显示了本机所有的适配器列表,双击选中网卡,list 控件显示其名称、
成员函数
参数
功能
OnInitDialog()
无
初始化树形控件,设置 list 控件,
公有
读取适配器并将适配器列表显示
在树形控件中。当网卡绑定以后再
次打开此对话框,直接显示其信
息。
续表 2-2: OnClickAdpTree() 消息处理函数
NMHDR*pNMHDR, LRESULT* pResult
图 2-4 菜单栏
然后,打开 Sniffer.rc 文件,对工具栏进行修改。自做了一个工具栏图片 Toolbar1.bmp 来代替原来工程的 Toolbar.bmp,然后将多余的复制粘贴等工具按钮信息删除掉,回到
界面处,再对每个按钮图标进行 ID 设置。如图:
,从左向右依次是:
开始抓包、停止抓包、选择适配器、帮助图标按钮。
话框
OnFileStart()
无
消息处理函数
设置抓包状态,释放所有包,清 空内容,启动收包线程,开始捕获
包。
OnFileStop()
无
消息处理函数
停止抓包
OnUpdateFileStart( )
消息处理函数
CCmdUI* pCmdUI
当在捕获包时,禁用“抓包”按钮
OnUpdateFileStop() 消息处理函数
2.3 建立工程
在 VC++ 6.0 下创建一个单文档的 MFC 应用程序,工程名:Sniffer 如图 3-1->图 3-2-> 图 3-3。
图 2-1 建立工程
图 2-2 选中单文档
图 2-3 自动生成的类列表 到 http://www.winpcap.org/devel.htm 下载 WinPcap 4.0.2.zip,然后解压,解压缩就可 以 看 见 Includelib ; 在 "Project->Settings" 标 签 栏 中 选 择 "C/C++" , 在 "Preprocessor
户区分为两个视图,点击菜单里的按钮,触发打开适配器对话框或者开始抓包、停止抓
包的动作。图 3-7 为 CMainFrame 类中方法调用流程图。表 3-1 CMainFrame 类说明为
CMainFrame 函数成员的说明。
表 2-1 CMainFrame 类说明
CMainFrame 类
父类
CFrameWnd 类
显示所有抓到的包的简要信息
OnItemchanged() 消息处理函数
NMHDR* pNMHDR, 当点击列表中某行信息,将向
LRESULT* pResult
ProTreeView 发送消息,并传递报
文信息。
成员变量
类型
含义
index
int
序号
totalmem
int
收到的报文占用总字节数
time
int
CCmdUI* pCmdUI
当停止捕获包时,禁用“停止”按 钮
成员变量
类型
含义
*PackView
CCapPackView
显示所有抓到的包的简要信息
*ProTreeView
CProTreeView
显示选中的包的具体信息,用解 析树表达
*alldevs
pcap_if_t
适配器链表
*dev
pcap_if_t
成员函数
参数
功能
OnCreateClient()
LPCREATESTRUCT 将 用 户 区 分 为 左 右 两 个 视 图
lpcs, CCreateContext* ProTreeView、CapPackView
pContext
OnAdpChoose()
无
消息处理函数
为适配器对话框初始化值,即点 击选中适配器按钮弹出适配器对
表 2-3 CCapPackView 类说明
CCapPackView 类
父类
CListView 类
成员函数
参数
功能
OnInitialUpdate() 无 公有
设置 CapPackView 视图的视图 风格,设置其列信息。
OnPacketReceive() 消息处理函数
pcap_pkthdr*pkt_header, constu_char*pkt_data
2.4 进行界面的设计
工程建好了,下面进行界面的设计: 首先,对菜单栏进行修改,去掉原来单文档所自带的“文件”、“编辑”菜单选项,保 留“查看”和“帮助”,新建“文件”,下面有“开始抓包(ID_FILE_START)”、“停止抓包 (ID_FILE_STOP)”、“退出(ID_APP_EXIT)”三个菜单选项。再建“适配器”菜单,下 面有“选择适配器(ID_ADP_CHOOSE)”选项,并对每个新建的选项进行注释说明。如 图 3-4:
1.3 课程设计平台
Windows XP;Visual C++
2 用 Visual C++设计一个简单的数据包捕获和分析软件
2.1 Visual C++简介
Visual C++即 VC,微软公司出品的高级可视化计算机程序开发工具。他提 供了一套开发环境:Visual Studio,Visual Studio 本身包括一个文本编辑器、资源 编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及 一套联机文档,借助这套工具,用户可以随心所欲地开发出各种功能的应用软件 以及借助 OpenGL 和 DirectX 技术开发游戏软件。Visual C++可以识别 C/C++并编 译,支持 MFC 类库,并提供了一系列模板,常用的 MFC AppWizard(EXE/DLL),MFC ActiveXControlWizard,Win32Application,Win32ConsoleApplication,ATLCOMAppWi zard。这种可视化编程环境可以令程序员花更多精力在程序功能的实现上,而不是 底层的建设上,这就大大加快了程序开发速度和效率,这也是 Visual C++一个显著 的特点。利用 Visual C++编译出的程序空间小,运行快,比其他的编译工具编译出 的软件占据较多优势。现在常用的版本有 Visual C++ 6.0/.Net/2005[5]。
definitions"的输入框里添加"WPCAP";再选择"Link",在"Object/library modules"的输入 框里添加"wpcap.lib "。然后再设置 VC++环境变量:选择 Tools->options->Directories 的 include 里 面 加 入 下 载 的 winpcap 开 发 包 解 压 以 后 的 include 文 件 选 择 Tools->options->Directories 的 lib 里面加入下载的 winpcap 开发包解压以后的 lib 文件夹 [7]。
OnOK()
无
消息处理函数
OnCancel()
无
消息处理函数
成员变量
类型
*dev
pcap_if_t
*alldevs
pcap_if_t
errbuf
char
[PCAP_ERRBUF_SIZE]
当双击选中网卡时,找到选中的 网卡,设置 list 控件,并显示网 卡名称、描述等信息。 对选中的网卡进行判断,不可以 选虚拟网卡也不可不选。 关闭对话框
数据包捕获与解析课程设计报告
学生姓名:董耀杰 学 号:1030430330 指导教师:江珊珊
数据包捕获与分析
摘 要 本课程设计通过 Ethereal 捕捉实时网络数据包,并根据网络协议分析流程对数 据包在 TCP/IP 各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到 一个感性的层面,为网络协议分析提供技术手段。最后根据 Ethereal 的工作原理,用 Visual C+ + 编写一个简单的数据包捕获与分析软件。
Байду номын сангаас
描述、子网掩码、IP 地址等信息。点击确定按钮即绑定了此网卡,注意虚拟网卡是不能
被绑定的。表 3-2 为类 CAdpterDlg 的成员函数及成员变量的说明。CAdpterDlg 类中函
数调用流程图如图 3-8 所示。
表 2-2 CAdpterDlg 类说明
CAdpterDlg 类
父类
CDialog 类
最后,新建一个选择适配器的基本对话框,ID 标识为 IDD_ADP_DIALOG,双击此
对话框新建一个类:CAdpterDlg。在此基本对话框上拖入一个 Tree Contrl 控件和 List
Contrl 控件,对控件属性界面进行调整,打开类向导,将 Tree Contrl 成员变量设置为:
m_treeCtrl,List Contrl 成员变量设置为 m_listCtrl。如图 3-5: