没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
好,让我们从看看这篇文章写给谁开始。显而易见的,需要一些 C 语言基础知识,除非你
只想了解基本的理论。你不必是一 个编码专家,因为这个领域只有经验丰富的程序员涉足,
而我将尽可能具体的描述这些概念。另外,考虑到这是有关一个包嗅探器的,所以对网络
基础知识的理解是 有帮助的。所有在此出现的代码示例都已在 FreeBSD 4.3 平台上测试通
过。
开始:pcap 应用程序的格式
我们所要理解的第一件事情是一个基于 pcap 的嗅探器程序的总体布局。流程如下:
1.我们从决定用哪一个接口进行嗅探开始。在 Linux
中,这可能是 eth0,而在 BSD 系统中
则可能是 xl1 等等。我们也可以用一个字符串来定义这个设备,或者采用 pcap 提供的接口
名来工作。
2.初始化 pcap。在这里我们要告诉 pcap 对什么设备进行嗅探。假如愿意的话,我们还可以
嗅探多个设备。怎样区分它们呢?使用 文件句柄。就像打开一个文件进行读写一样,必须
命名我们的嗅探“会话”,以此使它们各自区别开来。
3.假如我们只想嗅探特定的传输(如 TCP/IP 包,发往端口 23 的包等等),我们必须创建一
个规则集合,编译并且使用它。这个过程分为三个相互紧密关联 的阶段。规则集合被置于
一个字符串内,并且被转换成能被 pcap 读的格式(因此编译它)。编译实际上就是在我们的
程序里调用一个不被外部程序使用的函数。 接下来我们要告诉 pcap 使用它来过滤出我们
想要的那一个会话。
4.最后,我们告诉 pcap 进入它的主体执行循环。在这个阶段内 pcap 一直工作到它接收了所
有我们想要的包为止。每当它收到一个包就调用另一个已经定义 好的函数,这个函数可以
做我们想要的任何工作,它可以剖析所部获的包并给用户打印出结果,它可以将结果保存
为一个文件,或者什么也不作。
5.在嗅探到所需的数据后,我们要关闭会话并结束。
这是实际上一个很简单的过程。一共五个步骤,其中一个(第 3 个)是可选的。我们为什
么不看一看是怎样实现每一个步骤呢?
设置设备
这是很简单的。有两种方法设置想要嗅探的设备。
第一种,我们可以简单的让用户告诉我们。考察下面的程序:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[])
{
char *dev = argv[1];
printf("Device: %s", dev);
return(0);
}
用户通过传递给程序的第一个参数来指定设备。字符串“dev”以 pcap 能“理解”的格式保存了
我们要嗅探的接口的名字(当然,用户必须给了我们一个真正存在的接口)。
另一种也是同样的简单。来看这段程序:
#include <stdio.h>
#include <pcap.h>
int main()
{
zhj41620935
- 粉丝: 1
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0