国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

16.2 ARP 主機探測技術(shù)

這篇具有很好參考價值的文章主要介紹了16.2 ARP 主機探測技術(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ARP (Address Resolution Protocol,地址解析協(xié)議),是一種用于將 IP 地址轉(zhuǎn)換為物理地址(MAC地址)的協(xié)議。它在 TCP/IP 協(xié)議棧中處于鏈路層,為了在局域網(wǎng)中能夠正確傳輸數(shù)據(jù)包而設(shè)計,由協(xié)議數(shù)據(jù)單元和對應(yīng)的操作命令組成。ARP 既可以由操作系統(tǒng)處理,也可以由網(wǎng)卡處理。

該協(xié)議的作用是通過一個局域網(wǎng)上的互聯(lián)網(wǎng)協(xié)議(IP)地址來查詢對應(yīng)的物理硬件地址,如數(shù)據(jù)包發(fā)送到路由器時,ARP 協(xié)議將使用嵌入在數(shù)據(jù)包中的目的 IP 地址查找對應(yīng)的物理地址,路由器根據(jù)獲取的 MAC 地址轉(zhuǎn)發(fā)數(shù)據(jù)包到下一個網(wǎng)絡(luò)。

協(xié)議工作過程如下:

  • 主機A通過查找其ARP緩存表,比對目標(biāo)的IP地址是否存在于ARP緩存表中。
  • 如果目標(biāo)機器的IP地址不存在于本地ARP緩存表中,則主機A需要進行ARP請求過程,它廣播一個ARP請求。
  • 當(dāng)其他主機收到這個請求時,它會比對主機A設(shè)置的這個目標(biāo)IP地址和自己的IP地址是否一致。
  • 如果一致的話,說明被查詢的這個IP地址正是自己的IP地址,此時這個主機就會直接向主機A發(fā)送ARP響應(yīng)數(shù)據(jù)包。
  • 主機A在獲得了目標(biāo)主機的MAC地址信息之后,會把這個MAC地址信息存儲到自己的ARP緩存表中,以便以后再次使用。

ARP主機探測原理是通過發(fā)送 ARP 查詢報文,來獲取目標(biāo)主機的 MAC 地址,進而獲取目標(biāo)主機的 IP 地址。

主機探測的具體實現(xiàn)步驟如下:

  • 構(gòu)造一個ARP查詢報文,報文中的目標(biāo)IP地址為需要探測的主機IP地址,源IP地址為探測主機的IP地址,源MAC地址為探測主機網(wǎng)卡的MAC地址。
  • 發(fā)送ARP查詢報文。如果目標(biāo)主機在線,且相應(yīng)功能正常,它將返回一個ARP響應(yīng)報文,其中包含目標(biāo)主機的MAC地址。
  • 接收到ARP響應(yīng)報文之后,分析報文,從中提取出目標(biāo)主機的MAC地址和IP地址等信息。

Windows系統(tǒng)下,我們可以調(diào)用SendARP()函數(shù)實現(xiàn)ARP探測,該函數(shù)用于發(fā)送ARP請求到指定的 IP 地址,以獲取其 MAC 地址。該函數(shù)參數(shù)傳入目標(biāo) IP 地址時能夠返回對應(yīng) MAC 地址。

SendARP 函數(shù)原型如下:

DWORD SendARP(
    IN IPAddr DestIP,             // 目標(biāo) IP 地址
    IN IPAddr SrcIP,              // 源 IP 地址(可以為 0)
    OUT PULONG pMacAddr,          // 接收目標(biāo) MAC 地址
    IN OUT PULONG PhyAddrLen      // 接收目標(biāo) MAC 地址的緩沖區(qū)大小,單位為字節(jié)
);

該函數(shù)的第一個參數(shù)為目標(biāo)IP地址,第二個參數(shù)為本地主機IP地址(可以填 0),第三個參數(shù)為接收返回的目標(biāo) MAC 地址的指針,第四個參數(shù)為指向緩沖區(qū)大小的指針。

當(dāng)調(diào)用 SendARP() 函數(shù)時,如果目標(biāo) IP 地址是在同一物理網(wǎng)絡(luò)中,則返回目標(biāo) IP 地址對應(yīng)的 MAC 地址,并且函數(shù)返回值為 NO_ERROR。如果目標(biāo) IP 地址無效,或者無法獲得對應(yīng)的 MAC 地址,則函數(shù)返回值為錯誤代碼,應(yīng)該根據(jù)錯誤代碼來進行處理。

如下代碼實現(xiàn)了掃描局域網(wǎng)中指定ARP主機地址的功能。代碼主要使用了SendARP()函數(shù)來查詢目標(biāo)主機的MAC地址,并將結(jié)果輸出。具體實現(xiàn)步驟如下:

#include <stdio.h>
#include <winsock2.h>
#include <IPHlpApi.h>

#pragma comment (lib,"ws2_32.lib")  
#pragma comment (lib,"iphlpapi.lib")

// 掃描局域網(wǎng)中指定ARP主機地址
void ArpScan(char *LocalIP,char *TargetIP)
{
  ULONG localIP = inet_addr(LocalIP);
  ULONG targetIP = inet_addr(TargetIP);

  ULONG macBuf[2] = { 0 };
  ULONG macLen = 6;

  DWORD retValue = SendARP(targetIP, localIP, macBuf, &macLen);

  unsigned char *mac = (unsigned char*)macBuf;
  printf("IP: %-12s --> MAC: ", TargetIP);
  for (int x = 0; x < macLen; x++)
  {
    printf("%.2X", mac[x]);
    if (x != macLen - 1)
      printf("-");
  }
  printf("\n");
}

int main(int argc,char * argv[])
{
  for (int x = 1; x < 100; x++)
  {
    char target[32] = { 0 };
    sprintf(target, "192.168.1.%d", x);
    ArpScan("192.168.1.2", target);
  }
  system("pause");
  return 0;
}

根據(jù)端口探測中所使用的方法,實現(xiàn)多線程也很容易,如下代碼實現(xiàn)了使用多線程方式掃描局域網(wǎng)內(nèi)存活的主機。代碼中使用 SendARP() 函數(shù)來探測目標(biāo)主機是否存活,并使用多線程方式來加快掃描速度,同時使用臨界區(qū)來控制多線程條件下的輸出效果。

具體實現(xiàn)過程如下:

  • 定義 checkActive() 函數(shù),該函數(shù)使用 SendARP() 函數(shù)來判斷目標(biāo)主機是否存活。如果目標(biāo)主機存活,則在屏幕上輸出其 IPMAC 地址。

  • 定義 threadProc() 函數(shù)來作為多線程的回調(diào)函數(shù)。該函數(shù)接收一臺主機的 IP 地址,并調(diào)用 checkActive() 函數(shù)來探測該主機是否在線。

  • main() 函數(shù)中,定義開始和結(jié)束的 IP 地址,并使用 for 循環(huán)遍歷這個 IP 地址段。在循環(huán)中,使用 CreateThread() 函數(shù)來創(chuàng)建多個線程,每個線程負(fù)責(zé)探測其中一臺主機是否在線。

  • checkActive() 函數(shù)中,多線程會涉及到在界面上的輸出,為了控制多線程在輸出上的次序,使用了 EnterCriticalSection()LeaveCriticalSection() 函數(shù)來表示臨界區(qū),只有進入臨界區(qū)的線程能夠打印輸出,其他線程需要等待進入臨界區(qū)。

#include <stdio.h>
#include <winsock2.h>
#include <iphlpapi.h>

#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"iphlpapi.lib")

// 臨界區(qū),控制多線程打印順序
CRITICAL_SECTION g_critical;

bool checkActive(in_addr ip)
{
  ULONG dstMac[2] = { 0 };
  memset(dstMac, 0xff, sizeof(dstMac));
  ULONG size = 6;
  HRESULT re = SendARP(ip.S_un.S_addr, 0, dstMac, &size);

  if (re == NO_ERROR && size == 6)
  {
    // 線程進入臨界區(qū),其他線程不能再進入,控制多線程在界面上的打印順序
    EnterCriticalSection(&g_critical);

    printf("[+] 發(fā)現(xiàn)存活主機: %-15s ---> MAC :", inet_ntoa(ip));
    BYTE *bPhysAddr = (BYTE *)& dstMac;
    for (int i = 0; i < (int)size; i++)
    {
      // 如果是mac地址的最后一段,就輸出換行
      if (i == (size - 1))
      {
        printf("%.2X\n", (int)bPhysAddr[i]);
      }
      else
      {
        // 否則沒有到最后一段,依舊輸出,但不換行
        printf("%.2X-", (int)bPhysAddr[i]);
      }
    }

    // 線程離開臨界區(qū),其他線程能夠繼續(xù)進入
    LeaveCriticalSection(&g_critical);
    return true;
  }
  else
  {
    return false;
  }
}

// 啟動多線程
DWORD WINAPI threadProc(LPVOID lpThreadParameter)
{
  in_addr ip;
  ip.S_un.S_addr = (ULONG)lpThreadParameter;
  checkActive(ip);
  return 0;
}

int main(int argc, char *argv[])
{
  in_addr ip_start, ip_end;

  // 定義開始IP
  ip_start.S_un.S_addr = inet_addr("192.168.9.1");

  // 定義結(jié)束IP
  ip_end.S_un.S_addr = inet_addr("192.168.9.254");

  // 循環(huán)探測主機

  //初始臨界區(qū)
  InitializeCriticalSection(&g_critical);

  for (in_addr ip = ip_start; ip.S_un.S_addr < ip_end.S_un.S_addr; ip.S_un.S_un_b.s_b4++)
  {
    printf("探測: %s \r", inet_ntoa(ip));
    CreateThread(NULL, 0, threadProc, (LPVOID)ip.S_un.S_addr, 0, 0);
  }

  system("pause");
  return 0;
}

編譯并運行上述代碼片段,則會探測192.168.9.1192.168.9.254網(wǎng)段內(nèi)存活的主機,并輸出該主機的MAC信息,輸出效果圖如下所示;

16.2 ARP 主機探測技術(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-710930.html

到了這里,關(guān)于16.2 ARP 主機探測技術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 15.2 主機探測與路由追蹤

    15.2 主機探測與路由追蹤

    Ping 使用 Internet 控制消息協(xié)議( ICMP )來測試主機之間的連接。當(dāng)用戶發(fā)送一個 ping 請求時,則對應(yīng)的發(fā)送一個 ICMP Echo 請求消息到目標(biāo)主機,并等待目標(biāo)主機回復(fù)一個 ICMP Echo 回應(yīng)消息。如果目標(biāo)主機接收到請求并且網(wǎng)絡(luò)連接正常,則會返回一個回應(yīng)消息,表示主機之間的網(wǎng)

    2024年02月08日
    瀏覽(18)
  • 主機探測與端口掃描-滲透測試模擬環(huán)境(2)

    本篇將介紹主機探測與端口掃描滲透模擬環(huán)境下整理的各類收集方法、各類工具技術(shù)使用的演示,閱讀后可用在工作上?。 往期系列文章: 滲透攻防環(huán)境搭建與攻防知識體系思維導(dǎo)圖 滲透模擬環(huán)境配置和工具介紹-滲透測試模擬環(huán)境(0)_luozhonghua2000的博客-CSDN博客 外圍信息搜集

    2024年02月06日
    瀏覽(18)
  • Kali使用Netdiscover探測局域網(wǎng)中存活主機

    Kali使用Netdiscover探測局域網(wǎng)中存活主機

    1、netdiscover介紹 Netdiscover 是一個主動/被動的ARP 偵查工具。使用Netdiscover工具可以在網(wǎng)絡(luò)上掃描IP地址,檢查在線主機或搜索為它們發(fā)送的ARP請求。 2、 主動模式:主動模式顧名思義就是主動的探測發(fā)現(xiàn)網(wǎng)絡(luò)內(nèi)主機,但是這種方式往往會引起網(wǎng)絡(luò)管理員的注意。 打開Kali終端,使用

    2024年02月02日
    瀏覽(35)
  • 內(nèi)網(wǎng)安全-信息收集-內(nèi)網(wǎng)資源探測-掃描內(nèi)網(wǎng)存活主機

    內(nèi)網(wǎng)安全-信息收集-內(nèi)網(wǎng)資源探測-掃描內(nèi)網(wǎng)存活主機

    簡介 基于ICMP發(fā)現(xiàn)存活主機 for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.199.%I| findstr \\\"TTL=\\\" 或者也可以使用nmap: nmap -sP 192.168.204.1/24 基于NetBlOS(網(wǎng)絡(luò)基本輸入/輸出系統(tǒng))協(xié)議發(fā)現(xiàn)存活主機 nbtscan-1.0.35.exe 192.168.199.1/24 基于UDP發(fā)現(xiàn)存活主機 us -mU 192.168.204.1/24 TCP是有連接的協(xié)議,而UDP是

    2024年02月03日
    瀏覽(18)
  • Ubuntu 18.04 and 16.04 How to change the resolution

    1. open 2. Find 3. Replace the above line by the following line 4. update command 5. restart your system

    2024年01月21日
    瀏覽(49)
  • 海底光纜位置探測技術(shù)的應(yīng)用概述

    海底光纜位置探測技術(shù)的應(yīng)用概述

    ? ? ?海底光纜運行在地質(zhì)環(huán)境復(fù)雜的海洋環(huán)境中,地震、海床塌陷、滑坡、洋流變化、海洋生物及船只拋錨都有可能造成光纜斷裂、破損,影響光纜的安全運行。海底光纜一旦遭受損壞,其造成的經(jīng)濟損失無法估量。因此在海洋開發(fā)工程實施前,需對工程范圍內(nèi)存在光纜位

    2024年02月09日
    瀏覽(21)
  • 安全事件分析思路及邏輯_當(dāng)菜省公司安全專業(yè)發(fā)現(xiàn)一個告警,該告警中顯示一臺wn主機頻繁的通過445端口探測其(1)

    安全事件分析思路及邏輯_當(dāng)菜省公司安全專業(yè)發(fā)現(xiàn)一個告警,該告警中顯示一臺wn主機頻繁的通過445端口探測其(1)

    ? 誤報排除方法:如果短時間內(nèi)掃描大量不存在的web頁面(人工達不到的速度,比如上面一分多鐘達到208次)那就很有可能是在探 測web目錄是否存在一些中間件 ? 查看掃描的部分路徑是否一些常見中間件的url,比如上面一直掃描web是否存在mysql的管理工具,如果掃描到 my

    2024年04月27日
    瀏覽(18)
  • 2023國賽 B題論文 基于多波束測深技術(shù)的海洋探測建模與分析

    2023國賽 B題論文 基于多波束測深技術(shù)的海洋探測建模與分析

    因為一些不可抗力,下面僅展示小部分論文,其余看文末 1.1 問題背景 海洋測深是測定水體深度與海底地形的重要任務(wù),有兩種主要技術(shù):單波束測深與多波束測深。單波束適用于簡單任務(wù),但多波束可提供更精確的地形數(shù)據(jù)。多波束系統(tǒng)的關(guān)鍵在于覆蓋寬度與重疊率的設(shè)計

    2024年02月09日
    瀏覽(19)
  • 負(fù)載均衡器 OpenELB ARP 欺騙技術(shù)解析

    作者:大飛哥,視源電子運維工程師,KubeSphere 用戶委員會廣州站站長,KubeSphere Ambassador。 K8S 對集群外暴露服務(wù)有三種方式:NodePort,Ingress 和 Loadbalancer。NodePort 用于暴露 TCP 服務(wù)(4 層),但限于對集群節(jié)點主機端口的占用,不適合大規(guī)模使用;Ingress 用于暴露 HTTP 服務(wù)(7 層),

    2024年02月01日
    瀏覽(15)
  • 網(wǎng)絡(luò)層&&IP協(xié)議的基本原理 數(shù)據(jù)鏈路層&&ARP協(xié)議 域名解析以及一些重要技術(shù)

    網(wǎng)絡(luò)層&&IP協(xié)議的基本原理 數(shù)據(jù)鏈路層&&ARP協(xié)議 域名解析以及一些重要技術(shù)

    網(wǎng)絡(luò)層作用:在復(fù)雜的網(wǎng)絡(luò)環(huán)境中確定一個合適的路徑。 tcp/ip協(xié)議,tcp解決可靠性與效率,ip提供在網(wǎng)絡(luò)中傳輸?shù)哪芰Α?傳輸層決定了單次向下交付數(shù)據(jù)包的大小。 IP(Internet Protocol)協(xié)議是一種網(wǎng)絡(luò)層協(xié)議,用于在互聯(lián)網(wǎng)上進行數(shù)據(jù)傳輸。它定義了數(shù)據(jù)如何在網(wǎng)絡(luò)中進行分

    2024年02月15日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包