网站大量收购独家精品文档,联系QQ:2885784924

Linux下编写网络抓包程序.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux下编写网络抓包程序

清远见嵌入式学院: Linux 下编写网络抓包程序 作者:曾宏安, 清远见嵌入式学院讲师。 某些时候,我们需要在应用程序中捕获网卡收到的所有数据包并进行分析。为了实现这一功 能,应用程序需要借助底层系统的支持。当今主流的操作系统都提供了一个很强大的功能:允许应 用程序访问数据链路层。 类UNIX 操作系统上提供了三种不同的方式访问数据链路层,分别是BSD 的BSD 分组过滤 器(BPF) 、SVR4 的数据链路提供者接 (DLPI)和Linux 的SOCK_PACKET 接 。幸运的是,程序员 不需要了解这些不同接 的细节,直接使用Libpcap 函数库就可以。 Libpcap 是一个提供了针对网络数据包捕获系统的高层接 的开源函数库。其作用是提供独立 于平台的应用程序接 ,以消除程序中针对不同操作系统所包含的数据包捕获代码模块。这样以来, 就解决了程序移植性的问题,有利于提高开发的效率。 Libpcap 运行于大多数类UNIX 操作系统上,完整的文档和源码可以从tcpdump 的官方网站上 获得: http :// 其Windows 版本 Winpcap 可已从 http :// 获取。下面 介绍如何使用Libpcap 来捕获数据包 char *pcap_lookupdev(char *errbuf); 功能:查找用于捕获数据包的缺省设备 清远见嵌入式学院: errbuf :错误时保存出错信息 返回值:成功时返回设备名称;出错时返回NULL pcap_t *pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, char *errbuf); 功能:打开用于捕获数据包的网络设备 device :设备名称 snaplen:要捕获的数据包的最大字节数 prosmic:网络设备工作模式(0 表示非混杂模式,其他值表示混杂模式) to_ms : 从内核 间复制数据前等待的时间 err_buf :错误时保存出错信息 返回值:成功时返回pcap_t 类型的接 描述符(句柄) ;出错时返回NULL const u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h); 功能:捕获下一个数据包 p :接 描述符 h :捕获的数据包的信息 返回值:成功时返回指向捕获的数据的指针;出错时返回NULL typedef void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes); const u_char *pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user); 功能: 捕获下一个数据包 cnt :要捕获的数据包的个数 callback :捕获到数据包时执行的回调函数 user :传递给回调函数的参数 返回值:成功时返回0;出错时返回-1 清远见嵌入式学院: int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask); 功能:创建过滤器 p :接 描述符 fp :指向保存过滤器的结构体的指针 str :要转化的过滤规则 optimize : 过滤器是否要优化 netmask:网络掩码 返回值:成功时返回0;出错时返回-1 int pcap_setfilter(pcap_t *p, struct bpf_program *fp); 功能: 安装过滤器 p :接 描述符 fp :指向包含过滤器的结构体的指针 返回值:成功时返回0;出错时返回-1 以下实例代码实现捕获并显示3 个ARP 包 #include stdio.h #include stdlib.h #include string.h #inclu

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档