【Win】ポート番号から実行ファイルを特定する

windows

netstat コマンドを使用すると、各ポートの状態を確認することができます。
今回は開放ポート番号から、逆に実行中のアプリを特定する方法について記載します。
知らない間にウィルス等感染し、ボット等のサービスがポートを開くこともありますので、確認する手段は知っておいた方がいいです。

環境

windows 11 Home

netstatの使用方法

コマンドプロンプトから次のコマンドを実行すると各ポートの状態を確認することができます。

C:\>netstat

アクティブな接続
  プロトコル  ローカル アドレス      外部アドレス           状態
 TCP         192.168.0.44:56722     210.158.???.???:https  ESTABLISHED
 :

 私の環境では、自身のPCに割り振られているIPアドレスが
   192.168.0.44
ですので、上の例だと、
   私のPCの56722ポートから、210.158.???.???の443ポートに接続中である
    ※httpsプロトコルは 443番ポートを使用する
ことがわかります。
 状態は、このポートがどのような状態にあるかであり、
    ESTABLISHED 通信確立、通信中
    LISTENING 通信待ち受け中
    TIME_WAIT タイムアウト待ち
    CLOSE_WAIT 通信終了中
等があります。

ポート番号から実行ファイルを特定する

 今回はadbが使用するポート番号(5037)から、逆に実行ファイルを特定します。
 adbは5037番ポートを使用することがわかっていますので、次のコマンドを実行し、5037番ポートを使っているプロセスIDを特定します。

C:\>netstat -ano | find "5037"
  TCP         127.0.0.1:5037         0.0.0.0:0              LISTENING       16580

netstat のコマンド説明
 -a TCP/UDP含むすべてのポートを表示する
 -n DNS問い合わせを行わない(回答が早い)
 -o PIDも表示させる
“|”は、出力結果をfind関数に通し、”5037″を含む行だけ出力させるものです。
 これで、5037番ポートを使っているプロセスのIDが「16580」と判明しました。

 つぎは、PID16580を使っているファイルを特定します。
 次のコマンドを実行してください。

C:\> tasklist /FI "PID eq 16580"

イメージ名                     PID セッション名     セッション# メモリ使用量
========================= ======== ================ =========== ============
adb.exe                      16580 Console                    2     12,344 K

 PID16580が割り当てられているファイルは、
   adb.exe
だとわかりました。
 コマンドプロンプトからだと、実行ファイルのファイルパスは特定できないのですが、
   タスクマネージャーを起動し、プロセス検索から「16580」と入力
すると、実行ファイルのPATHまで特定できます。

このようにすれば、ポート番号から実行ファイルを特定することができます。
netstatコマンドから気になるポートが開いている場合は、自分で実行ファイルを確認して下さい。