Socket Socket_Programming

guten tag,
ich schreibe ein kleines Programm zum Netzscan. Ich habe schon das Program geschrieben und möchte jetzt für jede Adresse im Netz die verschiedenen "offen" Porets visualizieren.
hier ist meine Code. kann jemand mir sagen was ich falsch gemacht habe?12218
 
K

kneitzel

Bitte code als text in code Tags posten.

Und dann bitte auch immer genaue Informationen mitgeben, was nicht geht.
 
Das funktioniert schon (vermutlich war das Timeout zu kurz)
Java:
import java.io.IOException;
import java.net.*;

public class Scan {
    public static void main(String[] args) {
        for (int i = 0; i < 3000; i++) {
            String ip = "127.0.0.";
            for (int j = 0; j < 255; j++) {
                String host = ip + j;
                try {
                    InetAddress addr = InetAddress.getByName(host);
                    Socket so = new Socket();
                    so.connect(new InetSocketAddress(addr, i), 1000);
                    so.close();
                    System.out.printf("%s:%d open\n", host, i);
                } catch (UnknownHostException ex) {
                    System.out.println("Unknown host: " + host);
                } catch (SocketTimeoutException | ConnectException ex) {
                    // ignore
                } catch (IOException ex) {
                    System.err.printf("An exception occurred while accessing %s:%d: %s\n", 
                            host, i, ex.getMessage());
                }
            }
        }        
    }
}
 
Das funktioniert schon (vermutlich war das Timeout zu kurz)
Java:
import java.io.IOException;
import java.net.*;

public class Scan {
    public static void main(String[] args) {
        for (int i = 0; i < 3000; i++) {
            String ip = "127.0.0.";
            for (int j = 0; j < 255; j++) {
                String host = ip + j;
                try {
                    InetAddress addr = InetAddress.getByName(host);
                    Socket so = new Socket();
                    so.connect(new InetSocketAddress(addr, i), 1000);
                    so.close();
                    System.out.printf("%s:%d open\n", host, i);
                } catch (UnknownHostException ex) {
                    System.out.println("Unknown host: " + host);
                } catch (SocketTimeoutException | ConnectException ex) {
                    // ignore
                } catch (IOException ex) {
                    System.err.printf("An exception occurred while accessing %s:%d: %s\n",
                            host, i, ex.getMessage());
                }
            }
        }       
    }
}
hallo Mihe. Sorry für die Verspätung. Ja das funktioniert. Also nur teilweise.
 
nur Programm muss 2 Funktionalitäten haben. Networkscan also fuer eine bestimmte Range (zB: 172.20.100.2-172.20.100.254). ich kann ja einen Scan durchführen. zweitens wenn ich eine Adresse von diesem Range (zB: 172.20.100.100) aussuche, musss man in der Lage sein die "opend" ports anzuzeigen.
unter ist mein Code


//Scan-Funktion und Ports
public static void Scan() {
System.out.println("*****Scan for a Host(Subnetz) : 172.20.100.0*****");
//Kleines Programm für Scann port auf seinem eigenen Computer
String IP = "172.20.100";
for (int i = 0; i <= 3000; i++) {
try {
///String IP="172.21.128.140";
// Scann this range
for (int j = 1; j < 255; j++) {
try {
String host = IP + "." + j;
InetAddress ad = InetAddress.getByName(host);
//Creation of unconnect Socket
Socket so = new Socket();
//Connect this Socket to a server with a Hostname und Timeout: And creation of a SocketAddress from a hostname an a port

so.connect(new InetSocketAddress(ad.getHostAddress(), i), 10);
// Close Socket after Scanning
so.close();
System.out.println("Port " + i + " ist open");
} catch (Exception e) {

}
}
}catch (Exception z) {

}
 
hallo Mihe. Sorry für die Verspätung. Ja das funktioniert. Also nur teilweise.
wenn ich mein Programm ausführe, krigen ich folgendes Resultat:



"C:\Program Files\Java\jdk-12\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1\lib\idea_rt.jar=1464:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Nana\Downloads\IPScannerEx-master\Scan\out\production\Scan com.company.Main
**** Welche Operation durchführen ***
****1 = NetworkScan , 2 = EigentportScan und 3= für einen HostPortSan***
3
*****Scan for a Host(Subnetz) : 172.20.100.0*****
172.20.100.4
Port 21 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 22 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 80 ist open
Port 111 ist open
Port 111 ist open
Port 111 ist open
Port 111 ist open
Port 111 ist open
Port 111 ist open
Port 111 ist open
Port 139 ist open
Port 139 ist open
 
K

kneitzel

Du könntest die beiden Schleifen tauschen: äußere für IPs und innere für Ports. Und natürlich kannst du die ip mit ausgeben.

Optionen wie die Daten speichern oder so gibt es natürlich auch noch....
 
Soll das ganze nur zur Übung sein, oder hat das einen tieferen Sinn?
es hat einen tieferen Sinn. ich ahbe es als Aufgabe bei der Arbeit bekommen und der erste Schritt ist diese Operation durchzuführen und viel möchte mein Chef im Unternehmen verwendet. Der hat mir auch empholen Thread zu verwenden. ich bin noch java-Lehrling. :):) und versuch was Schönes zu machen
 
K

kneitzel

Also als Übung ist es ok, aber wenn es um produktiven Einsatz geht, dann halte ich es für wenig sinnvoll.

Da macht der Einsatz eines Tools wie nmap deutlich mehr Sinn.
 
Also als Übung ist es ok, aber wenn es um produktiven Einsatz geht, dann halte ich es für wenig sinnvoll.

Da macht der Einsatz eines Tools wie nmap deutlich mehr Sinn.
Hallo Kneitzel,
ich die Schleifen ausgetauscht und ich kriege keine Information mehr. Allerdings habe ich geschaft für eine in Code gegebene beschtimmte Adresse die opened ports zu visualizieren. Jetzt möchte für eine Adresse, die ich die Konsole eingebe, die Ports anzeigen zu können. Ich weiß leider nicht wie ich verfahre soll.
 
Hallo Kneitzel,
ich die Schleifen ausgetauscht und ich kriege keine Information mehr. Allerdings habe ich geschaft für eine in Code gegebene beschtimmte Adresse die opened ports zu visualizieren. Jetzt möchte für eine Adresse, die ich die Konsole eingebe, die Ports anzeigen zu können. Ich weiß leider nicht wie ich verfahre soll.
 
K

kneitzel

Zeig mal Deinen Code - So Du in der inneren Schleife eine Ausgabe machst, sollte die immer noch angezeigt werden.

Aber bau das doch erst einmal mit Funktionen:
- Eine Funktion könnte eine Adresse und einen Port bekommen und genau diesen Port testen.
- Eine Funktion könnte eine Adresse und eine Port Range bekommen und dann alle Ports der Adresse testen.
- ...

Dann wird das alles auch einfacher, wenn man das ändern will.
 
Zeig mal Deinen Code - So Du in der inneren Schleife eine Ausgabe machst, sollte die immer noch angezeigt werden.

Aber bau das doch erst einmal mit Funktionen:
- Eine Funktion könnte eine Adresse und einen Port bekommen und genau diesen Port testen.
- Eine Funktion könnte eine Adresse und eine Port Range bekommen und dann alle Ports der Adresse testen.
- ...

Dann wird das alles auch einfacher, wenn man das ändern will.
this is for Eingabe an die Konsole
package com.company;
import java.io.IOException;
import java.net.*;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.logging.SocketHandler;

public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("**** Welche Operation durchführen ***");
System.out.println(" ****1 = NetworkScan , 2 = EigentportScan und 3= für einen HostPortSan***");
int c;
try {
c = s.nextInt();
if (c == 1) {
System.out.println("####Wählen sie bitte ein Subnetz aus#####");
System.out.println("1=172.20.100.0 und 2 = 172.21.128.0");
Scanner A = new Scanner(System.in);
int A1 = A.nextInt();
try {

if (A1 == 1) {
netscann();
} else if (A1 == 2) {
netscann1();
}
} catch (InputMismatchException e) {
System.out.println("Sie Haben einen " + e + " erzeugt");
}
} else if (c == 2) {
// Scan();
sca();
} else if (c == 3) {
Scan();


}
// System.out.println("Good bye Sir");
s.close();
} catch (InputMismatchException e) {
System.out.println("Falsche Eingabe " + e);
}
}
 
Dies istr für Scan
//Subnet 172.20.100.0
public static void netscann() {
// defines the Adress
String IP = "172.20.100";
//Defines the Delay
int timeout = 1000;
for (int i = 1; i <= 254; i++) {
try {
String host = IP + "." + i;
// Intance of IP Address
InetAddress ad = InetAddress.getByName(host);
// Erreichbarkeit der Hosts laut Timeout
if (ad.isReachable(timeout))
System.out.println("The Computer " + ad.getCanonicalHostName() + " with this address " + host + " ist reachable");
} catch (Exception e) {
}
 
dies ist für scan dasss ich gebastelt habe
/Scan-Funktion und Ports
public static void Scan() {
System.out.println("*****Scan for a Host(Subnetz) : 172.20.100.0*****");
//Kleines Programm für Scann port auf seinem eigenen Computer
String IP = "172.20.100";
for (int j = 1; j <= 254; j++) {
try {
///String IP="172.21.128.140";
// Scann this range
for (int i = 1; i < 3000; i++) {
try {
String host = IP + "." + j;
InetAddress ad = InetAddress.getByName(host);
//Creation of unconnect Socket
Socket so = new Socket();
//Connect this Socket to a server with a Hostname und Timeout: And creation of a SocketAddress from a hostname an a port

so.connect(new InetSocketAddress(ad.getHostAddress(), i), 1000);
// Close Socket after Scanning
so.close();
System.out.println("Port " + i + " ist open");
} catch (Exception e) {

}
}
}catch (Exception z) {

}
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben