2017-10-26 17 views
1

私は簡単なインスタントメッセージチャットクライアントとサーバーをTCP上に作成しました。両方ともAdobe AIRから実行されます。それは素晴らしい作品で、基本的なネットワーキングプログラミングを学ぶ興味深い方法でした。クライアントに到達する前にサーバーからパケットを編集できますか?

私の質問:サーバーまたはクライアントを使用せずにチャットサーバーから送信されたパケットのデータをクライアントに到着する前に変更することは可能ですか?おそらくプログラムのように?

私はネットワークプログラミングを初めて利用していますので、これが間違った質問であればお詫び申し上げます。

+0

これは、見た目より複雑です。 TCPには、セグメント内の何かを変更した場合に再計算する必要があるCRCがあります。 CRCは擬似ヘッダも使用します。 IPv4パケットのパケットヘッダーで何かを変更する場合は、IPv4ヘッダーチェックサムを再計算する必要があります。 IEEE LANフレームでこれを変更する場合は、FCSを再計算する必要があります。 –

答えて

2

あなたの質問は非常に幅広いです。答えは広いです。はい。それが可能だ。

このため、クライアントとサーバーの間のパケットを取得して、3番目のプログラムを通過させる必要があります。これを達成するにはかなりの方法があります。

まず、自分のマシン(クライアント/サーバー)で、さまざまな低レベルAPIを使用してオペレーティングシステムからのパケットにアクセスできます。例えば、iptables+nfqueue in LinuxまたはWindows Filtering Platform on Windowsです。

第2に、proxy programによって意図的に通信することで、クライアントまたはサーバーと同じサーバー上に存在する場合と存在しない場合があります。

第3に、ネットワーク自体からパケットを取得してパケットにアクセスすることができます。例えば、いくつかのLinuxマシンをルーターとして設定し、クライアントとサーバーの間に置くことができます(同じマシンにない限り)。そのLinuxマシンは、これを通過するすべてのパケットにアクセスできるようになり、前述のnfqueueなどのフックを使用してさまざまなユーザー空間プログラムに渡すことができます。

関連する問題