资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
欢迎luoting962我的:空间博客网摘资源设置|帮助|退出 CSDN首页 资讯 论坛 博客 下载 搜索 更多captain_x的专栏生命不熄,奋斗不止! 欢迎luoting962! 退出 我的博客 配置 写文章 文章管理 博客首页 空间 博客 好友 相册 留言用户操作留言发消息加为好友夏蔚ID:captain_x共12050次访问,排名15645,好友10人,关注者32人。热爱编程,熟悉c及网络知识夏蔚的文章原创 16 篇翻译 1 篇转载 13 篇评论 7 篇订阅我的博客captain_x的公告从学校开始,学习c+也已经3年了,但是始终停留在初学者的水平上,没有深入系统地学习过,以后一定要努力,书是要一本一本地看,程序要一个一个地编,争取在半年之内熟悉了MFC,把软件设计师考过。文章分类 技术空间 生活田地 通信软件百思论坛(通信方面的一个很好的论坛,里面可以下载不少资料)网络vpn技术论坛存档 2011年02月(3) 2011年01月(7) 2010年12月(4) 2010年08月(1) 2009年09月(1) 2007年12月(1) 2007年11月(3) 2007年08月(3) 2007年06月(1) 2007年04月(1) 2006年11月(2) 2006年04月(1) 2006年03月(1) 2005年07月(1)公告: 精彩生活 ShowTime”评选 最终结果公布意见反馈官方博客 循序渐进学WinPcap收藏去年开始学习winpcap,当时翻译了一点,现在打算把这个工作完成了。我的水平比较差,翻译的很不到位,不过对于初次接触winpcap的人应该还是有点帮助吧。不过不知道我这样来翻译是不是侵犯了人家的版权?如果有这个嫌疑,请大家告诉我,我对这方面的法律不是很了解。建议对这方面有兴趣的人还是去http:/www.winpcap.org下载文档和资料看。下面开始吧:WinPcap tutorial: a step by step guide to using WinPcap详细说明这部分展示了怎样使用WinPcap API。这个教程通过一系列的课程,从基本的函数(取得网卡列表,开始抓包,等等)到最高级的应用(处理数据包包发送队列和统计网络流量),一步一步地教会读者如何用WinPcap来编程。这里提供了几个虽然简单但却完整的程序段作为参考:所有的源代码都有其余部分的链接,只需要点击一下函数和数据结构就可以跳转到相应的文档。这些例子都是使用c语言写的,所以在读本教程前要了解一些基本的c语言的知识。而且,这是一个关于处理原始网络包的库的教程,所以假定读者具有良好的网络和网络协议方面的知识。WinPcap tutorial: a step by step guide to using WinPcap(1)获取网络设备列表基本上所有基于Winpcap的应用程序所做的第一件事情都是获取一个已经绑定的网卡列表。为此,libcap和winpcap都提供了pcap_findalldevs_ex()函数:这个函数返回一个指向pcap_if结构的链表,其中的每一项都包含了一个已经绑定的适配器的全部信息。其中name和description这两项分别包含了相应设备的名称和描述。下面的代码取得适配器列表并在屏幕上显示出来,如果适配器没有被发现就把显示错误。i nclude pcap.hmain() pcap_if_t *alldevs; pcap_if_t *d; int i=0; char errbufPCAP_ERRBUF_SIZE; /* 取得本机的网络设备列表 */ if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* 这个参数在这里不需要 */, &alldevs, errbuf) = -1) fprintf(stderr,Error in pcap_findalldevs_ex: %sn, errbuf); exit(1); /* 显示列表 */ for(d= alldevs; d != NULL; d= d-next) printf(%d. %s, +i, d-name); if (d-description) printf( (%s)n, d-description); else printf( (No description available)n); if (i = 0) printf(nNo interfaces found! Make sure WinPcap is installed.n); return; /* We dont need any more the device list. Free it */ pcap_freealldevs(alldevs);关于这段代码的说明。首先,就象其他的libpcap函数,pcap_findalldevs_ex()有一个errbuf参数。如果发生错误,libcap就把一个错误说明放到这个参数指向的字符串中。其次,并不是所有的操作系统都支持libpcap提供的网络接口描述,因此如果我们想写一个可移植的程序,我们必须考虑description为null的情况:这个时候我们就输出字符串No description available 。最后要提醒一下:一旦我们完成了这些动作,就应该释放用pcap_freealldevs()列表。让我们编译并运行这段简单的代码。在unix或者cygwin中编译的话,打入下面的命令:gcc -o testaprog testprog.c -lpcap在windows中,你需要创建一个project,照着手册中的Using WinPcap in your programs 那一章做就可以了。但是,我们建议你使用the WinPcap developers pack(可以在http:/www.winpcap.org下载),因为这个开发包提供了许多教程中使用的代码示例,这些示例都已经配置好了,其中包含了编译执行例子所需要的include文件和lib文件。编译好了程序后,在我的winxp工作站上运行的结果:1. 4E273621-5161-46C8-895A-48D0E52A0B83 (Realtek RTL8029(AS) Ethernet Adapter)2. 5D24AE04-C486-4A96-83FB-8B5EC6C7F430 (3Com EtherLink PCI)就象你看到的一样,在windows系统中网络适配器的名称(在打开网络适配器时将被传递给libcap)根本没有办法理解,所以附加说明可能是非常有帮助的。WinPcap tutorial: a step by step guide to using WinPcap(2)Obtaining advanced information about installed devices课程1(Obtaining the device list)说明了怎样得到可用适配器的基本信息(比如设备名和说明)。实际上,winpcap也提供其他的高级信息。每个由pcap_findalldevs_ex()返回的pcap_if 结构体都包含了一个pcap_addr结构列表,里面包含的内容有:一个接口的地址列表。一个子网掩码列表(每一个都与地址列表中的条目一一对应)。一个广播地址列表(每一个都与地址列表中的条目一一对应)。一个目的地址列表(每一个都与地址列表中的条目一一对应)。除此之外,pcap_findalldevs_ex() 也能返回远程的适配器和任给的本地文件夹的pcap文件列表。下面的例子提供了一个ifprint() 函数来打印出一个pcap_if 结构中的所有内容。程序对每一个pcap_findalldevs_ex()返回的条目都调用一次这个函数。/* Copyright (c) 1999 - 2003* NetGroup, Politecnico di Torino (Italy)* All rights reserved.* Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:* 1. Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.* 2. Redistributions in binary form must reproduce the above copyright* notice, this list of conditions and the following disclaimer in the* documentation and/or other materials provided with the distribution.* 3. Neither the name of the Politecnico di Torino nor the names of its* contributors may be used to endorse or promote products derived from* this software without specific prior written permission.* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS* AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT* OWNER OR CONTRIBUTORS
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号