用函數SendARP()擷取區域網路電腦的MAC地址

來源:互聯網
上載者:User

標籤:

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);

用函數SendARP()擷取區域網路電腦的MAC地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.