2

ネットワークに到達する前に DHCPv6 パケットを動的に変更する必要があるアプリケーションを構築しています。私は、DHCPv6 ベンダー オプションを使用してかなり独自の作業を行っています。送信される前に、これらのオプションをメモリ内で調べて変更する機能が必要です。

Microsoft のサンプル コードを変更することで、Winsock の上に概念実証のレイヤード サービス プロバイダーを構築しました。発信 HTTP パケットを傍受し、リファラー エージェントを面白いものに変更し、途中でパケットを送信します。Wireshark で検証され、うまく機能します。

LSP が TCP/IPv4 ではなく UDP/IPv6 の上にチェーンされるように、インストーラー コードを変更するのも簡単でした。今では、デバッガーが接続されているため、DHCP サーバーにつながるスタックでコールバックを取得していることがわかります。ただし、メモリ内のバッファが表示されなくなりました。

WSPSend接続のないプロトコルを使用しているため、呼び出されWSPConnectません。これは理にかなっています。で一貫したコールバックを取得しますが、HTTP プロトタイプに発信パケットを表すバッファーが含まれてWSPSendToいたメンバーは.lpBuffersNULL

私はこれを完全に間違った方法で行っていますか、それともオーバーライドする必要がある別の Winsock 操作がありますか? LSP が間違った方法である場合は、喜んで別の方向に進みますが、外部ライブラリはこのアプリケーションにとって非常に難しいものです。そうでない場合は、Winpcap を検討しています。

編集:うわー、これはずっと前のことです。私の後ろに来る人にとって、これは最終的にうまくいきました. 恥ずかしいことに、デバッガーで正しいデータを表示できない最適化を使用してコンパイルしていたことが問題でした。怠け者になるのをやめてバイトをファイルにダンプしたところ、すべてがうまくいっていることがわかりました。

4

1 に答える 1

0

LSP は Winsock トラフィックのみをインターセプトできます。DHCP は下位レイヤーにあり、これを行うには別のテクノロジーが必要です。たとえば、NDIS、TDI (Win8 では機能しません) または WFP (XP では機能しません)。

于 2012-10-18T13:33:37.907 に答える