zoukankan      html  css  js  c++  java
  • 用函数SendARP()获取局域网计算机的MAC地址

    sendARP

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

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

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

    该函数有一个缺点

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

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

     
     
    UpdateData(TRUE);
     if(m_strAddr.IsEmpty())
     {
      AfxMessageBox("请填入要查找MAC地址的主机IP地址");
      return;
     }
     unsigned long ulAddr = inet_addr(m_strAddr);
     unsigned long ulMAC[2];
     unsigned long ulLen = 6;
     DWORD dwRetVal = SendARP(ulAddr, 0, ulMAC, &ulLen);
     if(dwRetVal == NO_ERROR)
     {
      size_t i, j;
            char * szMac = new char[ulLen*3];
            PBYTE pbHexMac = (PBYTE)ulMAC;
      for (i = 0, j = 0; i < ulLen - 1; ++i)
      {
                j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
            }
      sprintf (szMac + j, "%02X", pbHexMac[i]);
      m_strMAC = szMac;
      delete [] szMac;
     }
     UpdateData(FALSE);
  • 相关阅读:
    Alluxio部署(local模式)
    spring boot热部署
    zeppelin部署
    hbase集群搭建
    spark集群模式
    spark单机模式
    ssh免密码登录配置
    error: not found: value sc
    sublime插件
    sublime和webstorm安装zencoding
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243479.html
Copyright © 2011-2022 走看看