ARP实现收索局域网活动主机的有关问题
ARP实现收索局域网活动主机的问题我在网上看见利用ARP收索局域网主机的例子,自己稍加改动在VS2008调试运行
ARP实现收索局域网活动主机的问题
我在网上看见利用ARP收索局域网主机的例子,自己稍加改动在VS2008调试运行了,可是在以下的if语句处一直为假,导致不能打印出本机的MAC地址。请高手看看程序的问题出在哪里?网络源码地址为:http://xd03071149.blog.163.com/blog/static/12350636320123226475977/
while((res = pcap_next_ex(adhandle,&pkt_header,&pkt_data)) >= 0)
{
if(*(unsigned short *)(pkt_data + 12) == htons(ETH_ARP) && *(unsigned short*)(pkt_data + 20) == htons(ARP_REPLY) && *(unsigned long*)(pkt_data+38) == inet_addr("1270.0.0.2"))
{
for(i = 0; i < 6; i++)
{
ip_mac[i] = *(unsigned char *)(pkt_data + 22 + i);
printf("%02x",ip_mac[i]);
}
printf("\n");
break;
}
}
[解决办法]
inet_addr("1270.0.0.2"))
这个是怎么回事?
[解决办法]
+1 127.0.0.1 情何以堪
[解决办法]1L好眼力。
[解决办法]好像收到的数据中协议不是网络字节序,你试试将htons去掉,仅供参考。
[解决办法]比如本机ip为192.168.1.123
在cmd窗口中试执行以下命令:
for /L %d in (1,1,254) do start cmd /c "ping 192.168.1.%d -n 1 -w 500 >ping%d.txt"
然后查看文件ping1.txt,ping2.txt,...,ping254.txt的内容。
[解决办法]我的意思是这样也可以快速获得局域网中的活动主机的IP。
[解决办法]ARP 数据里不会有loopback的MAC&IP邦定的,127.0.0.1只是用于local loopback
还是去补补基本的网络知识吧
[解决办法]127.0.0.1 肯定不能获得本机MAC, MAC是和网卡绑定的.
最简单的dos命令: getmac, 你直接调用它, 再解析输出都简单的多.
更多方法, 参考:
http://www.codeguru.com/cpp/i-n/network/networkinformation/article.php/c5451/Three-ways-to-get-your-MAC-address.htm