信息安全实践第十次作业 网络嗅探器.doc

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

四 川 大 学 计 算 机 学 院、软 件 学 院 实 验 报 告 班级:第 周 信息安全产品开发实践? 实验时间 2013.11.15 实验目的 使用Libpcap库捕获局域网中的IP包,要求: 1、打印数据包的源与目的物理地址; 2、打印源IP与目的IP地址; 3、打印出上层协议类型; 4、如果上层协议为TCP或UDP协议,打印目的与源端口信息; 5、如果上层协议为TCP或UDP协议,将数据以16进制与ASCII的两种方式同时打印出来,不可打印字符以‘.’代替 实验环境 虚拟机 Red Hat Enterprise Linux-VMware Workstation? 实验内容(算法、程序、步骤和方法) 在实验之前,必须先弄懂整个嗅探器工作流程,这对编写主函数很有帮助: 使用pcap_lookupdev()函数查找网络设备pcap_open_live()函数网络设备捕获数据包 (接上) 实验内容(算法、程序、步骤和方法) #includestdio.h #includestring.h #includesys/types.h #includesys/time.h #includesys/socket.h #includenetinet/in.h #includenetinet/in_systm.h #includenetinet/ip.h #includenetinet/if_ether.h #includenetinet/tcp.h #includenetinet/udp.h #includepcap.h #includenetdb.h #includetime.h #includesys/time.h #includectype.h #define DEFAULT_SNAPLEN 1518 //被pcap捕捉的最大字节数 //打印16进制和ascii void print(u_char*payload,int len,int offset,int maxlen) { printf(%.5d ,offset); //打印偏移量(宽度为5) int max=maxlen; //数据包的有效载荷和长度 int i; for(i=0;i16;i++) //打印16个字节的16进制payload { if((len-i)0) //还没打完 { printf(%.2x ,payload[max-(len-i)]); } else //已打完,最后一个后面有空格 { printf( ); } } printf( ); for(i=0;i16;i++) //打印16个字节的asciipayload { if(isprint(payload[max-(len-i)])) //为可打印字符 { printf(%c,payload[max-(len-i)]); } else //打印不出来的用.表示 { printf(.); } } } //打印数据包 void print_data(u_char *payload,int len) { int line_width=16; //一行16个字节 int len_rem=len; //剩余长度 int maxlen=len; //数据包的有效载荷和长度 int offset=0; //偏移量 while(1) { if(len_remline_width) //最后一次打印 { if(len_rem==0) //已打印完 break; else { //还没打印完 print(payload,len_rem,offset,maxlen); //调用print函数,传入payload地址、剩余长度、偏移量和数据包的有效载荷和长度 offset=offset+len_rem; //偏移量后移 printf(\n); break; }} else //不是最后一次打印 { print(payload,len_rem,offset,maxlen); //调用print函数,传入payload地址、剩余长度、偏移量和数据包的有效载荷和长度 offset=offset+16; //偏移量后移(由于非最后一次打印,所以固定打16个字节 - 偏移量后移16个字节) printf(\n); } len_rem=len_rem-line_width; //剩余长度减少 } } //打印mac地址 void print_mac(u_char* macadd){

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档