《现代电子技术》2006年第23期摘录:陈旭等:结构化编程实现Snif
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
陈旭等:结构化编程实现SnifferPACKETlpPacket;由于Windows9x和NT的内核不同.驱动也不一样,按照不同的系统创建不同的网络适配器设备列表,对NT内核的系统是:WCHARAdapterName[8129]WCHAR*temp,*templ;对Windows9x系统是:charAdapterName[8192];char*tempa,*templa;intAdapterNum一0,()pen;UI。ONGAdapterI。ength;再定义一个缓冲区,容纳来自驱动器的数据:charbuffer[256000];最后获得本机的网卡名并输出:AdapterI,ength--4096;Printf(”Packet.dlltestapplicationLibraryversion:%s\n”,PacketGetVersion());Printf(”Adaptersinstalled:\n”);i一0;图1结构化流程图在确定了系统和版本后,开始让用户选择监听的网络适配器并设置为“混杂”模式lpAdapter--Packet()penAdapter(AdapterI。ist[()pen--1]);设置混杂模式的代码:acketSetHwFilter(1pAdapter,NDIS—PACKET—TYPEPROMISCUOUS)一一FAI。SE)下面驱动器中设置512k的缓冲区,这里用到函数PacketSetBuff(I.PADAPTERAdapterObject,intdim),成功则返回TRUE,Dim是新的缓冲区的大小,当他被设定时,旧缓冲区中的数据将被丢弃,其中存储的数据包也会丢失。定位及初始化设备。函数PacketAllocatePacket(Void)将在内存中分配一个PACKET结构并返回一个指向他的指针,但这个结构的Buffer字段还没有设定,所以应再调用PaeketinitPacket函数来对其进行初始化。设置大的缓冲区可减少系统调用的次数,提高截获率,这里设置256k,PacketInitPack(1pPacket,(char*)buffer,256000)。截获并打印网络包。函数PacketReceivePacket(I.PADAPTERAdapter()biect,i。PPACKETlpPacket,B()OI。EANSync),他将接受(截获)一个包的集合。参数包括一个指向用来指定截包的网卡的ADAPTER结构指针,一个指向用来容纳包的PACKET结构,一个指出是同步还是异步方式操作的标记。当操作同步时,函数锁定程序;当操作异步时,函数不锁定程序,必须调用PacketWaitPacket过程来检查是否正确完成。最后,用函数PacketFreePacket(I。PPACKETlpPack—et)来释放由lpPacket指向的结构,用函数PacketClose—Adapter(LPADAPTERlpAdapter)来释放ADAPTER结构lpAdapter,并关闭网卡指针。用函数PrintPackets()来打印数据报。参考文献[1]杨铭.网络安全初探EJ3.中国科技信息,2005(15):25.E2]刘文涛.全开发包详解[M].北京:电子工业出版社,2005.[3][美]WilliamRobison/C#开发人员手册[M].北京:电子工业出版社,2000.作者简介陈旭男.1979年出生,宁夏银)li人,西北第二民族学院网络管理员。主要研究方向为计算机信息安全。唐莉君女,1980年出生,宁夏银川人,宁夏大学教师。主要研究方向为计算机软件与应用。r”““””“””“。“““’“”“‘””“““’””’’“”“’”“‘“””””“…”““””““。”“”“”“”““““““”’“。”““”““””‘i补订、邮购启事i;亲爱的读者:;;如果您错过了邮局征订《现代电子技术》杂志的机会,清直接汇款至《现代电子技术》发行部,我们会及时将;!每期杂志直接邮到您的手中。每期杂志订价15元,全年(24期)订价360元。2003~2006年合订本180元/本i:(含挂号费)。!;征订热线:029—85393376联系人:薛进良;丢...¨.¨..u.¨。。¨..¨.¨。儿.。.¨...¨.¨¨.。.¨,¨.¨。。。。.¨,...¨.¨..¨。.¨。.¨.。.¨。.。.¨。。.Ⅵ.¨。.¨¨...120
阅读此文(图):
点击此处在线翻阅