3

アクセスポイントとして扱える組み込みシステムがあります。そのシステムで実行され、そのアクセス ポイントに接続されたデバイスとのネットワーク通信を実行するプログラムがあります。診断情報 (データ構造) を含む UDP パケットを送信し、コマンドを受信して​​います。問題は、送信データ構造の一部のフィールドがデータで満たされない場合があることです (たとえば、ゼロやゴミがある場合など)。これらのフィールドには毎回正しく入力する必要があり、そこにどのような値を入力する必要があるかを知っています。

私が達成する必要があるもう 1 つのタスクは、このプログラムに着信する受信パケットをフィルター処理することです (リッスンするポートを知っています)。通常は単純にそれらを渡す必要がありますが、ときどき (センサーから情報を取得するときなど)、私が生成する新しいパケットでそれらを完全に置き換える必要があります。

iptables と pcap のスマートな使い方から独自のカーネル モジュールの作成まで、いくつかのアイデアがあります。私はその組み込みアプリケーションのソースを所有していないため、この機能をコードに埋め込むことはできません。ここではパフォーマンスが非常に重要です。あなたの提案を聞きたいです。独自のカーネル モジュールを作成することが最善の解決策のように思えますが、ネットワーク ハッキングの経験がないため、この問題により適した方法が他にあるかもしれません。どんな意見でも大歓迎です!

4

2 に答える 2

2

標準的なアプローチの 1 つは、libnetfilter_queue を使用して、パケットを直接インターセプトおよび変更することです。独自のカーネル モジュールを作成する前に、少なくともこれを試してください。

于 2012-05-21T07:55:59.863 に答える
1

ユーザー空間でそれを行うことができます。パケットを受信して​​パケットを変更し、再度送信するサーバーを作成するだけです。ローカルホストを宛先IPとして使用するようにアプリケーションを構成する必要があります(または、ターゲットアドレスを持つようにシステムを構成します)。典型的な「中間者」設定です。

于 2012-05-16T08:46:41.767 に答える