好的,让我们首先说明这篇文档时为谁而写。显而易见,除非你只需了解一些基本原理,否则需要C语言的基础知识。你并不是需要成为编码武士,你只需要在
这个领域的一定编程经验,我将非常详细描述这里涉及的概念。另外,你所知一些网络知识将对你会有所帮助,比如这里是一个数据包探测等。这里的代码已经在
FreeBSD 4.3的默认内核上调试过了。
从这里开始:PCAP应用格式
首先理解PCAP的总体结构设计,具体流程如下:
1. 我们首先决定要嗅探哪个接口。Linux下可能是eth0,BSD下可能是x11,等。我们既可以用字符串定义这个设备,也可以让PCAP为我们
提供所要做工作的接口名称。
2. 初始化PCAP。这里我们将实际告诉PCAP哪个设备将被嗅探,只要我们想,也可以嗅探多样设备。那我们将如何区别呢?使用文件句柄(file
handles),就像打开文件来读和写,但我们必须命名我们要嗅探的会话以区别其他的会话。
3. 如果我们想嗅探专门的通信(如 TCP/IP数据包、仅仅通过端口23的数据包),我们必须创建一个标准规定(rule set),编译并应用
它;这是一个密切联系的三段处理。标准规定采用字符串格式,并能转化为PCAP能识别的格式(因此可以编译它)。事实上这个编译只是在我们的程序里调用
函数,因此告诉PCAP应用它去过滤我们所希望的任何一个会话。
4. 最后,我们让PCAP进入它主要的执行循环,在这种状态下,PCAP等待知道它所需要的多少数据包。每当获得一个新的数据包,它将调用另一个我们
已经定义好的函数。这个数据包可以为我们做很多事,比如数据包的分割并打印信息给用户,或把信息保存成文件,或者什么事也不做。
5. 在我们满意的嗅探之后,关闭会话完成。
这只是一个简单的过程,总共五步,但是第三步是可以选择的,下面让我们看看这些步骤的实现。
设置设备
这个非常简单,这里有两种技术设置我们所嗅探的设备。首先我们可以兼得让用户告诉我们。考虑下面的程序:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[])
{
char *dev = argv[1];
printf("Device: %s\n", dev);
return(0);
}
用户通过程序的第一个参数指定设备,现在”dev”里有我们将嗅探并能被PCAP识别的的格式的接口名称(即所谓用户给的)。
另一个技术也一样简单,看下面程序:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[])
{
char *dev, errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf);
if (dev == NULL) {
fprintf(stderr, "Couldn't find default device: %s\n", errbuf);
return(2);
}
printf("Device: %s\n", dev);
return(0);
}
On 8月14日, 下午2时35分, "liun" <liuna...@gmail.com> wrote:
> 别忘了,项目组还有个14岁的初中生。你觉得容易看懂的别人未必和你一样,如果你觉得简单那就把这个翻译工作做好,翻译工作有三字标准:信、达、雅,做好是不容-易的。
> 对信达雅的解释:http://zhidao.baidu.com/question/20128993.html
On 8月14日, 下午2时35分, "liun" <liuna...@gmail.com> wrote:
> 别忘了,项目组还有个14岁的初中生。你觉得容易看懂的别人未必和你一样,如果你觉得简单那就把这个翻译工作做好,翻译工作有三字标准:信、达、雅,做好是不容-易的。
> 对信达雅的解释:http://zhidao.baidu.com/question/20128993.html
On 8月14日, 下午2时35分, "liun" <liuna...@gmail.com> wrote:
> 别忘了,项目组还有个14岁的初中生。你觉得容易看懂的别人未必和你一样,如果你觉得简单那就把这个翻译工作做好,翻译工作有三字标准:信、达、雅,做好是不容-易的。
> 对信达雅的解释:http://zhidao.baidu.com/question/20128993.html
On 8月14日, 下午2时35分, "liun" <liuna...@gmail.com> wrote:
> 别忘了,项目组还有个14岁的初中生。你觉得容易看懂的别人未必和你一样,如果你觉得简单那就把这个翻译工作做好,翻译工作有三字标准:信、达、雅,做好是不容-易的。
> 对信达雅的解释:http://zhidao.baidu.com/question/20128993.html
先把第一篇翻译完看效果,如果有需要继续翻译第二篇
第二篇《Programming with Libpcap - Sniffing the network from our own
application》
http://recursos.aldabaknocking.com/libpcapHakin9LuisMartinGarcia.pdf
就是翻译这个
On 8月21日, 下午12时43分, redpig315 <xiucai...@163.com> wrote:
> 找不到那个资料了 ,要不我也翻译一下,
>
> On 8月20日, 下午5时04分, 青藤 <libin...@gmail.com> wrote:
>
>
>
> > 大哥,你翻译吧,我现在很忙啊
>
> > On 8月14日, 下午2时35分, "liun" <liuna...@gmail.com> wrote:
>
> > > 别忘了,项目组还有个14岁的初中生。你觉得容易看懂的别人未必和你一样,如果你觉得简单那就把这个翻译工作做好,翻译工作有三字标准:信、达、雅,做好是不容--易的。
> > > 对信达雅的解释:http://zhidao.baidu.com/question/20128993.html- 隐藏被引用文字 -
>
> - 显示引用的文字 -