2016-11-04 5 views
-1

Я принимаю бесплатный онлайн курс по кибербезопасности здесь https://cybersecuritybase.github.io/ява сканер портов не работает

Par курса они хотят создать сканер 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; 
    } 
} 

Часть Я создал это для петли с гнездом сканирования. Он всегда распечатывает ни один найденный независимо от того, какой адрес я предоставляю, и я не уверен, как это исправить. любые указатели было бы здорово, я искал и от того, что я вижу, ничего не выделяется так (по крайней мере, я надеюсь)

+0

им делать, что конечно, и я не знаю s ** t о java :) im, имеющем ошибку «java.net.ConnectException: Connection reject: connect», что означает, что мой сервер не работает (после его поиска), такая проблема? – rockStar

+0

Что это за 50000 в 'socket.connect()'? Не просто сказать «порт», поскольку порт уже находится в 'InetSocketAddress()'. Почему эта часть не написана так: 'socket.connect (новый InetSocketAddress (адрес, порт), порт);'? – atonus

ответ

4

вы не добавляя к accessiblePorts Set

попробовать

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

awesome кажется, что сработало спасибо, я буду уверен, что это то, что я смотрю позже. – synking

Смежные вопросы