繁体   English   中英

Java端口扫描器不起作用

[英]java port scanner not working

我正在这里免费下载网络安全在线课程https://cybersecuritybase.github.io/

当然,他们希望您创建一个Java端口扫描程序,但是他们提供了一些代码,您添加了端口扫描程序部分,而我遇到了问题。 Java不是我真正熟悉的语言,因此我觉得它很简单,但似乎无法弄清楚。

代码在这里

package sec.portscanner;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.InetSocketAddress;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
import java.io.IOException;
public class PortScanner {

    final static int MIN_PORT = 1024;
    final static int MAX_PORT = 49151;

    public static void main(String[] args) throws Exception {
        Scanner reader = new Scanner(System.in);

        System.out.println("Which address should I scan?");
        String address = reader.nextLine();
        System.out.println("Start at port?");
        int start = Integer.parseInt(reader.nextLine());
        System.out.println("End at port?");
        int end = Integer.parseInt(reader.nextLine());

        Set<Integer> ports = getAccessiblePorts(address, start, end);
        System.out.println("");

        if (ports.isEmpty()) {
            System.out.println("None found :(");
        } else {
            System.out.println("Found:");
            ports.stream().forEach(p -> System.out.println("\t" + p));
        }
    }

    public static Set<Integer> getAccessiblePorts(String address, int start, int end) {
        Set<Integer> accessiblePorts = new TreeSet<>();
        start = Math.max(start, MIN_PORT);
        end = Math.min(end, MAX_PORT);

        for (int port = start; port <= end; port++) 
        {
            try {
                Socket socket = new Socket();
                socket.connect(new InetSocketAddress(address, port), 50000);
                socket.close();
            } catch(IOException e) {
                    System.out.println(e);
                    }
            }

        return accessiblePorts;
    }
}

我创建的部分是套接字扫描的for循环。 无论我提供什么地址,它始终会打印出找不到的内容,而且我不确定该如何解决。 我搜索过的任何指针都很棒,从我看到的结果来看,没有什么是脱颖而出的(至少我希望如此)

您没有添加到accessiblePorts集中

尝试

Socket socket = new Socket();
socket.connect(new InetSocketAddress(address, port), 50000);
socket.close();
accessiblePorts.add (port);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM