2011-09-15 21 views
5

C#でrawソケットを送信するアプリケーションを作成しようとしています。私はC/C++で多くの経験を持っていないので、C#を好むでしょう。私はC#のrawソケットのいくつかのオプションを見つけましたが、ACK、SYN、PSH、FINなどのフラグを設定することはできません。RAWソケット - C# - フラグを設定する

ヒントをいただければ幸いです。

更新: 私はファイアウォールをテストするためのツールを作成しようとしていますが、私は状態のパケット、異なるフラグを持つパケットを送りたいと思います。私はWin 2008を使用していますが、私が読んだ限りでは、その上にrawソケットを作成できます。私は必要に応じてC/C++に頼りますが、これまでのところそれは見た目です。

さらにアップデート: SharpPcapはよく見えますが、v4.0にはソースがないようですが、3.5のみです。私は、ドキュメントが完成していないので、試してみるつもりです。誰もそれを以前に使ったことがありますか?

最終編集: SharpPcapは上手く見えます!それは私が必要としていることをやっている!私は.NETの達人ではないので、それはうまくキャプチャしている、私はちょうどキャプチャデリゲートの部分からパケットを送信することはできませんので、フォローアップの質問を投稿します。

ありがとうございました!

+0

Cソケットでさえ、ACK、SYN、...レベルまで下がることはありません。あなたは何をしようとしているのですか? – LueTm

+0

@ロキ:あなたはすでに彼の答えを受け入れているので、ライアンSにポイントを与えることを検討してください。これは、後で尋ねると、他のユーザーがあなたの質問に答えることを促します。 :) –

答えて

3

チェックアウトSharpPcap

の説明によると:

SharpPcapは有名なのpcap/WinPcapのライブラリに基づいて、.NET環境のためのクロスプラットフォームのパケットキャプチャのフレームワークです。 C#やVB.NETなどの.NET言語を使用してパケットをキャプチャ、注入、解析、ビルドするためのAPIを提供します。

これは内部的にWinPcapドライバを使用しているため、独自のIP/TCPヘッダーで未処理のパケットを構築できます。

0

レベルを下げるには、SocketSocketType.RawProtocolType.IPで作成します。しかし、私はACK、SYNなどを表すパケットを手動で作成しなければならないと考えています。したがって、RFCドキュメントを少し読んでください。 :)

あなたの特定のニーズについては、Web上のリソースを見つけることができませんでしたが、これはどのようにが実装されているかを読む価値があるでしょう。少なくとも、そのレベルのrawソケットをどのように操作するかについてのいくつかのアイデアを提供します。

編集:Mystere Manが指摘したように、これはデスクトップ版のWindowsでは不可能です。ただし、これはサーバーのバージョンで動作するはずです。ここでMicrosoftからの公式声明だ:rawソケット上

制限は、Windows 7、Windows Vistaでは、Windows XP Service Pack 2の(SP2)、およびサービスパック3と のWindows XP(SP3)で

、 rawソケットを介してトラフィックを送信する機能は、いくつかの方法で制限されています:

  • TCPデータをrawソケットを介して送信することはできません。
  • 無効な送信元アドレスを持つUDPデータグラムは、 rawソケットで送信できません。発信UDPデータグラムのIP送信元アドレスは、ネットワークインターフェイス上に が存在する必要があります。この変更 は、悪意のあるコードが分散した サービス拒否攻撃を作成する能力を制限し、偽装された パケット(偽造された送信元IPアドレスを持つTCP/IPパケット)を送信する機能を制限します。
  • IPPROTO_TCP プロトコルのrawソケットを使用したbind関数の呼び出しは許可されていません。

生ソケットと結合する機能は、他の プロトコル(例えばIPPROTO_IP、IPPROTO_UDP、又はIPPROTO_SCTP)に許可されています。

上記制限は、Windows Server 2008 R2、 Windows Server 2008、Windows Server 2003、またはWindows XP SP2より前のバージョンの オペレーティングシステムには適用されません。

1

短い回答、デスクトップ版のウィンドウでは、できません。 Wikipediaから

MicrosoftがWinsockのインタフェースに実装さrawソケットのサポートを2001年にWindows XPをリリースしたとき、メディアはrawソケットは、TCPリセット攻撃を実行するためにハッカーへの使用が唯一であることを主張するのMicrosoftを批判しました。 Windows XPのリリースから3年後、マイクロソフトは静かにWinsockのrawソケットサポートを非リムーバブルな修正プログラムで制限し、それらを使用するアプリケーションのサポートや回避策を提供しませんでした。