篇一使用网络协议分析器捕捉和分析协议数据包
广州大学学生实验报告
开课学院及实验室计算机科学与工程实验电子楼518室 2013年 12月 11日
篇二数据包捕获与解析
数据包捕获与解析课程设计报告
学生姓名董耀杰
学号 1030430330
指导教师江珊珊
数据包捕获与分析
摘要 本课程设计通过Ethereal捕捉实时网络数据包并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析让网络研究人员对数据包的认识上升到一个感性的层面 为网络协议分析提供技术手段。最后根据Ethereal的工作原理用Visual C编写一个简单的数据
1
包捕获与分析软件。
关键词 协议分析 Ethereal数据包 Visual C
1引言
本课程设计通过技术手段捕获数据包并加以分析追踪数据包在TCP/IP各层的封装过程对于网络协议的研究具有重要的意义。 Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和F TP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。 它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。
1.1课程设计的内容
(1)掌握数据包捕获和数据包分析的相关知识
(2)掌握Ethreal软件的安装、启动并熟悉用它进行局域网数据捕获和分析的功能
(3)设计一个简单的数据包捕获与分析软件。
1.2课程设计的要求
(1)按要求编写课程设计报告书能正确阐述设计结果。
(2)通过课程设计培养学生严谨的科学态度认真的工作作风和团队协作精神。
2
(3)学会文献检索的基本方法和综合运用文献的能力。
(4)在老师的指导下要求每个学生独立完成课程设计的全部内容。
1.3课程设计平台
Windows XP Visual C
2用Visual C设计一个简单的数据包捕获和分析软件
2.1 Visual C++简介
Visua l C即VC微软公司出品的高级可视化计算机程序开发工具。他提供了一套开发环境Visual StudioVisualStudio本身包括一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具 以及一套联机文档借助这套工具用户可以随心所欲地开发出各种功能的应用软件以及借助OpenGL和DirectX技术开发游戏软件。 Visual C++可以识别C/C++并编译支持MFC类库 并提供了一系列模板 常用的 MFCAppWizard(EXE/DLL),MFC
ActiveXControlWiza rd,Win32Applicatio n,Win32 Conso leApplic atio n,ATL COMAppWiza rd。这种可视化编程环境可以令程序员花更多精力在程序功能的实现上而不是底层的建设上这就大大加快了程序开发速度和效率这也是Visua lC++一个显著的特点。利用Visual C++编译出的程序空间小
3
运行快 比其他的编译工具编译出的软件占据较多优势。现在常用的版本有Visual C++6.0/.Net/2005[5] 。
2.2 WinP cap简介
WinP cap是一个在Windows操作系统下的免费、公开的用于直接访问网络的开发工具包编程AP I 。大多数Windows网络应用程序都是通过Winsock API Windows套接口这类高级编程接口访问网络的。这种方法允许在网络上进行简单的数据传送 因为操作系统的TCP/IP协议栈实现软件会处理底层细节协议操作、流程重组等等并提供一个类似于读写文件的函数接口。然而有时候“简便方法”并不能满足实际需要。有些程序希望绕过TCP/IP协议栈直接处理底层网络中的通信数据它们需要对网络进行底层进行直接访问 即在没有类似协议栈TCP/IP协议栈的实体介入条件下对网络进行原始访问。基于Winsock API编程应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。基于WinPcap编程 网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据 因此网络程序可以实现一些更低级、更灵活的功能[6] 。
2.3建立工程
在VC++ 6.0下创建一个单文档的MF C应用程序工程名 S niffe r如图3-1-图3-2-图3-3。
4
图2-1建立工程
图2-2选中单文档
图2-3自动生成的类列表
到/retype/zoom/1c7aa27daf1ffc4ffe47ac5c?pn=5&x=0&y=0&raww=314&rawh=96&o=png_6_0_0_309_562_353_108_892.979_1262.879&type=pic&aimh=96&md5s um=34bf189407bd236d6375965a901 fdf1b&sign=5f7235a9b9&zoom=&png=17732-19188&jpg=0-0”target=“_blank”>点此查看
图2-4菜单栏
然后打开S niffe r.rc文件对工具栏进行修改。 自做了一个工具栏图片 Toolbar1.bmp来代替原来工程的Toolbar.bmp然后将多余的复制粘贴等工具按钮信息删除掉 回到界面处再对每个按钮图标进行ID设置。如图
开始抓包、停止抓包、选择适配器、帮助图标按钮。
最后新建一个选择适配器的基本对话框 ID标识为IDD_ADP_DIALOG 双击此对话框新建一个类CAdpterDlg。在此基本对话框上拖入一个Tree Contrl控件和List Co ntrl控件对控件属性界面进行调整打开类向导将Tree Contrl成员变量设置为 m_treeCtrl List Contrl成员变量设置为m_listC trl。如图3-5 从左向右依次是
篇三 F TP协议解析与实现[1]
5
F TP协议解析与实现
关键词:FTP、协议解析、 visual C++
简述
在学习F TP协议偶有感悟于是想起了写一篇文章来总结一下自己学习的东西。同时也想与读者共同分享自己的劳动成果也算是抛砖引玉吧。错误和不当之处欢迎指正。联系方式 lih ua lo v eyo u 1983@163.c o m。本文主要对程序员关心的一些技术进行了总结。并结合一个实例来进一步说明。本文涉及
内容主要是F TP原理、 VC编程、 So cket等。 正文
一、 F TP通信原理简述
1.1 FTP简介
F TP是基于TC P/IP协议的一个应用协议。主要实现在不同的计算机之间的数据共享。F TP采用的是 模式。客户既可以下载文件也可以上传文件。当然 F TP给用户一定的权限。用户只能在权限下使用。 目前 TP的服务器种类很多比如常用的SERV-U,客户端程序也很多比如 uteF TP。WIND OWS也提供了一个F TP客户程序。它们都根据相同的协议标准来设计的具体协议内容可参考FC文档。
SERV-U工作界面windows提供的客户端
6
1.2 FTP工作原理
F TP工作原理与其它的应用协议有些不同。它是用两个端口进行通信的。一个端口用于命令交互。这个端口在用户连接之后一直保持而另一个端口只是在数据传时打开比如上传文件下载文件获取服务端文件列表在数据传输时有两种不同的模式一是用户开通这个数据端口这种模式叫做主动模式二是服务器提供一个接口这个模式叫被动模式。
F TP原理图
1.3用户登录
F TP服务器提供了用户的访问权限有的服务器可以匿名登录有的服务器要求用户使用密码登录。在每一个与登录有关的命令时服务器都会有一个返回信息。
下面显示了一个登录过程
1.4数据传输
在F TP中可以定义数据的传输格式 比如二进制进行图象和应用程序传输这种格式。下面是一个传输过程
二、 F TP命令
在WINDOWS中提供的命令不是F TP的标准命令。有些命令是许多命令的合集。而F TP标准命令每发送一个服务器就会做出一个相应的动作并把认证信息发送给用户。
7
具体的命令可以参照有关的资料
三、实例
在这里我们用一个F TP客户端来说明以上的知识。这里面主要是一个封装的类。
C F TP C lie nt这个类实现的文件的上传与下载并能获得服务端文件的信息。
1.1 CFTPClient类class CFTPClient
{
//成员变量private:
CSocket*m_pSocket;
CArchive*m_pRxarch;
CArchive*m_pTxarch;
CSocketFile*m_psfSokFile;
CString m_strMsg;//服务器发回的消息
CString m_fc;
C ftpclientD lg *m_pWnd; //用于对窗口的操作
CByteArray m_btBuf;
//成员函数p ublic:
CF TPClient(void);
8
~CF TP Client(void);
//发送命令到服务器
BOOL FtpCommand(CString strCommand);
//登录到F TP服务器,这个函数只支持在没有防火墙的时候
BOOL LogOnToserver ( CString strHostname , intnHostPort ,CString strUserName,CString strPasswo rd);
//退出服务器void LogOffServer();
//上传下载文件
BOOL MoveFile (CString strRemoteFile,CStringstrLocalFile,BOOL bPasv,BOOL bGet);
//列出文件列表
BOOL List();void ProcessList();
//获取一行信息
BOOL GetLine(int ndx,CString&strLine);
//发送数据
BOOL WriteStr(CString strOutPut);
//接收数据
BOOL ReadStr();
//设置窗口
9