問題タブ [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.

0 投票する
2 に答える
6706 参照

linux - iptables 以外のパケット マングリング ユーティリティ?

一連のルールに基づいてネットワーク パケットのペイロードを変更できる Linux ユーティリティを探しています。理想的にはiptablesnetfilterカーネル モジュールを使用しますが、それらは一般的なペイロード マングリングをサポートしていません。iptablesさまざまなヘッダーフィールド (アドレス、ポート、TOS など) を変更し、パケット内の任意のバイトに一致させることができますが、明らかにパケット内の任意のデータを変更することはできません。

効率性が懸念されるため、カーネル モジュールは大きなプラスになりますが、仕事を成し遂げる他のオプションを喜んで検討します。

アイデアをありがとう!


久々の更新:

このNFQUEUEモジュールは、Robert Gamble が提案した QUEUE モジュールの最新の実装です。コードをカーネルではなくユーザースペースで実行できるようにするための安全ボーナスを備えた、かなり単純なように見えました。

サイズを変更せずにペイロードを変更するだけであれば、実装はほとんど簡単でした。iptablesその場合、 「関心のある」パケットを選択してNFQUEUEターゲットに送信するルールを定義します。からのパケットを検査し、NFQUEUE必要に応じてデータを変更し、TCP および IP ヘッダーのチェックサムを再計算するコールバック関数を作成します。

ただし、私たちの使用例には、データ ストリームに追加の文字を挿入することが含まれます。これには、TCP ストリーム内の対応する SEQ/ACK 番号を増加させるというやや明白な副作用と、conntrackNAT を完全に破壊するほどモジュールを混乱させるというそれほど明白ではない副作用があります。多くの調査、頭を悩ませ、実験を重ねた結果、最も適切な解決策は、これらの特定のパケット (テーブル NOTRACK内のターゲットを含む) の接続追跡を無効にし、コールバックで処理することでした。rawあなたのトマトと憎しみのメールを保存してください。ボンネットの下に入れることを誇りに思っているわけではありませんが、次の氷河期の前に信頼できる製品を顧客に届ける唯一の方法でした. そして、それは良い話です。しかし、私はあなたの心からの気持ちを本当に感謝し、共有します.

iptablesバージョン 2 では、コールバックといくつかのルールをカスタム NAT および/またはconntrackヘルパーに置き換えることで、新たに発見された啓発を活用します。今回の演習で、遭遇した問題を解決する netfilter アーキテクチャに有機的に適合するカーネル モジュールを作成するのに十分な経験が得られたと確信しています。

0 投票する
2 に答える
468 参照

packet - リンク層パケット変更を実行するライブラリ

着信パケットと発信パケットの両方に対してリンク層パケットの変更を実行できるライブラリはありますか?

基本的に、着信MACアドレス、IPアドレス、ポートなどに基づいて、パケットにいくつかの変換を行いたい(たとえば、IPペイロードを変更するため)。また、発信パケットに対して同じことを実行できるようにしたい、つまり、パケットを変更したい彼らがシステムを離れる前に。

0 投票する
3 に答える
19226 参照

python - Python ポート転送/多重化サーバー

UDP ポート 162 (SNMP トラップ) をリッスンし、このトラフィックを複数のクライアントに転送するサーバーを作成したいと考えています。また、送信元ポートとアドレスが同じままであることも重要です (アドレス スプーフィング)。

これに最適なツールはTwistedまたはScapyまたはおそらくバニラ ソケットになると思いますが、Twisted のドキュメントにはソース アドレスのスプーフィング/偽造について何も見つかりません。

これに対する解決策はありますか?

編集:賞金を追加しました。iptablesを使用したソリューションはありますか?

0 投票する
1 に答える
1077 参照

winsock - LSP パケット変更

パケットの変更に LSP を使用する方法についての洞察を共有したい人はいますか?

非 IFS サブタイプを使用していますが、どのように (疑似?) パケットが最初に WSPRecv に入るかを確認できます。しかし、どうすればそれらを変更できますか? 私の問い合わせは、WSPRecv が 3 回呼び出される原因となる 1 つの HTTP 応答に関するものです :((。他のマシンまたは異なる条件 (高トラフィックなど) では、WSPRecv 呼び出しは 1 つだけ、またはおそらく 10 回しかありません.これを回避する最善の方法は何ですか (NDIS を使用しないでください:D)、およびバッファ(lpBuffers->buf)を増やして?

ありがとうございました

0 投票する
4 に答える
5793 参照

python - pcap ファイルからのパケットの読み取りを発行します。dpkt モジュール。何を与える?

.pcap次のテスト スクリプトを実行して、ダウンロードしたサンプルファイルからパケットを読み取ろうとしています。走らないそうです。すべてのモジュールがありますが、実行中の例はないようです。

何らかの理由で、これは正しく解釈されていません。それを実行すると、私は得る

どうしてこれなの?どうしたの?インストールに問題はありますか? MacでPython 2.6を使用しています

0 投票する
0 に答える
174 参照

winsock - ルーター上の Winsock LSP は、転送されたパケットを変更できますか?

Windows マシンが他のマシンのルーター (ゲートウェイ) のように機能する場合、インストールされている Winsock LSP フィルターはそれらのマシンのトラフィックをキャプチャ/マングルできますか?

いいえの場合、これにはどのような技術がありますか?

0 投票する
1 に答える
3883 参照

packet - netfilter キューによるパケット変更?

私は現在、iptables の NFQUEUE ターゲットでキューに入れられたパケットを変更するために、ユーザー空間で libnetfilter_queue のコードを使用しようとしています。しかし、私はそれを行う方法についてほとんど考えていません。

NFQNL_COPY_PACKET を使用してパケットをコピーするように設定しました。コピーされたパケットを変更すると、関数 nfq_set_verdict() によって自動的にカーネルに送り返されますか?

さらに、以前に pcap ファイルからパケットを抽出する作業を行ったことがありますが、nfq_get_payload() から取得したデータが非常に異なっているように見えることに気付きました。データを分析する方法を知っている人はいますか?

0 投票する
1 に答える
1518 参照

linux - パケット損失の強制

テストの目的で、パケット損失が存在する場合にプロトコル実装がどのように動作するかを判断するために、ネットワークデバイスの1つでパケット損失を強制したいと思います。具体的には、0%から100%の間のどこでもパケット損失を調整できるようにしたいと思います。私はiptablesの経験が少しあり、それを使用してそれを達成できるはずですが、私はそれを達成できませんでした。ただし、100%のパケット損失を達成することは問題ではありません;)。これを行う方法についてのアイデアはありますか?

0 投票する
2 に答える
97 参照

tcp - netfilter_queue ipv4 オプション ヘッダーの削除

ipv4オプションヘッダー「タイムスタンプ」を削除するnetfilter_queueベースのユーザープログラムを実装しています

pingこのプログラムはICMP送信を使用するため、うまく機能します。

ただし、TCP ベースのアプリケーションは機能しません。私はwiresharkでそれを確認しましたが、このプログラムはタイムスタンプをうまく削除します。代わりに、TCP ベースのアプリケーションはそのパケットの ACK を送信せず、リモート サーバーは同じパケットを無期限に再送信します。

TCP パケット処理に欠落している手順はありますか? IPv4 ヘッダー部分のみを変更しました。では、なぜ tcp 送信がまったく機能しないのでしょうか。

私の主なコードは次のとおりです。

iptablesの設定は次のとおりです。