SendARP函数用法

来源:互联网 发布:凡科自助建站破解源码 编辑:程序博客网 时间:2024/06/02 04:18

这个函数用来发送ARP数据包并在定义的MAC缓冲区中返回定义的IP对应的MAC地址

SendARP(
    IPAddr DestIP,
    IPAddr SrcIP,
    PULONG pMacAddr,
    PULONG PhyAddrLen
    );

第一个参数是IP地址的网络字节顺序,而不是一个指针,当初我就是赋值成指针而使得获取不了MAC地址。

第二个参数填0就可以

第三个参数是MAC缓冲区指针

第四个参数是一个指向一个DWORD型数值为6的指针

返回值:

31 说明对方没有开机,我们的函数检测不到它,

1784 说明的给函数的最后一个参数的值是0,或你的给的值与你给的缓存区大小不符合。

如果返回31不在线,则最后一个参数指针指向的值赋值为0

给一个列子:

attackip是已经获得的主机字节顺序的IP地址!

char attackmac[6]="\x0";
DWORD pl=6;
htonl(*(DWORD *)attackip);
_asm
{
   mov dword ptr [attackip],eax
}
SendARP(*(DWORD *)attackip,0,(DWORD *)attackmac,&pl);

该函数有一个缺点:

该函数本质上就是向目标主机发送一个ARP请求包,然后得到应答包来更新MAC,但是ARP请求包里的发送端IP和MAC是本机的实际IP和MAC,这样对方arp -a查看缓存表时记录里就有我的IP-MAC映射记录,容易知道有人在扫描其机器,或者是ARP病毒也可能。

解决该函数问题就是自己伪造发包,但是MAC地址必须对,否则应答包不会发送到本机~



from:http://hi.baidu.com/csacer/item/b9c2d3dda0f6d4f592a974b3

原创粉丝点击