質問

カスタムパケットを作成する必要があるプロジェクトを行っています。つまり、各パケットヘッダーを制御する必要があります。ソケットを使用してこれをやろうとしています。基本的に、私がする必要があるのはこれです:

SOCKET s = socket(PF_UNSPEC, SOCK_RAW, ethernet_type);

Ethernet_Typeは、0xaaaaのようなカスタマイズされた非標準のものです。 htons()を使用しています。また、WinpCapを使用しないことが非常に好ましいです。

現在、私はエラー10043を取得しており、プロトコルはサポートされていません。

エラーメッセージは、プロトコルをシステムに構成できることを示唆しているようですが、それを行う方法はわかりません。

それは言う:

プロトコルはサポートされていません。要求されたプロトコルはシステムに構成されていないか、その実装は存在しません。たとえば、ソケットコールはsock_dgramソケットを要求しますが、ストリームプロトコルを指定します。

ここにはいくつかの異なる問題があるので、誰かが何らかの入力を持っているなら、本当に感謝しています。

役に立ちましたか?

解決

によると これらは 記事, 、Microsoftは、取り外し不可能なHotfixでWindowsから生のソケットサポートを削除しました。したがって、別のOSに切り替えたくない限り、運が悪いかもしれません。

他のヒント

ソケット呼び出しに新しいプロトコルを追加することは非常に難しいことだと思います。ソケットがその呼び出しをサポートすることを確認する必要があります。ソケット機能を再コンパイルする必要があると思いますが、Windowsの下で簡単に可能だとは思いません。

カスタムパケットを作成しても、新しいプロトコルを作成する必要はありません

生のソケットを指定する正しい方法はこのようなものだと思います

SOCKET s;
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);

あなたがあなたの変数名のように生のイーサネットを実際に再生しようとしているなら、あなたはwinpcapドライバーを使用するか、書くかのどちらか あなた自身のドライバー

生のイーサネットには別の「簡単な」ソリューションはないと思います。 winpcapはかなり簡単なので、チェックアウトしたいかもしれません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top