2017-01-14 19 views
2

У меня проблема, которую я не могу решить.Как найти порт TCP/UDP, используемый конкретным процессом на данном удаленном компьютере

То, что я знаю:

  • Некоторая информация о процессе, я ищу: Это процесс Java, но если у меня есть доступ к информации, аналогично тому, что находится в ps -ef | grep java, то я могу найти его PID.
  • IP-адрес удаленной машине под управлением версии Linux 3.16.7-35-рабочий стол (SUSE Linux)

Я хотел бы найти порт, используемый этим процессом на этой машине, с некоторыми ограничениями:

  • Должно быть сделано программно, в Java
  • должны работать с ОС Windows и Linux (если это необходимо, код Java не может обрабатывать оба случая отдельно)
  • не требует установки какого-либо другого приложения (ни на caller m achine или на дистанционном)

Я также знаю, что порт должен быть между 10000 и 20000. У меня есть сетевой доступ к удаленной машине (обе машины находятся в одной подсети).

Как вы это сделаете?

Примечание: Я нашел this, но он старый и не удален.

ответ

1

Это стандартное требование к взлому. Вы можете делать то, что делает nmap.

Подключитесь к каждому порту в очереди поочередно и попробуйте определить, какая служба выполняет это, слушает или отвечает на этот порт на основе данных, которые вы получаете от службы при подключении. Он очень медленный и будет выглядеть как хак, если у вас есть какие-либо инструменты для его обнаружения, но это метод, который используется в течение длительного времени, так как это единственный способ сделать это без обслуживания, чтобы рассказать вам, что работающих на этой машине.

Гораздо лучший подход заключается в том, чтобы иметь процесс обнаружения сервисов где-нибудь, у которого есть все услуги, с которыми вы можете связаться, в идеале с их статусом, чтобы вы могли легко найти тот, который доступен для вашего клиента.