View Full Version : [JAVA] Sniffer
Barbalbero
20-08-2006, 10:15
Devo creare un'applicazione java che controlli i pacchetti della rete e ne legga l'indirizzo ip del sorgente.
E' possibile?(sì)
Qualcuno ha idee su come si possa fare?
PROBLEMA 1:
...perché le uniche applicazioni che ho visto sono quelle client-server, ma in questo caso devo poter leggere tutti i pacchetti.
PROBLEMA 2:
Ammesso di saper leggere tutti i pacchetti sulla LAN, come faccio da un pacchetto a ricavare l'ip sorgente?
Ci sono API apposite?
Cosa intendi per "pacchetti della rete"?
Sono pacchetti gestiti da te?
Devo creare un'applicazione java che controlli i pacchetti della rete e ne legga l'indirizzo ip del sorgente.
E' possibile?(sì)Per poter realizzare uno sniffer di rete, l'interfaccia di rete deve essere settata in "Promiscuous mode", una modalità che consente di ricevere qualunque pacchetto che passa sulla rete, non solo quelli destinati "legalmente" al proprio PC.
Questo non credo che sia possibile in Java. È necessario agire a livello di sistema per poter attivare una cosa del genere. Su Linux so che è possibile (ma mi sembra che si debbano avere i privilegi di root), su Windows non ne ho una idea ben precisa ... dovrei documentarmi.
Poi c'è anche un altro fatto da considerare: se il tuo PC è collegato alla rete tramite uno switch, allora non puoi ricevere i pacchetti destinati agli altri PC. :D Questo perché uno switch separa e isola le comunicazioni tra i dispositivi collegati ad esso!!
Barbalbero
20-08-2006, 13:00
sì, la storia dello switch l'avevo intuita...(però in realtà non so se l'access point wireless agisca da switch o da hub(anche perché mi sembra di aver già sentito parlare di sniffer wireless...))
E con un altro linguaggio tipo c++ o Visual Basic, sarebbe fattibile?
Perché ho trovato degli sniffer per windows, quindi in qualche linguaggio sicuramente si può fare...
Cosa intendi per "pacchetti della rete"?
Intendo un qualsiasi pacchetto in viaggio sulla LAN
Per poter realizzare uno sniffer di rete, l'interfaccia di rete deve essere settata in "Promiscuous mode", una modalità che consente di ricevere qualunque pacchetto che passa sulla rete, non solo quelli destinati "legalmente" al proprio PC.
Questo non credo che sia possibile in Java. È necessario agire a livello di sistema per poter attivare una cosa del genere. Su Linux so che è possibile (ma mi sembra che si debbano avere i privilegi di root), su Windows non ne ho una idea ben precisa ... dovrei documentarmi.
Poi c'è anche un altro fatto da considerare: se il tuo PC è collegato alla rete tramite uno switch, allora non puoi ricevere i pacchetti destinati agli altri PC. :D Questo perché uno switch separa e isola le comunicazioni tra i dispositivi collegati ad esso!!
In realta puoi ricercere i pacchetti degli altri computer, basta che ti spacci per il gateway e dopo tu ricevi i pacchetti, li sniffi e li rimandi al gateway vero.
Eheh esiste pure un programma che lo fa già, pero non è scritto in java.
Prova a guardare su mokabyte ho letto qualcosa sugli sniffer in java.
Barbalbero
20-08-2006, 13:10
Per spacciarmi per il gateway dovrei modificare in qualche modo il mio indirizzo IP, giusto?
Ma in questo modo non si generano dei conflitti di IP sulla rete?
sottovento
20-08-2006, 14:47
Ciao,
per costruire sniffer in Java ti basta scaricare JPcap (open source se non erro), che ti mette a disposizione le primitive di WinPCap o del corrispondente Linux del quale non ricordo il nome.
High Flying
Sottovento
È necessario agire a livello di sistema per poter attivare una cosa del genere. Su Linux so che è possibile (ma mi sembra che si debbano avere i privilegi di root), su Windows non ne ho una idea ben precisa ... dovrei documentarmi. servono privilegi speciali solo per installare il driver necessario all'opera, ma una volta che è installato e configurato come driver di avvio puoi comunicare con esso attraverso un Device Object con qualsiasi account utente, questo perché il driver può configurare le restrizioni di sicurezza relative al DO e di conseguenza può crearlo in maniera tale da renderlo accessibile da chiunque.
tornando IT consiglio anche io questo JPcap: non lo conosco ma conosco WinPCap, e dal nome intuisco che si tratta di un layer JNI per poter usare WinPCap; è sicuramente la soluzione ideale al problema
sottovento
20-08-2006, 15:07
[omissis]
tornando IT consiglio anche io questo JPcap: non lo conosco ma conosco WinPCap, e dal nome intuisco che si tratta di un layer JNI per poter usare WinPCap; è sicuramente la soluzione ideale al problema
Esatto
Purtroppo mi e' capitato di avere dei crash, su applicazioni H24. Non ricordo quale versione usavo, pero'....
High Flying
Sottovento
secondo me era colpa di WinPCap: non è perfettissimo, per esempio con la mia configurazione (scheda USB Wireless che comunica col router/firewall) non funziona
sottovento
20-08-2006, 15:25
secondo me era colpa di WinPCap: non è perfettissimo, per esempio con la mia configurazione (scheda USB Wireless che comunica col router/firewall) non funziona
Non posso escluderlo. Dovendo tornare sull'argomento fra qualche settimana, terro' in preziosa considerazione questa info.
Avevo avuto diversi crash della JVM e l'azione di recupero si limitava semplicemente a rilanciare... controllero' magari le nuove versioni.
High Flying
Sottovento
Barbalbero
20-08-2006, 18:58
OK!
Grazie mille, proverò questo WinPCap
sottovento
20-08-2006, 19:16
OK!
Grazie mille, proverò questo WinPCap
Solo per rimarcare: se vuoi usare Java, devi installare WinPCap e poi JPCap; quest'ultima e' la libreria che ti permette di "vedere" WinPCap come una serie di classi Java, estremamente semplici da usare (l'applicazione minima implementa un solo metodo di un'interfaccia, il quale e' chiamato all'arrivo di un pacchetto).
In alternativa, devi usare un altro linguaggio quantomeno per accedere via JNI a WinPCap
High Flying
Sottovento
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.