3

私はCプログラミング言語とパケットキャプチャにかなり慣れていません。現在、パケットトレースキャプチャファイルをデコードするための簡単なプログラム(Visual Studio 2010 Expressを使用)を作成しています。私はいくつかのガイドを読みましたが、それらのほとんどはlinux/unix用です。私はなんとかwpcapライブラリを含めることができましたが、インターネットパケットヘッダーのデコードを容易にすることを目的としたシステムで定義された構造体が必要になりました。

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

これまで、winsock2をin.hに含める必要があることを理解していましたが、イーサネット、ip、tcp/udpについてはどうでしょうか。これらのヘッダーに関連するデコードを管理するにはどうすればよいですか?同じウィンソケットですか?もしそうなら、どの方法を使用するかについての簡単な説明はどこにありますか?

OS:Win 7

4

3 に答える 3

4

実際、これらのヘッダーのほとんどは、もともとBSDカーネルネットワークスタックの記述を容易にすることを目的としており、スニファでのパケットヘッダーのデコードを容易にすることを目的としていませんでした。それらは、歴史的な理由の一部として、ユーザープログラムに存在します。

ソースを最新バージョンのtcpdumpまたはWinDumpに取得し、それに対応するヘッダーファイルの独自のコピーを作成することをお勧めします。tcpdump / WinDumpのether.h、、、、およびファイルip.hはBSD派生のオペレーティングシステムから取得されるため、tcpdump / WinDumpは、これらのヘッダーを提供するオペレーティングシステムや、特定のバージョンのヘッダーを提供するオペレーティングシステムに依存する必要はありません(すべてではありません)。 tcpdump/WinDumpがtcpdump/WinDumpで適切に機能する供給バージョンを実行できるオペレーティングシステム。一部のオペレーティングシステムではtcpdumpに特別なハッカーが必要であり、その他のオペレーティングシステムではまったく供給されていません。たとえば、Windowsではまったく供給されていません。あなたが発見したように)。udp.htcp.h

tcpdumpソースはtcpdump.orgから、WinDumpソースはwinpcap.orgから入手できます(「WinDump3.9.5ソースコードのダウンロード」を参照)。WinDumpソースはgzip圧縮されたtarファイルではなくZIPファイルであるため、Windowsで解凍する方が簡単で、UN * XLF行末ではなくWindowsCR-LF行末がある可能性があるため、試してみてください。 WinDumpバージョン。

于 2011-11-24T09:39:17.493 に答える
1

Windowsで作業している場合でも、libpcapを使用しているため、Unix NetworkProgrammingvol。1およびTCP/IPの図解Vol。1. これらの新品または中古品をAmazonマーケットプレイスで購入できます。ヘッダーなどの関連項目について説明します。

于 2011-11-23T22:03:59.037 に答える
1

これらのみを(この順序で)含めます

#include <winsock2.h>
#include <windows.h>
于 2011-11-23T22:20:18.070 に答える