web-dev-qa-db-ja.com

nc / netcatがhttpポートトラフィックを簡単にスニッフィングできないのはなぜですか?

「wiresharkを試してみてください」などのアドバイスは探していません。私はnetcatが何であるかを理解しようとしています。

ポート80をリッスン(-l)しようとすると、「アドレスはすでに使用されています」と表示されます。 netcatは、ブラウザのように、使用中のポートをリッスンできませんか?それとも、これはブラウザがどのように機能するかについての本当に間違った理解ですか?おそらく、netcatはオペレーティングシステムの共有メカニズムをバイパスしていますか?

私の質問に対する答えは、プロキシを使用したこの説明に埋もれていると思いますが、理解できません。 http://pankaj-k.net/weblog/2010/05/using_netcat_to_view_tcpip_tra.html

2

私はnetcatが何であるかを理解しようとしています。

一つには、それはスニファーではありません。

Webサーバーなど、すでにポート80でリッスンしているマシンに何かがある場合、ポート80へのパケットはによって受信されるため、他の何もポート80でリッスンできません(少なくともすでにリッスンしているプログラムと同じローカルIPアドレスではありません)。お使いのマシンは1つのプログラムにのみ送信できます。

パケットスニファは、ブラウザやnetcatなどの「通常の」ネットワークアプリケーションが使用するメカニズムとは異なるメカニズムを使用します。それらが使用するメカニズムは、実行しているOSによって異なり(libpcap/WinPcapは、アプリケーションからその詳細を隠すために存在します)、これらのメカニズムにより、スニファは、rawリンク層またはrawIPパケットとして受信したすべてのパケットのコピーを取得できます。

Netcatは、ブラウザのように、使用中のポートをリッスンできませんか?それとも、これはブラウザがどのように機能するかについての本当に間違った理解ですか?

はい、それはブラウザがどのように機能するかについての間違った理解です。マシンで実行されているブラウザは、マシンのポート80でリッスンしておらず、Webサーバーマシンのポート80にトラフィックを送信しています。

3
user164970

男が言ったことに続いて

ブラウザは使用中のポートをリッスンしません(定義上、クライアントやサーバーがリッスンできないと思います。そうしないと、OSはパケットを送信するプロセス、具体的には特定の接続を認識できません)。ブラウザは、使用されていないポートを検出します。

http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

1024未満ではなく、実際には49152未満ではありません。非常に多数のポート。そのエフェメラルポート範囲49152〜65535

netstatの基本的な使用法を知っていれば、物事に慣れることができます。

Cmdプロンプト、netstat-aonまたはnetstat-nから試して、出力を確認してください。

これがnetstat-nの例です

iPの2つの列が表示されます。1つはローカル、もう1つはリモートです(したがって、接続が着信か発信かは表示されません)。コンピューターに関連するIPが左側に表示されます。右側を見てください。この場合、右側の行が:80だけですが、通常は多くの行があります。ブラウザによって選択された左側のポートを確認してください。 50714

enter image description here

netstat -onまたは-aonを実行すると、-oはプロセスIDの列を取得し、タスクマネージャーでどのプロセスがどれであるかを確認できます。

0
barlop