Socket Socket_Programming

Diskutiere Socket_Programming im Netzwerkprogrammierung Bereich.
C

chrism120

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.
 
mihe7

mihe7

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());
                }
            }
        }        
    }
}
 
C

chrism120

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.
 
C

chrism120

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) {

}
 
C

chrism120

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....
 
mihe7

mihe7

Soll das ganze nur zur Übung sein, oder hat das einen tieferen Sinn?
 
C

chrism120

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.
 
C

chrism120

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.
 
C

chrism120

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.
 
C

chrism120

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);
}
}
 
C

chrism120

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) {
}
 
C

chrism120

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) {

}
 
VfL_Freak

VfL_Freak

Moin,

nutze doch bitte die Code-Tags!
Es erhöht die Chance, dass sich das einer ansieht nicht unerheblich!

VG Klaus
 
Thema: 

Socket_Programming

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben