数据包的捕获与分析教程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 接口 struct pcap_if { struct pcap_if *next; //下一个接口 char *name; //接口名 char *description; struct pcap_addr *addresses; bpf_u_int32 flags; //目前只支PCAP_IF_LOOPBACK }; * 接口地址 struct pcap_addr { struct pcap_addr *next; struct sockaddr *addr; struct sockaddr *netmask; struct sockaddr *broadaddr; struct sockaddr *dstaddr; // P2P }; * 3.2 打开接口获取抓包描述符 pcap_t *pcap_open_live( char *device, //接口名 int snaplen,//抓取数据包的最大长度, //多出部分将被截断 int promisc, //是否为混杂模式 int to_ms, //读多少毫秒的包后再返回 char *errorbuf); 用途:用来获取一个抓包的 descriptor; 返回值为NULL表失败 void pcap_close (pcap_t *?p?)? * 3.3 设置filter int pcap_compile (pcap_t *p, struct bpf_program *fp,?char *str, int optimize, bpf_u_int32 netmask) 把用户容易理解的字符串形式的过滤规则str翻译成一个程序可以识别的过滤器规则fp Netmask:被抓包的掩码,用于检查ipv4的广播包 返回值为-1时出错 int pcap_setfilter(pcap_t *p, struct bpf_program *fp) 设置一个过滤器 * a.捕获 MAC地址为 00:d0:f8:00:00:03 网络设备通信的所有报文 ? ether host 00:d0:f8:00:00:03 b.捕获 IP地址为 网络设备通信的所有报文 ? host c.捕获网络web浏览的所有报文 ? tcp port 80 d.捕获除了http外的所有通信数据报文 ? host and not tcp port 80 这些过滤规则也是软件Ethereal直接使用的规则 过滤规则举例 * 更一般的过滤规则 [src|dst] host host ether [src|dst] host ehost gateway host host [src|dst] net net [{mask mask}|{len len} [tcp|udp] [src|dst] port port less|greater length ip|ether proto protocol ether|ip broadcast|multicast * 3.4 捕获数据 int pcap_loop(pcap_t *p, int cnt, //捕获的最大数目,-1表无限 pcap_handler callback, //用户的处理函数 u_char *user//回调函数的参数) ? 返回值:-1出错,0表cnt耗尽 int pcap_next_ex (pcap_t *?p, struct pcap_pkthdr **?pkt_header, const u_char **?pkt_data?) * 3.5 用户的包处理函数 void CallbackFunc(unsigned char *user, const struct pcap_pkthdr *winpcaphead, const unsigned char *packetdata) 参数winpcaphead:说明包的一些辅助信息,包括时间,长度。 packetdata:捕获的帧 * 以太网帧结构 前导码与帧前定界符:前导码为56bit的1010…101010,帧前定界符目的地址和源地址:MAC地址为48bit 长度/类型:长度(小于0800H),类型(大于等于0800H,如IP为0800H、ARP为0806H) 数据字段:用于携带上层传下来的数据。 帧校验字段:32位的CRC 前导码、帧前定界符和帧校验和三个字段属于物理层内容,在数据链路层不会得到这些字段,因此在MAC层只需解析目的地址、源地址、长度/类型和数据字段。 * 代码阅读 P244-247 改进:识

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档