gpt4 book ai didi

java - UDP端口扫描Java只发现1个打开的UDP端口

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:56 24 4
gpt4 key购买 nike

我有一个关于端口扫描的任务。我正在用Java扫描一些IP地址的UDP端口。在我的程序中(假设一切正常)我只能找到一个打开的UDP端口。另一方面,通过“nmap”进行端口扫描,我得到 4 个打开的 UDP 端口。有人能告诉我为什么我不能通过 Java 代码找到多个端口吗?顺便说一句,我可以在我的代码中找到真正的开放端口。

int startPortRange=1;
int stopPortRange=1024;
InetAddress address = InetAddress.getByName("bigblackbox.cs.binghamton.edu");
int counter=0;
for(int i=startPortRange; i <=stopPortRange; i++)
{
counter++;
try{


byte [] bytes = new byte[128];
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
ds.setSoTimeout(100);
ds.connect(address, i);
ds.send(dp);
ds.isConnected();
dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
ds.close();
System.out.println("open");
System.out.println(counter);
}
catch(InterruptedIOException e){
//System.out.println("closed");
}
catch(IOException e){
//System.out.println("closed");
}
}

以上代码的输出是135开

当我在命令行中使用 nmap 进行相同的操作时,我得到了更多的开放端口。我是新用户,无法上传图片。谢谢 enter image description here

最佳答案

除非您提供至少,否则无法提供具体答案:

  • 您的程序的源代码。

  • 您得到的(不正确的)输出示例。

  • 同一场景的预期输出。

如果没有这些信息,我们就无法告诉您哪里出了问题。据我们所知,这甚至可能是您的程序在找到开放端口后过早终止的简单情况。或者最后发现的开放端口在显示之前覆盖之前的条目的情况。

无论如何,使用 network sniffer 调查正在发送和接收的内容可能是值得的。 ,例如 Wireshark .通过将 nmap session 与您的程序创建的 session 进行比较,您可能能够发现一些有助于查明问题的显着差异。

编辑:

在查看您的代码并与 nmap 进行比较后,您似乎错误地将 SocketTimeoutException 的情况处理为关闭端口,而它可以简单地是拒绝回答您发送的数据包的服务器的端口。

编辑 2:

这是完整的故事:

当端口正确关闭时,服务器发回 ICMP Destination Unreachable packet 无法访问端口 错误代码。 Java 将此错误解释为 IOException,您正确地认为它表示端口已关闭。

另一方面,一个开放端口可能会导致来自服务器的两种不同响应:

  • 服务器发回一个UDP数据包,你的程序接收到这个数据包,肯定表明一个开放的端口。例如,DNS 服务器通常会返回一个格式错误 响应。 nmap 显示这些端口打开

  • 服务器忽略您的探测数据包,因为它的格式不正确 w.r.t.到提供的服务。这会导致网络超时和程序中的 SocketTimeoutException

不幸的是,无法判断网络超时是因为 Activity 服务器忽略了格式错误的探测数据包,还是因为数据包过滤器切断了探测。这就是 nmap 将超时端口显示为 open|filtered 的原因。

关于java - UDP端口扫描Java只发现1个打开的UDP端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526166/

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