和我一起学libpcap(1)最近对网络编程来了兴趣,开始研究libpcap把自己的一些学习历程写下来,绝对是由浅入深希望对大家有帮助 本文版权所有:doggy(chaujy@x263.net) 欢迎非盈利性转载 任何其他形式的使用请与作者联系 1.入门使用篇 本篇讲述如何抓包 最简单的libpcap抓包程序只要有以下几句就可以了
建立libpcap捕捉句柄,若出错,ebuf返回错误字串.ebuf可以为NULL(以后同)
添写过滤规则串fcode,可以为空(即第三个参数,格式在后面讲到)
给 pd 设置上过滤规则
主循环,开始抓包,共抓10个(由第二个参数指定),抓到包后就进入函数 eth_printer
结束 这个就是最简单的程序了,其中还有个不明, 在pcap_loop参数 eth_printer的类型是pcap_handler,pcap_handler定义如下:
当然要包含
编译要加上 -lpcap 至于怎么得到libpcap,还有安装,我就不费话了 本文版权所有:doggy(chaujy@x263.net) 欢迎转载 2.使用进阶篇 刚才我们对程序的要求是能编译通过,能运行成功,现在我们让这个程序实用点吧 2.1 其它几个函数介绍 这几个函数的特点是简单但无关紧要 现在我们隆重退出
这个函数就是查找本机上的网络接口设备,我机器上就返回"eth0",在pcap_open_live之前用,没什么意思吧,反正我是不爱用它
第一个参数就是pcap_lookupdev返回的接口名,二三参数都是32位无符号数,分别是IP网段和掩码,最后那个参数还是ebuf
它返回你的网络类型,如 DLT_EN10MB 就是10M以太网,让人ft的是这些常量定义不在pcap.h中,在哪?自己找找吧;-)
返回最长抓多少字节,就是我们在pcap_open_live中第二个参数设置的
计数,共抓了多少过滤掉了多少,看看struct pcap_stat的定义就明白了
版本号,你有用么? 我的eth_printer如下
简单吧 :*) 上一篇:进程vs线程,如何选择? 下一篇:和我一起学libpcap(2) 更多相关文章
|
推荐文章
精彩文章
|