WinPcap

1、什麼是WinPcap網絡

WinPcap是一個基於Win32平臺的,用於捕獲網絡數據包並進行分析的開源庫.socket

大多數網絡應用程序經過被普遍使用的操做系統元件來訪問網絡,好比sockets。  這是一種簡單的實現方式,由於操做系統已經妥善處理了底層具體實現細節(好比協議處理,封裝數據包等等),而且提供了一個與讀寫文件相似的,使人熟悉的接口。ide

然而,有些時候,這種「簡單的方式」並不能知足任務的需求,由於有些應用程序須要直接訪問網絡中的數據包。也就是說,那些應用程序須要訪問原始數據包,即沒有被操做系統利用網絡協議處理過的數據包。工具

WinPcap產生的目的,就是爲Win32應用程序提供這種訪問方式; WinPcap提供瞭如下功能測試

  • 捕獲原始數據包,不管它是發往某臺機器的,仍是在其餘設備(共享媒介)上進行交換的spa

  • 在數據包發送給某應用程序前,根據用戶指定的規則過濾數據包操作系統

  • 將原始數據包經過網絡發送出去3d

  • 收集並統計網絡流量信息調試

以上這些功能須要藉助安裝在Win32內核中的網絡設備驅動程序才能實現,再加上幾個動態連接庫DLL。blog

2、WinPcap的配置步驟

一、下載Microsoft Visual Studio 2010,打開

wKiom1gPCPKhYJ39AAARLANIxns371.png

首界面以下

wKioL1gPCS6x7TlbAADbYOz6Q5Q185.png

二、將這個文件保存一下路徑

wKioL1gPCsPxCQXlAAAKxBS7flE599.png

三、在軟件中具體配置以下:

項目-->**屬性(alt+F7)

配置屬性-->清單工具-->輸入和輸出-->嵌入清單-->否

項目-->**屬性(alt+F7)

配置屬性-->C/C++-->常規-->附加包含目錄-->


項目-->**屬性(alt+F7)

配置屬性-->連接器-->常規-->附加庫目錄-->


項目-->**屬性(alt+F7)

配置屬性-->連接器-->輸入-->附加依賴項-->補充「;Packet.lib;wpcap.lib」


項目-->**屬性(alt+F7)

配置屬性-->C/C++-->預處理器-->預處理器定義-->補充「;HAVE_REMOTE」

四、配置完以後複製一行代碼測試結果,代碼以下:

// ListInterface.cpp : 定義控制檯應用程序的入口點。

//


#include "stdafx.h"

#include "pcap.h"



int _tmain(int argc, _TCHAR* argv[])

{


    pcap_if_t *alldevs;

    pcap_if_t *d;

    int i=0;

    char errbuf[PCAP_ERRBUF_SIZE];

    

    /* 獲取本地機器設備列表 */

    if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)

    {

        fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);

        exit(1);

    }

    

    /* 打印列表 */

    for(d= alldevs; d != NULL; d= d->next)

    {

        printf("%d. %s\n", ++i, d->name);

        if (d->description)

            printf(" (%s)\n", d->description);

        else

            printf(" (No description available)\n");

    }

    

    if (i == 0)

    {

        printf("\nNo interfaces found! Make sure WinPcap is installed.\n");

        return 0;

    }


    /* 再也不須要設備列表了,釋放它 */

    pcap_freealldevs(alldevs);



}

五、點擊調試運行,如出現如下界面:

wKioL1gPC_TSiVg4AAAdogXbzgU694.png

就說明測試成功。

相關文章
相關標籤/搜索