ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:18.39KB ,
资源ID:10285912      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10285912.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(lipcap函数库.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

lipcap函数库.docx

1、lipcap函数库1int pcap_lookupnet(char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp,char *errbuf);功能 该函数用于监测网卡所在网络的网络地址和子网掩码参数 char *devic 网卡的描述符指针,由pcap_looupdev函数获取; bpf_u_int32 *netp 存放网络地址; bpf_u_int32 *maskp 存放子网掩码; char * errbuf 存放出错信息;返回值 如果函数执行成功,则返回值为0,否则返回值为-1,并在errbuf中存放出错信息。2char *pcap_look

2、updev(char * errbuf);功能 获取一个合适的网卡描述,以供pcap_open_liver函数和pcap_lookupnet函数使用。参数 char * errbuf 存放pcap_lookupdev函数的出错信息;返回值 如果函数执行成功,则返回一个用于描述系统上的一个网卡的描述符的指针。如果失败,返回null,errbuf中存放出错信息。3pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)功能 打开网卡用来获得一个数据截获描述符,该描述符用于查看在网络上传

3、输的数据包;参数 char *device 指定的嗅探设备; snaplen pcap捕获的最大字节数; promisc 是否将指定接口设为为混杂模式; to_ms 读取时的超时值,单位是毫秒,如果为0则一直嗅探直到错误发生,为-1则不确定;。 ebuf 存入任何错误信息的字符串返回值 返回会话句柄。实例:#include .pcap_t *handle;handle = pcap_open_live(somedev, BUFSIZ, 1, 0, errbuf);实例说明 该代码打开字符串somedev的设备,读取被BUFSIZ指定的字节数(BUFSIZ在pcap.h里定义);设备被设置为混杂

4、模式;一直嗅探到错误发生;如果有了错误,把它存放在字符串errbuf中。4int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask)功能 编译表达式参数 pcap_t *p pcap_open_live 打开的设备接口句柄; struct bpf_program *fp 存储被编译的过滤器版本的地址; char *str 表达式本身; int optimize 是否被优化的整形量(0为false,1为true,标准规定); bpf_u_int32 netmas

5、k 指定应用此过滤器的网络掩码;返回值 函数返回-1为失败,其他表明成功的5int pcap_setfilter(pcap_t *p, struct bpf_program *fp)功能 使用过滤器用于设定一个过滤器程序;参数 pcap_t *p 会话句柄; struct bpf_program *fp 被编译表达式版本的引用(与pcap_compile()的第二个参数相同)。实例:#include pcap_t *handle; /* 会话的句柄 */char dev = rl0; /* 执行嗅探的设备 */char errbufPCAP_ERRBUF_SIZE; /* 存储错误 信息的字符

6、串 */struct bpf_program filter; /*已经编译好的过滤表达式*/char filter_app = port 23; /* 过滤表达式*/bpf_u_int32 mask; /* 执行嗅探的设备的网络掩码 */bpf_u_int32 net; /* 执行嗅探的设备的IP地址 */pcap_lookupnet(dev, &net, &mask, errbuf);handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf);pcap_compile(handle, &filter, filter_app, 0, net);pcap

7、_setfilter(handle, &filter);实例说明 该程序使用混杂模式嗅探嗅探设备为r10,经由端口23的所有通信。 pcap_lookupnet(),向这个函数提供设备接口名,它将返回其IP和网络掩码, 我们需要知道网络掩码以便应用过滤器。6u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)功能 获取单包参数 pcap_t *p 会话句柄; struct pcap_pkthdr *h 指向一个包括了当前数据包总体信息(被捕获时的时间,包的长度,其被指定的部分长度)的结构体的指针返回值 返回一个u_char指针给被这个结构体描述

8、的包实例:#include #include int main() pcap_t *handle; /* 会话句柄 */ char *dev; /* 执行嗅探的设备 */char errbufPCAP_ERRBUF_SIZE; /* 存储错误信息的字符串 */struct bpf_program filter; /* 已经编译好的过滤器 */char filter_app = port 23; /* 过滤表达式 */bpf_u_int32 mask; /* 所在网络的掩码 */bpf_u_int32 net; /* 主机的IP地址 */struct pcap_pkthdr header; /*

9、 由pcap.h定义 */const u_char *packet; /* 实际的包 */ /* Define the device */dev = pcap_lookupdev(errbuf); /* 探查设备属性 */pcap_lookupnet(dev, &net, &mask, errbuf);/* 以混杂模式打开会话 */handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf);/* 编译并应用过滤器 */pcap_compile(handle, &filter, filter_app, 0, net);pcap_setfilter(han

10、dle, &filter);/* 截获一个包 */packet = pcap_next(handle, &header);/* 打印它的长度 */printf(Jacked a packet with length of %d, header.len);/* 关闭会话 */pcap_close(handle);return(0);实例说明:该程序嗅探被pcap_lookupdev()返回的设备并将它置为混杂模式,在发现第一个包经过端口23(telnet)并且告诉用户此包的大小(以字节为单位)。7int pcap_loop(pcap_t *p, int cnt, pcap_handler cal

11、lback, u_char *user)功能 设置获取到满足过滤规则后,数据包处理的回调函数参数 pcap_t *p 会话句柄 int cnt 捕获数据包的个数 pcap_handler callback 回调函数的名称 u_char *user 送往回调函数的参数特殊说明 该函数与pcap_dispatch完成相同的功能,但是与pacap_dispatch不同的就是该函数忽略超时;而pacap_dispatch不忽略超时。回调函数的原型:void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *

12、packet);回调函数说明: 1.函数返回void类型 2.参数u_char *args对应于pcap_loop()的最后一个参数 3.const struct pcap_pkthdr *header参数类型在pcap.h中包含,该结构体包含数据包被嗅探的时间、大小等信息 具体结构体信息如下所示: struc pacap_pkthdr struct timeval ts; /* 时间戳 */ bpf_u_int32 caplen; /* 已捕获部分的长度 */bpf_u_int32 len; /* 该包的脱机长度 */;8int pcap_dispatch ( pcap_t * p, int

13、 cnt, pcap_handler callback, u_char * user );功能 捕捉报文、分发报文到预先指定好的处理函数(回调函数)。函数说明 pcap_dispatch()接收够cnt个报文便返回,如果cnt为-1意味着所有报文集中在一个缓冲区中。如果cnt为0,仅当发生错误、读取到EOF或者读超时到了(pcap_open_live中指定)才停止捕捉报文并返回。 callback指定如下类型的回调函数,用于处理pcap_dispatch()所捕获的报文: typedef void ( *pcap_handler ) ( u_char *, const struct pcap_

14、pkthdr *, const u_char * ); 回掉函数参数: u_char * 为pcap_dispatch()的第3个形参; struct pcap_pkthdr * 指向pcap_pkthdr结构,该结构位于真正的物理帧前面,用于消除不同链路层支持的差异。 const u_char * 最后的形参指向所捕获报文的物理帧。函数返回值: 返回捕捉到的报文个数,如果在读取静态文件(以前包捕捉过程中存储下来的)时碰到EOF则返回0。返回-1表示发生错误,此时可以用pcap_perror()、pcap_geterr()显示错误信息。9void pcap_close ( pcap_t * p

15、 );功能 关闭pcap_open_live()获取的包捕捉句柄,释放相关资源。关闭相关的文件并释放对应资源。参数 pcap_t * p pcap_open_live()获取的包捕捉句柄返回值 无10void pcap_perror ( pcap_t * p, char * prefix );功能 输出函数调用时产生的错误参数 pcap_t * p来自pcap_open_live()的捕获数据包的句柄char * prefix 与perror()的形参相同,指定错误信息的前缀,与perror()一样,结尾自动输出一个换行。实例 pcap_perror( p, pcap_compile )的输出

16、类似这个效果: pcap_compile: unknown ip proto .说明 pcap_perror并不自动exit(),与perror()一样,如果需要,应该显式调用exit()。11pcap_t *pcap_open_offline(char *fname, char *ebuf) 功能 打开以前保存捕获数据包的文件,用于读取。参数 fname参数指定打开的文件名。该文件中的数据格式与tcpdump和tcpslice兼容。-为标准输入。ebuf参数则仅在pcap_open_offline()函数出错返回null时用于传递错误消息。 返回值 会话句柄12pcap_dumper_t *

17、pcap_dump_open(pcap_t *p, char *fname) 功能 打开用于保存捕获数据包的文件,用于写入。参数 p为调用pcap_open_offline()或 pcap_open_live()函数后返回的pcap结构指针fname参数指定打开文件名,如果为-时表示标准输出。返回值 出错时返回null。如果返回null,则可调用pcap_geterr()函数获取错误消息。13void pcap_dump(u_char *user, struct pcap_pkthdr *h, u_char *sp) 功能 向调用pcap_dump_open()函数打开的文件输出一个数据包。该

18、函数可作为cap_dispatch()函数的回调函数。14int pcap_datalink(pcap_t *p) 功能 返回数据链路层类型,例如dlt_en10mb。15int pcap_snapshot(pcap_t *p) 功能 返回pcap_open_live被调用后的snapshot参数值。16int pcap_is_swapped(pcap_t *p) 功能 返回当前系统主机字节与被打开文件的字节顺序是否不同。17int pcap_major_version(pcap_t *p) 功能 返回写入被打开文件所使用的pcap函数的主版本号。18int pcap_minor_versio

19、n(pcap_t *p) 功能 返回写入被打开文件所使用的pcap函数的辅版本号。19pcap_geterr()功能 函数来获取错误消息。20int pcap_stats(pcap_t *p, struct pcap_stat *ps)功能 向pcap_stat结构赋值。成功时返回0。这些数值包括了从开始捕获数据以来至今共捕获到的数据包统计。如果出错或不支持 数据包统计,则返回-1,且可调用pcap_perror()或pcap_geterr()函数来获取错误消息。21file *pcap_file(pcap_t *p) 功能 返回被打开文件的文件名。22int pcap_fileno(pcap_t *p) 功能 返回被打开文件的文件描述字号码。23char *pcap_strerror(int error) 功能 如果strerror()函数不可用,则可调用pcap_strerror函数替代。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1