- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 《小学科学教学设计》课程教学大纲.doc
- Book 2 Unit 6 单元词汇(课件)-高中英语(外研版2019必修第二册).pptx
- 面瘫(周围性面神经炎)-中医诊疗指南-等级评审.pdf
- 2024-2026中国科技类消费电子产业发展白皮书.pptx
- 山东省德州市优高联盟九校2025届高三上学期1月联考英语试卷(含答案).docx VIP
- AP统计学 2016年真题 (选择题+问答题) AP Statistics 2016 Real Exam and Answers (MCQ+FRQ).pdf VIP
- 有限公司增资扩股协议书通用范本5篇.docx
- 50首经典红歌歌词.doc
- 部编版语文小学二年级下册第二单元集体备课主讲课件.pptx
- (2013年第一次全厂职工大会.doc VIP
文档评论(0)