Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Muro di Fuoco...

  1. #1
    Utente di HTML.it L'avatar di dyd87
    Registrato dal
    Mar 2007
    Messaggi
    64

    Muro di Fuoco...

    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ì :
    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 */
    													 
    		}
    }
    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?

    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)
    codice:
    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); }
    }
    }
    Grazie a tutti per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di dyd87
    Registrato dal
    Mar 2007
    Messaggi
    64
    Up

  3. #3
    Utente di HTML.it L'avatar di dyd87
    Registrato dal
    Mar 2007
    Messaggi
    64
    Allora
    Forse ho capito il perchè mi visualizzi sempre delle porte diverse al momento del lancio del Client.
    Sono venuto a conoscenza delle Porte Locali e Remote , la remota in questo caso è la 5000 (indetta dal ServerSocket) mentre le locali (quelle sfruttate dal client) cambiano ad ogni avvio di connessione... giusto no?
    Andiamo per gradi adesso:

    1°) Come mai il messaggio "Ciao come va" lanciato dal Client non viene visualizzato sul Server?
    Perchè già il Firewall mi blocca quella porta e non permette visualizzazioni?

    2°)E' corretto il metodo di visualizzazione messaggio? La si fa uso di Object , io ho visto Data da altre parti , non so

    Intanto queste due "inezie" (per voi)
    Grazie saluti

  4. #4
    Utente di HTML.it L'avatar di dyd87
    Registrato dal
    Mar 2007
    Messaggi
    64
    Nessuno?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.