私のプロジェクトの一環として、HTTPリクエストを含むIPパケットをGoogleに送信しようとしています。私はWinpcapライブラリとVC++を使用しています。現在、TCPの3ウェイハンドシェーピングパケットは処理されていますが、TCP ACKパケットを送信した後に実際のHTTP要求パケットを送信することに固執しています。 wiresharkを使用してパケットをキャプチャすると、このパケットは「再構成されたPDUのTCPセグメント」とマークされます。プロトコル列も 'HTTP'ではなく 'TCP'です。どうしましたか?この方法でHTTPパケットをどのように送信するのですか?rawソケットとWinPcapを使用してHTTPリクエストを送信します
答えて
なぜWinPCapを使用してパケットを送信していますか?代わりに通常のソケットを使用する必要があります。さらに、curlやMicrosoft独自のWinInet APIやWinHTTP APIなど、HTTPプロトコルを実装するソケットライブラリを使用してください。
必ずしも間違っているとは限りません。
デフォルトでは、WiresharkはTCPデータを上位レベルのプロトコルハンドラに渡します。この場合、HTTPリクエストとレスポンス全体を再構成しようとします。これは、順番に最終パケットに再組立てのメッセージを添付し、「再組み立てPDUのTCPセグメント」と他のパケットにラベルを付ける:
あなたは個々のパケットを調査するために、この再構築機能を無効にすることができます:
- 編集 - >設定 - >プロトコル - > TCP
- のチェックを外し
これを拡張する予定の場合は、HTTPプロトコルの基礎を学ぶことをお勧めします。生のソケットを実行してget要求を投げることで混乱します。いくつかのソースコードを読んでください。
しかし、私は本当にpcapのポイントを見ません。実際のソケットをコーディングする必要がない場合は、Wininetライブラリを使用することができます。Wininet lib
しかし、未処理のソケットをコード化したい場合は、まずwinsockを使用します。 HTTPとTCPの違いは、一部の人にとって理解しにくいものです。 HTTPはTCPに基づいているため、技術的にはすべて同じです。TCPは文字通り何千ものアプリケーションに使用されます。お使いのコンピュータのほとんどの接続はTCPです。
HTTPリクエストを送信するpcapプログラムでMITM攻撃として接続を傍受しようとしている場合、おそらくPcapでプログラミングを学ぶでしょう。これには多くのチュートリアルがあります(this oneなど)。
PS:初心者の方には分かりづらいため、winsocksチュートリアルをご覧ください。また、winpcapはすべてのシステムでサポートされているわけではなく、(場合によっては)インストールするのに苦労することもあります。これを行うには、正直言ってwinsockを使うほうが良いでしょう。 Wininetにははるかに多くのサポートがあります。私はW2K +ビルドのすべてがすべてwininetを持っていると信じています(互換性のためには問題はないと思います)。またはwinsocks。
おそらく、\r\n
で2回のリクエストを完了していない可能性があります。
GET/HTTP/1.0\r\n
文字列を送信すると、パケットは受信されません。
この文字列は、GET/HTTP/1.0\r\n\r\n
に送信する必要があります。
- 1. javaでソケットを使用してサーバにリクエストを送信する
- 2. httpリクエストとしてカスタムアクセストークンを送信
- 3. LinuxでCでRAWソケットを使用してマルチキャストを送信する
- 4. Angular/Railsを使用してparamsでhttpリクエストを送信する
- 5. Scriptransformerを使用してSolrでHTTPリクエストを送信
- 6. iOSでJSONを使用してHTTP POSTリクエストを送信
- 7. PHPソケットを使用してデータを送受信します
- 8. HTMLフォームでRAWデータPOSTリクエストを送信しますか?
- 9. C#:ソケットを使用してHTTPリクエストを実行するには?
- 10. execlpはソケットを使用してデータを送信しません
- 11. Javaを使用してXMLRPCリクエストを送信します。
- 12. WinPcapを使用してC#経由でARPパケットを送信する方法
- 13. C#でTcpClientソケット経由でSSL HTTPリクエストを送信
- 14. node.jsでHTTPリクエストを送信しています
- 15. WinInet APIを使用してDelphiでHTTP POSTリクエストを送信する方法
- 16. アンカータグを使用してhttpリクエストでパラメータを送信する方法
- 17. curlを使用してHTTP PUTリクエストで空のURIを送信する方法
- 18. OpenCVとRaspberry Piのソケットを使用してビデオ送信TCP
- 19. Pythonリクエストを使用してSOAPリクエストを送信
- 20. pythonでhttpリクエストを送信して受信し、セッションクッキーを送信する必要があります。
- 21. ソケット[0]を使用してバイト[]を送受信しています
- 22. ソケットを使用してバイト[]を交互に送受信する
- 23. node.jsを使用してHTTPリクエストを送信するとEAFNOSUPPORTがスローされます
- 24. BSD rawソケットを使用して正常に受信したSYNACKに対してACK応答を送信できますか?
- 25. rawソケットがicmp応答を受信しませんでした
- 26. ソケットを使用して画像ファイルをPythonに送信
- 27. JavaCVソケットを使用してIplImageを送信
- 28. httpリクエストを送信したい場合は、Javaでoutputstreamを使用して何を書きますか?
- 29. HTTPとしてバイナリデータを送信し、ファイアウォールを渡します。
- 30. JAVA送信POST HTTPリクエスト