問題タブ [raw-sockets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C で基本的な traceroute スクリプトを作成する
trceroute スクリプトを作成する必要がありますが、その試みが正しいかどうかわかりません。
現在、私はそのようにしています(間違っているか不器用な場合は修正してください):
- ip- および udpheader の構造体を取得しました
- チェックサム機能
- 2 つのソケットを開く: 1 つは SOCK_RAW モードで UDP パケットを送信するため (ttl を操作するため)、もう 1 つはルーターから ICMP 応答を受信するためです。
- sendto() を使用して UDP パケットを送信する
- ICMP 回答を受信して処理する方法がわからない
すべてのヘッダーを自分で定義する必要がある sock_raw を使用するよりも、TTL を変更するより快適な方法はありますか? ICMP sock を開くとき、socket() にはどのパラメータを使用すればよいですか? ICMP 回答を受け取る方法は?
c - UDPパケットを送信し、CのルーターからICMP応答を受信します
指定されたIPアドレスにUDPパケットを送信し、存続時間が経過したことを通知するルーターのICMP応答を待機するCプログラムを作成しようとしています。最初はメカニズムを理解したいだけなので、とてもシンプルにしています。私が必要としているのは、誰かが私のコードをチェックして、何が間違っていて何が欠けているかについてフィードバックを与えることです。私はCプログラミングの経験があまりありませんが、課題としてそれをしなければなりません-それを理解するために最善を尽くします...
「recvmsg()を処理できませんでした」というメッセージが表示され続けます。そして、私はもう他に何を試すべきか見当がつかない。ICMPの回答を受け取り、その送信者のIPアドレスを読みたいのですが。
役立つヒントを楽しみにしています。
よろしくお願いします!
networking - ICMPヘッダーチェックサムにはデータも含まれていますか?
宿題の一環として、生のソケットを使用してICMPエコー要求に対するICMP応答を生成するCプログラムをLinuxで作成する必要があります。ICMPパケットのデータもチェックサムに含める必要がありますか?または、ヘッダーのみのチェックサムを計算する必要がありますか?
c - Raw ソケットを特定のポートにバインドする方法は?
現在、プログラミングの課題に取り組んでいます。割り当ては、クライアント、ネットワーク エミュレーター、およびサーバーを実装することです。クライアントはパケットをネットワーク エミュレーターに渡し、ネットワーク エミュレーターはサーバーに渡します。その逆も同様に適用されます。割り当ての前提条件は、生のソケットのみを使用できることです。そこで、独自の IP ヘッダーと UDP ヘッダーを作成します。Wireshark でパケットをテストしました。それらはすべて正しく、適切な形式です (正しく読み取ります)。
もう 1 つの要件は、エミュレーター、クライアント、およびサーバーのすべてに、バインドする必要がある特定のポートがあることです。現在、生のソケットを特定のポートにバインドする方法がわかりません。すべての raw ソケットは、バインドされているホスト アドレスですべてのトラフィックを受信します。man ページや、Richard Stevens による「Unix Network Programming」を含むインターネット上のあらゆる場所によると、これが本来の動作方法です。先生は私のメールに返事をくれていません。おそらく火曜日まで先生に質問することはできないでしょう。私の前に 2 つの選択肢があります。最初に、libpcap を使用して特定のデバイスからフィルタリングし、生のソケットに出力できます。しかし、これは私たちの任務の範囲外だと思います。または、ソケットから受け取った後にそれらをフィルタリングできます。すべてのパケットがカーネルを介してコピー/移動されるため、これには明らかに多くのオーバーヘッドがあります。少なくとも、それは私の理解です(間違っている場合はお気軽に修正してください)。
だから私の質問は:それらはオプションですか、それとも私が設定できるものですか?raw ソケットがポートにバインドされる場所は? 明らかな何かを見逃しましたか?
お時間をいただきありがとうございます。
--
python - PythonでTCPソケットから完全なIPフレームを読み取る方法は?
Python を使用して、TCP ストリーム ソケットから完全な (生の) IP フレームを読み取る必要があります。基本的に、すべてのヘッダー情報を含め、物理回線から出てきたかのように、変更されていないフレームが必要です。
私は Python で生のソケットを調べていましたが、いくつかの問題に遭遇しました。独自のパケットを作成する必要はありません。単純に、それらを逐語的に読み取って転送する必要があります。
では、既存の TCP ソケット (Python) から IP フレーム全体 (ヘッダーを含む) を読み取るにはどうすればよいでしょうか?
できれば、標準ライブラリのみを使用したいと思います。また、私は Linux ホストを使用しています。
ありがとう!
linux-kernel - Raw Socket ヘルプ: Raw ソケットで作成された UDP パケットがカーネル UDP で受信されないのはなぜですか?
私は生のソケットを研究しています。IP_HDRINCL オプションを使用して、独自の IP ヘッダーを作成しました。IP ヘッダーの後に、UDP ヘッダーを作成しています。次に、システムのループバック アドレスにパケットを送信しています。UDP パケットが来るとそれをキャッチする別のプログラムを実行しています。パケットが正しく形成され、受信されているかどうかを確認するために、生の IP データグラムを読み取る別のプロセスを実行しています。私の問題は、2 番目のプロセス (生データグラムの読み取り) は正常に機能していますが (すべての IP フィールドと UDP フィールドは問題ないようです)、最初のプロセス (UDP の受信) が作成したパケットをまったく受信していないことです。IP ヘッダーのプロトコル フィールドは問題なく、ポートも一致しています... Linux 2.6.35-22 を使用しています。これが新しいカーネルで正常かどうか知りたいですか? バグがないか、以下のコードを確認してください。
c++ - TCP 接続ハイジャック
私は C++ で取り組んできた小さなプロジェクトを持っています。その性質上、ライブ TCP ストリームにパケットを挿入する必要があります。(目的は十分に無実です。 http://ee.forumify.com/viewtopic.php?id=3299知っておく必要があります)ゲームのレベルエディターを作成していますが、ハンドシェイクの性質により、 WinSock などの高レベル ライブラリとの新しい接続を単純に確立することはできません。今までは、Winsock Packet Editor に頼って面倒な作業を行っていましたが、アプリケーションにすべて任せれば、みんなが喜ぶでしょう。
私の質問は次のとおりです。ライブ TCP ストリームを制御できる API はどこかにありますか? そして、DLLを注入する必要がないことを望みます。また、私は GCC/Mingw を使用しているため、回り道はできません。
私は WinPCap をいじってみましたが、動作するコードがいくつかあります (パケットを収集し、そこから送信する適切なパケットを生成できます) が、これは非常に低いレベルで動作するため、エンド ユーザーが使用する可能性があります。はい、彼らは IPv4 over Ethernet を使用する可能性がありますが、まだ PPP やその他のあいまいなプロトコルを使用している人々はどうですか? また、パケット内の最新の ID 値が変更され、クライアントが切断されたと想定するため、クライアント アプリケーションによって接続が切断されます。
誰かが高レベルの TCP ストリーム マニピュレータを提供できれば、私はとても幸せです。そうでない場合は、WinPCap をいじくり回して、すべてのダイヤルアップ ユーザーにインターネットを改善するように伝えます。
対象プラットフォーム: Microsoft Windows XP から Windows 7
c++ - ソケットはデータを送信しますが、応答を受信できません
私はC++でUpNPを実装しようとしていますが、グーグルでいくつかのソースを見つけましたが、どれも機能しませんでした。これは機能していることがわかりました(http://www.codeproject.com/KB/IP/upnplib.aspx)が、.NET用であるため、ネットワークをスニッフィングしてコードの動作を確認し、同じことを行うことにしました。ソケット。
結果は次のとおりです(フルサイズ:http://i.stack.imgur.com/eLoHK.jpg):
これは、パケットが悪く見えないことを示しています。すべてが同じように見えます。コードの送信元アドレスを除いて、制御方法がわかりません(コードとfinder.net.exeの両方がテストされています)。同じネットワークに接続された同じコンピュータ上)。
これが私のコードです:
コードを読みやすくするために、すべてのWSAGetLastError()エラーチェックを削除しました。recvfromまではすべて正常に実行され、常に-1が返され、strerror(WSAGetLastError())は「不明なエラー」を出力します。
誰かが私を正しい方向に導いてくれることを願っています。私はこの2日間、この仕事をしようとしてきました。
windows-ce - WinCE5 で raw ソケットを使用するには?
Windows CE 5.0 で raw ソケットを使用する必要があります。次のコードは常にエラーで失敗します
socket failed, err:10044
.
(指定されたソケット タイプのサポートは、このアドレス ファミリには存在しません。)
Windows CE で raw ソケットを使用するにはどうすればよいですか?
c - 古いrawソケットチュートリアルでntoa()の代わりにntop()を使用する
このリンクのチュートリアルに従って、rawソケットパケットスニファを作成しています。
http://www.security-freak.net/raw-sockets/sniffer_eth_ip.c
コードはntoa()関数を使用して、送信元/宛先IPアドレスのドット表記バージョンを取得しますが、私が理解していることから、この関数は非推奨であるため、これらの行が問題を引き起こしています。
私のシステム(Ubuntu 11.04)では、arpa / inet.hでinet_ntoa()関数しか見つかりませんでしたが、チュートリアルではそのヘッダーも使用していません。arpa / inet.hを含めると、次のコンパイルエラーが発生します。
したがって、struct in_addrを使用する必要があることは理解していますが、このタイプ'__be32'に精通していません。誰かが助けることができますか?
編集-実際にはかなり複雑なキャストを行うことでこれを機能させることができましたが、より良い方法はありますか?