• 用函数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);
  • 相关阅读:
    Python爬虫爬取网页图片
    Python爬虫爬取贴吧的帖子内容
    Android导入AS工程
    Arcgis for Silverlight学习(一)
    Silverlight学习笔记之页面跳转
    视频信号的垂直消隐和水平消隐[转]
    【DM642学习笔记八】色度重采样
    java从入门到卖肠粉系列
    [Selenium] Automation Test Manual(Selenium)
    [Selenium] Selenium私房菜(新手入门教程)
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243479.html
Copyright © 2020-2023  润新知