1

プロジェクトの一環として、HTTP リクエストを含む IP パケットを Google に送信しようとしています。Winpcap ライブラリと VC++ を使用しています。現在、TCP 3 ウェイ ハンドシェーピング パケットは完了していますが、TCP ACK パケットを送信した後、実際の HTTP 要求パケットを送信することができません。Wireshark を使用してパケットをキャプチャすると、このパケットは「再構成された PDU の TCP セグメント」とマークされます。プロトコル列も「HTTP」ではなく「TCP」です。どうしたの?この方法で HTTP パケットを送信するにはどうすればよいですか?

4

4 に答える 4

2

あなたは必ずしも何か悪いことをしているわけではありません。

デフォルトでは、WiresharkはTCPデータをより高いレベルのプロトコルハンドラー(この場合は、HTTP要求と応答全体を再構築しようとするもの)に渡します。再構成されたメッセージをシーケンスの最後のパケットに添付し、他のパケットに「再構成されたPDUのTCPセグメント」というラベルを付けます。

代替テキスト

この再構成機能を無効にして、個々のパケットを調べることができます。

  • 編集->設定->プロトコル->TCP
  • [サブディセクタにTCPストリームの再構築を許可する]のチェックを外します
于 2010-11-20T01:20:39.747 に答える
1

これを拡張することを計画している場合は、これを試す前にHTTPプロトコルの基礎を学ぶことを強くお勧めします。rawソケットを実行し、getリクエストをスローするのは面倒です。いくつかのソースコードを読んでください。

しかし、私はpcapのポイントを実際には理解していません。実際のソケットをコーディングする必要がない場合は、Wininetライブラリを使用できるはずです。Wininetlib

ただし、rawソケットをコーディングしたい場合は、先に進んでwinsocksを使用します。HTTPとTCPの違いは、理解するのが難しい人もいます。HTTPはTCPに基づいているため、技術的にはすべて同じであり、TCPは文字通り何千ものアプリケーションに使用されます。コンピューターの接続のほとんどはTCPです。

HTTPリクエストを送信するためにpcapプログラムを使用してMITM攻撃として接続を傍受しようとしている場合は、おそらくPcapでのプログラミングを学ぶでしょう。これについては、このチュートリアルなど、多数のチュートリアルがあります。

PS:初心者には理解するのが非常に難しいので、winsocksチュートリアルを調べてください。また、winpcapはすべてのシステムでサポートされているわけではなく、(場合によっては)インストールが面倒になる可能性があります。正直なところ、これを行うにはwinsocksを使用する方がよいでしょう。Wininetにはもっと多くのサポートがあり、私は(これについては私を抱きしめないでください)すべてのW2K +ビルドにwininetがあると信じています。したがって、互換性(私はあなたにとって実際には問題ではないと思います)の問題については、wininetを使用しますまたはwinsocks。

于 2010-11-20T04:29:32.520 に答える
1

おそらく、リクエストを2回終了していません\r\n

文字列を送信するGET / HTTP/1.0\r\nと、パケットは受信されません。

次の文字列を送信する必要があります:GET / HTTP/1.0\r\n\r\n

于 2011-09-15T04:31:27.017 に答える
1

WinPCapを使用してパケットを送信するのはなぜですか?代わりに通常のソケットを使用する必要があります。より良いのは、curlなどのHTTPプロトコルを実装するソケットライブラリを使用するか、Microsoft独自のWinInetまたはWinHTTPAPIを使用することです。

于 2010-11-20T01:18:47.100 に答える