問題タブ [packet-mangling]
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.
linux - iptables 以外のパケット マングリング ユーティリティ?
一連のルールに基づいてネットワーク パケットのペイロードを変更できる Linux ユーティリティを探しています。理想的にはiptables
、netfilter
カーネル モジュールを使用しますが、それらは一般的なペイロード マングリングをサポートしていません。iptables
さまざまなヘッダーフィールド (アドレス、ポート、TOS など) を変更し、パケット内の任意のバイトに一致させることができますが、明らかにパケット内の任意のデータを変更することはできません。
効率性が懸念されるため、カーネル モジュールは大きなプラスになりますが、仕事を成し遂げる他のオプションを喜んで検討します。
アイデアをありがとう!
久々の更新:
このNFQUEUE
モジュールは、Robert Gamble が提案した QUEUE モジュールの最新の実装です。コードをカーネルではなくユーザースペースで実行できるようにするための安全ボーナスを備えた、かなり単純なように見えました。
サイズを変更せずにペイロードを変更するだけであれば、実装はほとんど簡単でした。iptables
その場合、 「関心のある」パケットを選択してNFQUEUE
ターゲットに送信するルールを定義します。からのパケットを検査し、NFQUEUE
必要に応じてデータを変更し、TCP および IP ヘッダーのチェックサムを再計算するコールバック関数を作成します。
ただし、私たちの使用例には、データ ストリームに追加の文字を挿入することが含まれます。これには、TCP ストリーム内の対応する SEQ/ACK 番号を増加させるというやや明白な副作用と、conntrack
NAT を完全に破壊するほどモジュールを混乱させるというそれほど明白ではない副作用があります。多くの調査、頭を悩ませ、実験を重ねた結果、最も適切な解決策は、これらの特定のパケット (テーブル NOTRACK
内のターゲットを含む) の接続追跡を無効にし、コールバックで処理することでした。raw
あなたのトマトと憎しみのメールを保存してください。ボンネットの下に入れることを誇りに思っているわけではありませんが、次の氷河期の前に信頼できる製品を顧客に届ける唯一の方法でした. そして、それは良い話です。しかし、私はあなたの心からの気持ちを本当に感謝し、共有します.
iptables
バージョン 2 では、コールバックといくつかのルールをカスタム NAT および/またはconntrack
ヘルパーに置き換えることで、新たに発見された啓発を活用します。今回の演習で、遭遇した問題を解決する netfilter アーキテクチャに有機的に適合するカーネル モジュールを作成するのに十分な経験が得られたと確信しています。
packet - リンク層パケット変更を実行するライブラリ
着信パケットと発信パケットの両方に対してリンク層パケットの変更を実行できるライブラリはありますか?
基本的に、着信MACアドレス、IPアドレス、ポートなどに基づいて、パケットにいくつかの変換を行いたい(たとえば、IPペイロードを変更するため)。また、発信パケットに対して同じことを実行できるようにしたい、つまり、パケットを変更したい彼らがシステムを離れる前に。
winsock - LSP パケット変更
パケットの変更に LSP を使用する方法についての洞察を共有したい人はいますか?
非 IFS サブタイプを使用していますが、どのように (疑似?) パケットが最初に WSPRecv に入るかを確認できます。しかし、どうすればそれらを変更できますか? 私の問い合わせは、WSPRecv が 3 回呼び出される原因となる 1 つの HTTP 応答に関するものです :((。他のマシンまたは異なる条件 (高トラフィックなど) では、WSPRecv 呼び出しは 1 つだけ、またはおそらく 10 回しかありません.これを回避する最善の方法は何ですか (NDIS を使用しないでください:D)、およびバッファ(lpBuffers->buf)を増やして?
ありがとうございました
python - pcap ファイルからのパケットの読み取りを発行します。dpkt モジュール。何を与える?
.pcap
次のテスト スクリプトを実行して、ダウンロードしたサンプルファイルからパケットを読み取ろうとしています。走らないそうです。すべてのモジュールがありますが、実行中の例はないようです。
何らかの理由で、これは正しく解釈されていません。それを実行すると、私は得る
どうしてこれなの?どうしたの?インストールに問題はありますか? MacでPython 2.6を使用しています
winsock - ルーター上の Winsock LSP は、転送されたパケットを変更できますか?
Windows マシンが他のマシンのルーター (ゲートウェイ) のように機能する場合、インストールされている Winsock LSP フィルターはそれらのマシンのトラフィックをキャプチャ/マングルできますか?
いいえの場合、これにはどのような技術がありますか?
packet - netfilter キューによるパケット変更?
私は現在、iptables の NFQUEUE ターゲットでキューに入れられたパケットを変更するために、ユーザー空間で libnetfilter_queue のコードを使用しようとしています。しかし、私はそれを行う方法についてほとんど考えていません。
NFQNL_COPY_PACKET を使用してパケットをコピーするように設定しました。コピーされたパケットを変更すると、関数 nfq_set_verdict() によって自動的にカーネルに送り返されますか?
さらに、以前に pcap ファイルからパケットを抽出する作業を行ったことがありますが、nfq_get_payload() から取得したデータが非常に異なっているように見えることに気付きました。データを分析する方法を知っている人はいますか?
linux - パケット損失の強制
テストの目的で、パケット損失が存在する場合にプロトコル実装がどのように動作するかを判断するために、ネットワークデバイスの1つでパケット損失を強制したいと思います。具体的には、0%から100%の間のどこでもパケット損失を調整できるようにしたいと思います。私はiptablesの経験が少しあり、それを使用してそれを達成できるはずですが、私はそれを達成できませんでした。ただし、100%のパケット損失を達成することは問題ではありません;)。これを行う方法についてのアイデアはありますか?
tcp - netfilter_queue ipv4 オプション ヘッダーの削除
ipv4オプションヘッダー「タイムスタンプ」を削除するnetfilter_queueベースのユーザープログラムを実装しています
ping
このプログラムはICMP送信を使用するため、うまく機能します。
ただし、TCP ベースのアプリケーションは機能しません。私はwiresharkでそれを確認しましたが、このプログラムはタイムスタンプをうまく削除します。代わりに、TCP ベースのアプリケーションはそのパケットの ACK を送信せず、リモート サーバーは同じパケットを無期限に再送信します。
TCP パケット処理に欠落している手順はありますか? IPv4 ヘッダー部分のみを変更しました。では、なぜ tcp 送信がまったく機能しないのでしょうか。
私の主なコードは次のとおりです。
iptablesの設定は次のとおりです。