Salve a tutti
Girovagando qua e là per la rete , in cerca di idee , mi sono imbattutto in questo progetto
http://www.kosmous.com/risorse/articolo.php?id=11
Che , opportunamente indentato (si spera) , risulta così :
Il mio problema è questo: dopo essermi creato anche un programma Lato Client che mi istanzi una socket verso il pc dotato del programma firewall (in questo lo stesso , con LocalHost) questo Si funziona (diciamo) ma a schermo mi viene visualizzata una porta diversa da quello che avevo intenzione di "attaccare"... come mai?codice:/* La try e la catch utilizzate dopo , gestiscono le ECCEZIONI di codice */ /* Classe definitrice SOCKET */ class SingoloSocket extends Thread { /* La classe SingoloSocket acquisisce attributi e metodi della superclasse Thread */ private Socket canale; /* Indica il socket che sta effettuando lo scanning */ private BufferedReader in; /* Stringa di comando del Pc attaccante memorizzata nel buffer */ private PrintWriter out; /* Stringa di comando Pc attaccante , dopo aver effettuato la telnet. Verrà visualizzata a video */ private int porta; /* Porta alla quale cerca di fare accesso il malintenzionato */ /* COSTRUTTORE SOCKET */ public SingoloSocket(Socket s) throws IOException { canale = s;/* A canale viene assegnato il socket passato come parametro */ in = new BufferedReader(new InputStreamReader(canale.getInputStream())); /* InputStreamReader legge e decodifica le le stringhe sul canale , le quali vengono memorizzate in un nuovo oggetto BufferedReader , appunto IN */ out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(canale.getOutputStream())), true); start(); /* Metodo di avvio del Thread che , in questo caso , serve per avviare la Socket (vedi EREDITARIETA') */ } /* Procedura atta al controllo INTRUSIONI (la più importante del nostro Firewall) */ public void run() { try { while (true) { /* Ciclo Infinito dato che il Firewall deve essere sempre attivo */ String str = in.readLine(); /* Str immagazzina il valore del comando inserito dal pc "attaccante" */ porta = canale.getPort(); /* Porta sulla quale avviene l'attacco */ InetAddress ia = canale.getInetAddress(); /* Memorizza l'indirizzo del'intruso */ if (str.equals(null)) break; /* Controllo dedicato all'eventuale o meno inserimento di caratteri dell'intruso Se non viene rilevato nulla si ricomincia dall'inzio della try */ /* Altrimenti (implicito) */ System.out.println("La macchina: " + ia.getHostName() + " con indirizzo IP " + ia.getHostAddress() + " dalla porta " + porta + " si e` connessa!"); /* Visualizza a video le informazioni dell'Host intruso */ canale.close(); /* Chiude la socket */ out.println(str); /* Visualizza a video il comando digitato dall'intruso */ } System.out.println("chiudi... "); /* Si annuncia la chiusura del canale */ } catch (IOException e) { /* Eccezione alzata in caso di errore in I/O */ } finally { /* La finally , metodo che viene sempre eseguito nonostante la try abbia avuto successo o meno , chiude la connessione */ try { canale.close(); } catch(IOException e) {} /* Eccezione alzata in caso di errore in I/O */ } } } /* Classe di Gestione della CONNESSIONE */ class GestConn { public void LanciaPolling(int portaServizio) throws IOException { ServerSocket s = new ServerSocket(portaServizio); /* Viene instanziato un ServerSocket, un oggetto che attende richieste di connessione dall'esterno (in ascolto su di una porta) */ try { while(true) { Socket canale = s.accept(); /* Il canale di comunicazione è istanziato */ try { new SingoloSocket(canale); } catch(IOException e) { canale.close(); } } } finally { s.close(); } } public static void main(String[] args) throws IOException { GestConn gs = new GestConn(); /* Viene istanziata una nuova connessione (definito quindi un Server Socket ecc...)*/ gs.LanciaPolling(Integer.parseInt(args[0])); /* La funzione LanciaPolling richiede in ingresso il numero della porta Eventualmente gestibile tramite il parametro args , ovvero ciò che viene digitato al momento dell'esecuzione da prompt */ } }
Es: La porta che voglio attaccare è la 5000 , a schermo (sul prompt da cui ho lanciato il Firewall.java) mi viene visualizzato "La macchina 127 ecc..ecc.. sulla porta 4954 è connessa"
Ho disattivato sia il Firewall che uso solitamente su pc (Sygate) che il windows firewall , ovvero gli ho fatto sbloccare l'applicazione java in questione...
Socket Lato Client (presa gentilmente da una discussione qui sul forum)
Grazie a tutti per l'aiutocodice:import java.io.*; import java.net.*; public class ThreadAttack { public static void main(String[] args ) { try { Socket canale = new Socket("localhost",5000); ObjectOutputStream oos=new ObjectOutputStream(canale.getOutputStream()); oos.writeObject("Ciao,come va?"); canale.close(); } catch (Exception e) { System.err.println(e); } } }![]()

Rispondi quotando
