簡體   English   中英

在Windows中使用C進行數據包捕獲

[英]Packet capturing with C in Windows

我對C編程語言和數據包捕獲相當新。 現在我正在編寫一個簡單的程序(使用Visual Studio 2010 express)來解碼數據包跟蹤捕獲文件。 我閱讀了很多指南,但大多數都是針對linux / unix的。 我設法包括wpcap庫,但現在我需要在系統中定義的結構,這些結構旨在使解碼Internet包頭更容易。

struct ether_header in /usr/include/sys/ethernet.h
struct in_addr in /usr/include/netinet/in.h
struct ip in /usr/include/netinet/ip.h
struct udphdr in /usr/include/netinet/udp.h
struct tcphdr in /usr/include/netinet/tcp.h

到目前為止,我知道必須為in.h包含winsock2,但是對於ethernet,ip,tcp / udp呢? 我該怎么做來管理與這些標題相關的解碼? 是不是winsocket? 如果是的話,我在哪里可以找到使用哪種方法的簡單解釋?

操作系統:贏7

實際上,大多數這些頭文件最初都是為了使編寫BSD內核網絡堆棧更容易,而不是使嗅探器中的解碼包頭更容易; 由於歷史原因,它們出現在用戶程序中。

我建議將源代碼發送到最新版本的tcpdump或WinDump,並在其中創建相應頭文件的副本; ether.hip.hudp.htcp.h從tcpdump的/ WinDump的文件從BSD派生操作系統使得tcpdump的/ WinDump的不必依賴於操作系統提供這些頭或上取它提供了這些頭文件的特定版本(並非tcpdump / WinDump可以運行的所有操作系統都可以運行與tcpdump / WinDump配合使用的版本,其中一些版本需要tcpdump的特殊hackery,而另一些則根本不提供它們 - Windows例如,正如您所發現的那樣,根本不供應它們。

您可以從tcpdump.org獲取tcpdump源代碼,從winpcap.org獲取WinDump源代碼 (請參閱“WinDump 3.9.5源代碼下載”)。 WinDump源是一個ZIP文件,而不是一個gzip壓縮文件,因此在Windows上解壓縮可能更容易,並且可能有Windows CR-LF行結尾而不是UN * X LF行結尾,所以你可能想嘗試WinDump版本。

即使你正在使用Windows,因為你正在使用libpcap,你可能會從Unix網絡編程卷獲得一些里程數 1TCP / IP說明Vol。 1.你可以購買這些新的或二手關閉亞馬遜的市場。 這將解釋標題和其他相關項目。

我只包括這些(按此順序)

#include <winsock2.h>
#include <windows.h>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM