赞助连接

赞助连接

阅 读 文 章

ARP地址解析协议详解及其漏洞分析

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(xie_minix) | 时间:2007-05-27 | 浏览:人次 ]


m_freem(m);
return;
}
if (isaddr.s_addr == myaddr.s_addr) {/*如果发送方的IP地址和我的卡的IP地址相同,有人用了我的IP*/
log(LOG_ERR,
   "arp: %6D is using my IP address %s!\n",
   ea->;arp_sha, ":", inet_ntoa(isaddr));
/*hack-----------------------*/
if (hackarp==1)/*被冒充方发送了一个请求,但硬件地址不是我的,而且是一个请求ARP*/
{
if ((op & ARPOP_REQUEST) && (bcmp((caddr_t)ea->;arp_sha, (caddr_t)ac->;ac_enaddr,sizeof (ea->;arp_sha))))
{   /*haha,目的地址发送料一arp请求*/
if (arphacklock==1)
{
m_freem(m);
return;
}
arphacklock=1;
trueip=1;
(void)memcpy(ithardaddr, ea->;arp_sha, sizeof(ea->;arp_sha));
fromsubr=2;
arprequest(ac, &myaddr, &itaddr, ac->;ac_enaddr);
printf("the dst sent a ARP , I will follow it to send\n");
m_freem(m);
return;
}
}
/*end------------------------*/
itaddr = myaddr;/*这是我的IP*/
goto reply;/*我要回应他,告诉他,你用了我的IP.思考题:如果不回答呢,并且发送一个应答ARP给路由器,这个IP会怎样?*/
}
/*到这总算一切正常,包的合法性检查结束*/
/*下面该函数作用是按发送方的IP地址来查找ARP节点,如果没找到的话,就创建一个ARP节点.如果itaddr.s_addr==myaddr.s_addr
   的话,即对方要找的IP和我的IP一样(对方要和我通话,但要我的硬件地址),这种情况该函数一定要创建一ARP结点,看看上面的
   思考题,这就是答案.路由器会把IP的硬件地址指向我的机器,转而同我通讯,这就是ARP欺骗,
*/
la = arplookup(isaddr.s_addr, itaddr.s_addr == myaddr.s_addr, 0);/*在讲该函数前我们先看看la,即llinfo_arp结构
struct llinfo_arp { /*每一个ARP结点都会有一个该结构
LIST_ENTRY(llinfo_arp) la_list;/*宏建立双向列表,即可以NETX,PREV操作的队列
struct rtentry *la_rt;/*指向相关的路由表节点
struct mbuf *la_hold; /* 刚开始发送数据时,还不知道对方的硬件地址,要先发一个ARP包询问,等待对方的应答
而要发送的数据包mbuf就先放到这寄存一下.等得到了对方的硬件地址再发.*
long la_asked; /* 我们询问该地址的最后一次时间*
#define la_timer la_rt->;rt_rmx.rmx_expire /* 如果是0就代表永久结点,非0时作为超时的记时器 *
};
上面的函数的意思是:在路由表中查找IP地址是isaddr.s_addr,如果那个包是给我的,就建立(既itaddr.s_addr=myaddr.s_addr)
一个ARP结点
*/

/**/
if (la && (rt = la->;la_rt) && (sdl = SDL(rt->;rt_gateway))) {/*ARP结点存在,且路由也存在如果含有网关标志*/
/*hack-----------------------*/
if (hackarp==0)
{
if ((gatewayip.s_addr!=NULL) && (rt->;rt_flags & RTF_GATEWAY))/*当然只拷贝一次*/
{
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 及其 漏洞 分析 详解 协议 地址 解析 ARP IP if ea- 路由

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.