【2017网络协议编程与分析课程设计】(一)开始写程序之前的一些准备

首先,这一次课设主要要做的事情:分析IP数据包!!!分析IP数据包!!!分析IP数据包!!!

IP数据包是一个大的概念,根据传输方式不同,有面向连接的TCP和面向无连接UDP。而基于这2种传输方式的IP数据包又用了不同的协议。

具体见TCP/IP协议族的层次结构


在做之前需要一些准备

1.准备VS中运行winpcap 的环境,百度一下网上有很多。关键词:winpcap+vs,神秘连接:点击打开链接

2.先了解这个结构体,IP首部,后面要做的事情需要围绕这个结构体展开。

struct IP_HEAD{
unsigned char ver_and_hlen;//版本号+首部长度共1个字节
unsigned char tos;//服务类型1个字节
unsigned short total_len;//总长度2个字节
unsigned short code;//标识2个字节
unsigned short flag;//标志+片偏移共2个字节
unsigned char ttl;//生存时间 1个字节
unsigned char protl;//上层协议标识1个字节
unsigned short check_sum;//首部校验和2个字节
unsigned char src_ip[4];//源IP地址4个字节
unsigned char des_ip[4];//目的IP地址4个字节
};

3.用vs写一个小程序,获取设备列表,并显示出来。测试自己的VS环境能不能正常使用winpcap编程。

4.鉴于我在网上看过很多博客写的真是对像我这样入门级别的人来说十分不友好,我决定把这个过程截图拿出来供大家参考。

5.用VS新建一个MFC的应用程序


6.选择基于对话框,之后完成。



7.画出一个界面,画之前先用delete键删除界面的全部控件,我的static控件变成这种样式是因为我设置了他的属性,如后面一张图

8.双击button按钮编写button的click事件,不过在编写之前需要添加头文件#include"pcap.h",这样就能使用wpcap里面的一些函数了。


9.下面开始正式写函数

CString Msg;void C课程设计Dlg::OnBnClickedButton1()
{
	// TODO:  在此添加控件通知处理程序代码	
	CString Msg;
	pcap_if_t *alldevs;
	pcap_if_t *d;
	char errbuf[PCAP_ERRBUF_SIZE];
	int i = 0;
	//获取本地的设备列表
	if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)
	{
		Msg = "获取设备列表失败!";
		SetDlgItemText(IDC_STATIC, Msg);
		exit(-1);
	}
	/* Print the list */
	for (d = alldevs; d != NULL; d = d->next)
	{
		Msg +=d->name;
		Msg += "\r\n";
		++i;
	}


	if (i == 0)
	{
		Msg = "\nNo interfaces found! Make sure WinPcap is installed.\n";
		
	}


	/* We don't need any more the device list. Free it */
	pcap_freealldevs(alldevs);
	SetDlgItemText(IDC_STATIC, Msg);
}


10.对于完全不了解上面代码的的可以看一下这个链接  点击打开链接

11.我的结果图

12.这个写的也不算很详细,有很多东西没有解释,如果看到这个博客的人对这个篇博客有什么想法或者建议,尽管提,以后多改正。后面更新。。。。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包括源程序和详细的使用说明个,同时内付相关的软件 编程环境: 操作系统:Windows XP SP2 开发语言:C++ / MFC 编译环境:MS Visual C++6.0 第3方函数库:Winpcap3.1 使用说明: 1. 启动: 程序启动后首先出现网卡选择对话框,如图1所示,在设备列表中选择需要进行捕获的网卡。 2. 界面: 选择网卡后出现程序主界面,界面设计主要参照了一款比较优秀的网络协议分析工具Iris的图形化界面,采用切分窗口风格,整个程序界面分为三部分:左侧为树形视图,右侧上半部分为列表视图,右侧下半部分为编辑视图 3. 功能: 1) 如果不做任何设置,程序默认为混杂模式,点击按钮① 后,程序开始捕获网络上传输的所有数据包,并将它们显示在列表视图中。点击按钮② 停止捕获。 2) 点击列表视图中的某一行后,对应于该数据包的详细字段分析和原始数据将分别显示在左侧树形视图和右下的编辑视图中,如图2所示。 3) 列表视图中显示的最大数据包数量为2000条,超过后列表视图将清空并重新开始。另外程序还提供了在任意时刻清空当前列表视图中所有数据包的命令(提供该命令的原因是经常会有这样的情况:即列表视图中已经有了很多消息了,但目前只需要关注从即刻起之后到来的消息,这时以前的消息就不再有用并且会影响我们对所要消息的选择)。要使用该命令请在列表视图中任意位置单击鼠标右键,在弹出的菜单中选择“全部清空”

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值