gpt4 book ai didi

java - 扫描端口并列出每个端口上运行的服务

转载 作者:行者123 更新时间:2023-12-01 12:02:33 26 4
gpt4 key购买 nike

我正在尝试构建一个端口扫描器,它不仅扫描端口号,而且还列出在相应端口上运行的服务。我是java编程新手,正如你所看到的,我有用于扫描状态的代码本地计算机上的端口数。当谈到列出每个端口上运行的服务时,我不知道从哪里开始。如果有人可以建议我任何代码/链接来列出这些服务,我将不胜感激。感谢您的帮助......

public class port {

public static void main(String[] args) throws Exception {

String host = "localhost";
InetAddress inetAddress = InetAddress.getByName(host);
String hostName = inetAddress.getHostName();

for (int port = 0; port <= 200; port++) {
try {
Socket socket = new Socket(hostName, port);
String text = hostName + " is listening on port " + port;
System.out.println(text);
socket.close();
}
catch (IOException e)
{
String s = hostName + " is not listening on port " + port;
System.out.println(s);
}
}
}
}

最佳答案

如果您想检查开放端口,那么代码看起来不错,但要识别服务......好吧,这很棘手。

这有点像通过读取前几个字节来识别文件的类型。一个简单的解决方案是将端口号与 list of well known ports 进行比较。因此,如果端口 80 已打开,您只需假设它是 HTTP 并继续。

此方法假设服务实际上监听其分配的端口。这就像假设以“zip”结尾的文件始终是 zip 文件。大多数时候它是正确的,但这只是因为它是一个约定。不是因为事情必须这样。如果您想真正对服务进行指纹识别 - 通过“与它交谈”来确定服务类型,那么这是一项严肃的任务,而不是几行可以解释的事情。我建议你看看Nmap ,因为它是一个现有的工具,可以做到这一点。您也许可以使用它,而不是自己编写。

关于java - 扫描端口并列出每个端口上运行的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27887542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com