IPv6协议分析器的研究与实现

来源 :硅谷 | 被引量 : 0次 | 上传用户:zhou1225
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  随着互联网的迅速发展,IPv4地址即将被IPv6地址取代。IPv6不仅可以提供足够的IP地址,同时还具有可扩展、支持QoS和支持移动通信等其他重要特性。然而,潜在安全威胁依然存在于由大量IPv6设备组成的企业网络中,包括所有运行Windows 7、Mac OS/X和Linux的设备。因此,在网络入侵检测系统中,对于IPv6数据包的监控和分析至关重要。
  while(true) {//建立一个死循环不断监听网络
  WSARecv(m_Socket,&wbuf,1,&dwBytesRead,&dwFlags,NULL,NULL);//捕获数据报
  WSABUF *pBuf=(WSABUF*)&wbuf;
  buf=(UCHAR*)GlobalAlloc(GPTR,pBuf->len);//分配缓冲区
  buf=(unsigned char *)pBuf->buf;//获取缓冲区中数据
  ip_header=( IPv6_HEADER)buf;//将缓冲区中的数据转换成IPv6报头结构
  ipv6_header=( IPv6_HEADER)(buf+sizeof(IPv4_HEADER));
  … }
  4)简单解析IPv6数据报。
  printf("IPv6包头: ");
  Printf("版本:%d",ipv6_header->ver_tf); //IP版本号
  Printf("数据包长度:%d",ipv6_header->length[0]*256+ipv6_header
  ->length[1]);
  printf("下一个包头类型:%d",ipv6_header->next_header);
  printf("限跳数:%d ",ipv6_header->limits);
  printf("源IPv6 地址: ");
  for(int i=0;i<14;i++) {
  printf("%X",ipv6_header->Srcv6[0+i]); //显示源IPv6地址
   i++;
   printf("%X:",ipv6_header->Srcv6[0+i]); }
  printf("%X%X ",ipv6_header->Srcv6[14],ipv6_header->Srcv6[15]);
  显示目的地址的代码与显示源地址相类似。
  用于测试的网络环境由两台安装Windows7系统的主机和一台二层交换机组成,手动配置IPv6地址进行通信,截获数据包的测试结果如图1所示。
  
  3.2 使用WinPcap编程实现
  Windows 7系统中,MFC环境结合WinPcap工具包也可以很方便地开发可视化界面的IPv6协议分析器,实现过程即关键程序如下。
  1)获取系统中的网卡设备列表并选择。
  pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf);//获取网卡列表
  for(d=alldevs; d&& m_DetailSizenext) { //显示网卡列表
   name = d->name;
   m_CombAdapter.InsertString(m_DetailSize,(LPCTSTR)name);
   if (d->description)
   m_Detailtext[m_DetailSize] = d->description; //获取设备描述信息
   else
   m_Detailtext[m_DetailSize] = "无有效设备描述";
   m_DetailSize ++;
   }
   pcap_freealldevs(alldevs); // 释放设备列表
  2)选择接收数据的网卡后开始执行捕获数据包线程。
  m_CombAdapter.GetCurSel(); //选择了网卡设备
  m_pThread=AfxBeginThread(Capture_packet,this,THREAD_PRIORITY_NORMAL);
  3)IPv6数据捕获及协议分析工作线程的定义代码如下:
  Ad=pcap_open(name,// 设备名
   65536, // 要捕捉的数据包的最大长度
   PCAP_OPENFLAG_PROMISCUOUS, // 设置网卡为混杂模式
   1000, // 超时时间
   NULL, // 远程主机验证
   errbuf ) ; // 错误信息缓冲区
  pcap_datalink(ad); //检验/以太网连接
  4)编译并设置过滤规则。
  pcap_compile(adhandle, &fcode, packet_filter, 1, netmask);
  pcap_setfilter(adhandle, &fcode);
  5)开始捕获IPv6数据。
  res = pcap_next_ex( adhandle, &header, &pkt_data);
  ih = (ip6_header *)(pkt_data +14); //以太网IPv6的头部长度
  6)显示IPv6源地址,显示目的地址的代码与之类似。
  for (int i=0;i<8;i++)
   { itoa(ntohs(ih->Ipv6_src.byte[i]),temp,16);
   srcip += temp;
   if(i<7) srcip +=":"; }
  7)对数据报进行简单协议分析,显示数据特征。
  int nhead = ih->NextHeader; //定义变量获取下一头部字段
  变量nhead的值是6,表示TCP协议,值17表示UDP协议,值58表示ICMP协议。
  通过完成以上各步骤,程序运行后的界面如图2所示。
  
  4 结束语
  目前IPv6仍然处于测试阶段,本文所述的方法着重强调了协议分析的思路和编程实现,是在与之相关的技术理论基础上进行了验证和改进。支持IPv6的新型软件技术和设备将不断地涌现和发展。
  
  
  基金项目:南京工程学院科研基金项目(编号:KXJ08073)。
  
  
  参考文献:
  [1]刘文涛,网络安全编程技术与实例[M].北京:机械工业出版社,2008:181-183.
  [2]吴功宜、董大凡等,计算机网络高级软件编程技术[M].北京:清华大学出版社,2010:100-101.
  [3]The Internet Society.RFC4291.[EB/OL].http://www.ietf.org/rfc/
  rfc4291.txt.2006.2.
  [4]许爱军、谢娟,基于WinPcap的网络数据解析及其实现[J].科学技术与工程,2009,5(10):2797-2798.
  [5]袁德明,IPv6新型套接字的网络变成剖析[J].通信技术,2007,12(40):364-365.
  
  作者简介:
  庄严(1969-),硕士,讲师,主要研究方向:网络安全、多媒体技术;张倩,硕士,讲师。
其他文献
据国外媒体报道,2011年的开源产品市场也取得了长足的进步,从桌面至云,从新型图形用户界面到新功能,新产品层出不穷。这里列举出的10个产品,都是以社区为支持的最好的开源产品。
GoboLinuxGoboLinux最显著的特色是重新组织的文件系统层次结构,它没有遵循一般Linux操作系统的文件系统层次结构标准(FHS)GoboLinux里,每个应用软件都有自己的子目录树,其下包舍
在人口710万的瑞士,只有20%左右的初中毕业生能够接受普通高中教育,他们获得高中毕业会考证书后就能够进入大学学习,而另80%的学生则分流到各类职业高中接受“双元制”或“
学英语最主要的目的就是会运用,高职高专学生在英语口语学习中存在口语表达能力差、由于口语练习的时间少、口语受方言影响较大、部分高职高专院校忽略学生口语学习的重要性
如果你刚刚购置一台新PC,你一定会尝试安装一些免费软件。科技网站PCWorld下面就为大家推荐6款免费开源软件:
在最近几年,系统管理程序世界的竞争一直在稳步加剧,ESX(VMware)一枝独秀的同时其它如Hyper-V、Xen和KVM也在取得稳步进展。在2012年,Hyper-V3最终会凸显出重大魅力吗?随着创新的加速推动先进特性和功能的发展,会出现向开源系统管理程序的快速迁移吗?或者,VMware会将继续占据统治地位吗?  竞争仍将存在,但合作才是王道  随着厂商在虚拟化管理层分化的日益显现、单纯的系统管
期刊
甲骨文全球软件在北京披露,Oracle Tuxedo中间件的下一版本将命名为Tuxedo 12c,并有望于2012年中或三季度推出。  Tuxedo目前最新的11g版本和未来的12c版本在研发时都依照云就绪基础设施的定位,为C/C++/COBOL及动态编程语言的应用程序提供具有竞争力的消息处理方案,提供更好的涵盖大型机上大部分数据资源的数据迁移工具,并提供简单易用的集成开发环境(IDE)。  Tu
德育工作应跳出囿于校园的圈子,走出校门,融入社会,开发丰富多彩的社会资源,挖掘各种教育力量,形成合力,对学生齐抓共管,进行有的放矢引导,帮助他们开阔思路,增长见识,树立
矿用扒渣机作为矿井中扒装作业的主要机械,具有挖扒采集、输送、装车和行走四种功能。而在许多工况下要求扒渣机具有一定的爬坡能力,本文以某公司研制的某型号矿用扒渣机为样