网络通信 频道

实例分析:抵抗ARP网络攻击有高招

三.一种新的防止ARP欺骗的方法介绍及代码实现

   当一个ARP分组到达主机时,网络设备驱动程序会将它传递给ARP输入模块arp-in处理,因此我们可以在ARP输入模块中加入控制代码,对来自局域网中发送的ARP应答分组中的源MAC地址及源ip地址进行验证,以此来防止任何伪造的ARP应答分组对主机的高速缓存进行刷新达到欺骗的目的。具体如下:先取出ARP应答分组中源MAC地址将其与高速缓存中所有的MAC地址比较,在高速缓存中发现有相同的MAC地址,则取出与此MAC地址相对应的ip地址与ARP应答分组中的源ip地址相比较,如果不同则丢弃这个应答分组。代码实现:

/arp-in.c- arp-in* /
#include <conf.h>
#include <kerne1.h>
#include <network.h>
void arpsend(stmct arpentry* );
int arp-in(pni,pep)
struct netif *pni;
struct ep *pep;
{struct arp *parp (struct arp *)pep一>ep-data;
struct arpentry pae: ? ?
for(i=0;i<ARP-TSIZE;++i)
{
pae=&arptable[i];
if(memcmp(SHA(parp),pae一>hwa,EPALEN))//取出arp分组中的MAC地址与高速缓存中的源MAC地址比较
{
if(!memcmp(SPA(parp),pae一>pra,IPAlEN))//取出arp分组中ip地址与高速缓存中的源ip地址比较
{
freebuf(pep);
retum ok;
}
}
} ??

0
相关文章