基于libpcap库的数据捕获技术.ppt

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

* * * * * * * * * * 基于网络的入侵检测技术 * 首先利用函数 getifaddrs() 获得所有网络接口的地址,以及对应的网络掩码、广播地址、目标地址等相关信息,再利用 add_addr_to_iflist()、add_or_find_if()、get_instance() 把网络接口的信息增加到结构链表 pcap_if 中,最后从链表中提取第一个接口作为捕获设备。 基于网络的入侵检测技术 * /*libpcap自定义的接口信息链表*/ struct pcap_if { struct pcap_if *next; char *name; /* 接口设备名 */ char *description; /* 接口描述 */ /*接口的 IP 地址, 地址掩码, 广播地址,目的地址 */ struct pcap_addr addresses; bpf_u_int32 flags; /* 接口的参数 */ }; 基于网络的入侵检测技术 * 2、打开网络设备 ? 当设备找到后,下一步工作就是打开设备以准备捕获数据包。打开网络设备的主函数是 pcap_open_live(),其任务就是通过给定的接口设备名,获得一个捕获句柄。 基于网络的入侵检测技术 * pcap_t *pcap_open_live(char *device, int snaplen,int promisc, int to_ms,char *ebuf) 参数说明: device:为指定打开的网络设备名。 snaplen:定义捕获数据的最大字节数。 promisc:指定是否将网络接口置于混杂模式,1混杂模式,0正常模式; to_ms:指定超时时间(毫秒)。 ebuf:仅在pcap_open_live()函数出错返回NULL时用于传递错误消息。 基于网络的入侵检测技术 * 3、获取网络号和掩码??? ? ? int pcap_lookupnet(char *device, bpf_u_int32 *netp,bpf_u_int32 *maskp, char *errbuf) 获得指定网络设备的网络号和掩码。netp参数和maskp参数都是bpf_u_int32指针。如果函数出错,则返回-1,同时errbuf中存放相关的错误消息。 基于网络的入侵检测技术 * 4、编译和设置过滤器 ? int pcap_compile(pcap_t *p, struct bpf_program *fp,char *str, int optimize, bpf_u_int32 netmask) 该函数用于解析过滤规则串,填写bpf_program结构,将str参数指定的字符串编译到过滤程序中。fp是一个bpf_program结构的指针,在pcap_compile()函数中被赋值。optimize参数控制结果代码的优化。netmask参数指定本地网络的子网掩码。 基于网络的入侵检测技术 * ? int pcap_setfilter(pcap_t *p, struct bpf_program *fp) 该函数用于设置由pcap_compile()函数解析完毕的过滤规则。 fp参数是bpf_program结构指针,通常取自pcap_compile()函数调用。出错时返回-1;成功时返回0。 基于网络的入侵检测技术 * 5、捕获数据包 int pcap_dispatch(pcap_t *p, int cnt,pcap_handler callback, u_char *user) 该函数用于捕捉报文、分发报文到预先指定好的处理函数。 参数说明: cnt参数指定函数返回前所处理数据包的最大值。cnt=-1表示处理一个缓冲区中所有的数据包。cnt=0表示仅当产生以下错误之一才停止处理并返回:发生错误;读到EOF;读超时。 基于网络的入侵检测技术 * callback参数指定一个带有三个参数的回调函数,回调函数为:typedef void ( *pcap_handler ) ( u_char *agrs, const struct pcap_pkthdr *header, const u_char *packet ); 其中agrs是从pcap_dispatch()函数传递过来的指针 ,一般总是NULL;header指向pcap_pkthdr结构,该结构位于真正的物理帧前面,用于消除不同链路层支持的差异;packe

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档