|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
[JAVA] Firewall
Salve a tutti
Dopo aver letto questo interessante articolo http://www.kosmous.com/risorse/articolo.php?id=11 Mi sono deciso di testare questo firewall , solo che sono incappato in un problema... in quanti file .java lo devo suddividere? Ho creato tre file :
Il primo contenente anche le varie import ecc..ecc... Solo che non funziona , ovvero digitando il comando java MyFirewall 5000 & appare questa scritta: Codice:
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\utente>java MyFirewall 5000 &
Exception in thread "main" java.lang.NoClassDefFoundError: MyFirewall
Caused by: java.lang.ClassNotFoundException: MyFirewall
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: MyFirewall. Program will exit.
Grazie saluti
__________________
|
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
...ciao...
...puo' stare tutto in unica classe... Codice:
import java.io.*;
import java.net.*;
class SingoloSocket extends Thread {
private Socket canale;
private BufferedReader in;
private PrintWriter out;
private int porta;
public SingoloSocket(Socket s) throws IOException {
canale = s;
in = new BufferedReader(new InputStreamReader(canale.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(canale.getOutputStream())), true);
start();
}
public void run() {
try {
while (true) {
String str = in.readLine();
porta = canale.getPort();
InetAddress ia = canale.getInetAddress();
if (str.equals(null)) break;
System.out.println("La macchina: " + ia.getHostName() +
" con indirizzo IP " + ia.getHostAddress() +
" dalla porta " + porta + " si e` connessa!");
canale.close();
out.println(str);
}
System.out.println("chiudi... ");
} catch (IOException e) {
} finally {
try {
canale.close();
} catch(IOException e) {}
}
}
}
class GestConn {
public void LanciaPolling(int portaServizio) throws IOException {
ServerSocket s = new ServerSocket(portaServizio);
try {
while(true) {
Socket canale = s.accept();
try {
new SingoloSocket(canale);
} catch(IOException e) {
canale.close();
}
}
} finally {
s.close();
}
}
public static void main(String[] args) throws IOException {
GestConn gs = new GestConn();
gs.LanciaPolling(Integer.parseInt("80"));
}
}
...ciao... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Ciao e grazie innanzitutto
Ho fatto come da te suggerito , ho compilato ed eseguito il programma ma... Codice:
--------------------Configuration: <Default>--------------------
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:97)
at GestConn.LanciaPolling(MyFirewall.java:42)
at GestConn.main(MyFirewall.java:59)
Process completed.
__________________
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
...nessun errore...stai cercando di accedere ad una porta già in uso nel sistema...
...ciao Andrea... |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Quote:
Ho impostato la 5000 ora e funziona , appena ho tempo accendo l'altro pc e cerco di accedere al mio , per testarlo in pieno... Domandina: come mai , nonostante abbia reso implicito il passaggio argomenti alla main ("5000") , Jcreator continua a visualizzarmi la casella: "Set main method arguments:"
__________________
|
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
...non saprei...forse è solo un warning...
...ciao... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Capito , grazie.
Disponibilissimo , mi farò risentire se avrò problemi , ciao
__________________
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Allora , appena eseguita la prova , come indicato nel link.
Dopo aver lanciato il programma sulla mia macchina e aver digitato la telnet verso il mio pc da un'altra macchina , è apparsa una notifica di Sygate , che avvertiva che un'applicazione Java stava tentando di accedere alla mia macchina. Ho permesso che ciò avvenisse ma non è successo niente , nessun risposta nel prompt del programma. Ho disattivato allora Sygate , niente ancora...cosa potrebbe essere? Edit: in teoria sembrerebbe funzionare il firewall , dato che la connessione viene bloccata con Sygate attivato , ma non mi da neanche un messaggio di avviso sul prompt...
__________________
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Quote:
In più aggiungo: Codice:
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(canale.getOutputStream())), true); Ho cercato sui JavaDocs ma non ho trovato nulla
__________________
|
|
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
...piu' che un firewall mi sembra un semplice socket server in ascolto su una porta...il che implica che la porta "monitorata" venga impegnata quindi resa non piu' disponibile...
...ciao Andrea... |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Quote:
Si avevo notato anch'io l'effettiva utilità del "firewall" in questione , sto pian piano cercando di fargli un upgrade in modo che possa anche gestire protocolli e simili... Il tuo intervento , comunque , era riferito al mio problema di lancio dell'applicazione e di "conflitto" con Sygate? Se si , scusami ma non ho capito EDIT: altro errore mio , ho visto che la clausola TRUE fa parte della classe PRINTWRITER e , da come leggo sul JavaDocs Codice:
Parameters:
out - An output stream
autoFlush - A boolean; if true, the println, printf, or format methods will flush the output buffer
Grazie ciao , Riccardo
__________________
Ultima modifica di Dyd87 : 15-01-2009 alle 15:09. |
|
|
|
|
|
|
#12 | |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
Quote:
...ciao Andrea... |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Senigallia(AN)
Messaggi: 2069
|
Salve a tutti di nuovo
Ho aggiunto in alternativa alla TELNET , per verificare se effettivamente blocca le connessioni su porte indicate , questo programmino socket lato client 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); }
}
}
Il problema è che , al momento del lancio (stavolta con Sygate disabilitato) , non succede assolutamente nulla... La scritta presente nel lato Client non viene , giustamente , visualizzata ma neanche quella di "tentato attacco" posta nel programma Firewall... Quale potrebbe essere il problema? P.s.: al momento del lancio il firewall di Windows mi ha ribloccato l'applicazione Java alche gli ho detto di sbloccarla... EDIT: Rettifico , ho ricontrollato or ora (avevo lasciato il prompt aperto) e l'avvertimento di tentata intrusione sembra esserci stato! Incollo qui il messaggio: La macchina: localhost con indirizzo IP 127.0.0.1 dalla porta 4594 si e` connessa! Perchè sulla 4594 però? Inoltre non è stato visualizzato il messaggio "chiudi...", strano.
__________________
Ultima modifica di Dyd87 : 19-01-2009 alle 11:26. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:26.




















