程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> (轉)詳談調用winpcap驅動寫arp多功能工具

(轉)詳談調用winpcap驅動寫arp多功能工具

編輯:.NET實例教程
詳談調用winpcap驅動寫arp多功能工具

Author: TOo2y[原創]
E-mail: [email protected]
Homepage: www.safechina.Net
Date: 11-9-2002

一 winpcap驅動簡介
二 Packet.dll相關數據結構及函數
三 T-ARP功能及原理介紹
四 T-ARP主要代碼分析
五 T-ARP源代碼

一)winpcap驅動簡介
    winpcap(windows packet capture)是Windows平台下一個免費,公共的網絡訪問系統。開發winpcap這個項目的目的在於為win32應用程序提供訪問網絡底層的能力。它提供了以下的各項功能:
    1> 捕獲原始數據報,包括在共享網絡上各主機發送/接收的以及相互之間交換的數據報;
    2> 在數據報發往應用程序之前,按照自定義的規則將某些特殊的數據報過濾掉;
    3> 在網絡上發送原始的數據報;
    4> 收集網絡通信過程中的統計信息。

    winpcap的主要功能在於獨立於主機協議(如TCP-IP)而發送和接收原始數據報。也就是說,winpcap不能阻塞,過濾或控制其他應用程序數據報的發收,它僅僅只是監聽共享網絡上傳送的數據報。因此,它不能用於QoS調度程序或個人防火牆。

    目前,winpcap開發的主要對象是windows NT/2000/XP,這主要是因為在使用winpcap的用戶中只有一小部分是僅使用Windows 95/98/Me,並且M$也已經放棄了對win9x的開發。因此本文相關的程序T-ARP也是面向NT/2000/XP用戶的。其實winpcap中的面向9x系統的概念和NT系統的非常相似,只是在某些實現上有點差異,比如說9x只支持ANSI編碼,而NT系統則提倡使用Unicode編碼。

    本文討論的是packet.dll所提供的各種函數,因為它們完全可以實現本文所希望的各項要求。但是如果你有其他特別的或更高級的要求,winpcap也提供了另一個動態連接庫wpcap.dll。雖然wpcap.dll依靠於packet.dll,但是它卻提供了一種更簡單,直接,有力的方法來更好的利用編程環境。比如捕獲一個數據報,創建一個數據報過濾裝置或將監聽到的數據報轉存到某個文件等,wpcap.dll都會為你提供更加安全的實現方法。

二)Packet.dll相關數據結構及函數  
    本文的目的之一在於介紹如何利用winpcap驅動寫ARP工具,因此有必要介紹一些相關的數據結構和函數,要不然看著一行行代碼和函數,也許會有些不知所雲。

    首先介紹一些相關的數據結構:
      1. typedef struct _ADAPTER  ADAPTER  //描述一個網絡適配器;
      2. typedef struct _PACKET PACKET     //描述一組網絡數據報的結構;
      3. typedef struct NetType NetType    //描述網絡類型的數據結構;
      4. typedef struct npf_if_addr npf_if_addr  //描述一個網絡適配器的ip地址;
      5. struct bpf_hdr   //數據報頭部;
      6. struct bpf_stat  //當前捕獲數據報的統計信息。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved