|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 192
|
[java] simulazione di pacchetti ICMP - tracerouting , come ricondursi a java
Devo preparare un mini progettino non sto chiedendo la pappa pronta
Mi sono scontrato con un problema...sembrerebbe che java non supporti nativamente la possibilità di programmare in rete così a basso livello. Confermate? Ho visto che alcuni risolvono con JMA (che dovrei studiarmi), ma temo sia solo per windows e io vorrei stare in ambiente unix. Altri usano Jcap. Il tutto, penso, verrebbe più comodo con phyton. Però non lo conosco. Appena ho tempo me lo studio, ma temo sarebbe una cosa molto lunga..e soprattutto non so se sia il caso di sapere poco di tanti linguaggi invece di sviscerarne uno e conoscerne quante più librerie possibili. Ad ora ho studiato C approfondendone più che altro le strutture dati. Java sempre strutture dati + swing + socket (sto seguendo il corso ora). Pareri? Consigli? Mi affido a voi che avete una visione più ampia edit: lavorando a "basso" livello, forse verrebbe comodo il C? Non ho mai studiato il networking in C, ma posso farlo visto che non devo partire da 0 Ultima modifica di Mattz : 01-10-2011 alle 01:55. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
mi sto informando per fare progetti relativi al networking, non ho quindi esperienza ma ho sbattuto il naso contro questa pagina http://download.oracle.com/javase/tu...etworking.html
che recita Quote:
|
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 192
|
magnifico
Quindi con il java "di base" non concludo nulla perchè sono troppo alto. Era meglio studiarsi il phyton Visto che non voglio studiare phyton con l'acqua alla gola, devo riuscire ad adattarmi al java. Per ora ho importato Jpcap (che permette di lavorare anche a più basso livello) ... adesso dovrò studiarmi la documentazione e darmi da fare. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Oct 2008
Messaggi: 192
|
Quote:
devo.. quello che ho in mente è un'implementazione in java del classico tracerouting...quindi mi è utile poter creare dei pacchetti ICMP... |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Premetto che le mie limitate conoscenze sono praticamente rivolte al solo lato desktop, quindi so poco o niente di programmazione internet (a parte le nozioni generali). Incuriosito da questo thread sono andato a vedere cosa si intende per traceroute e ho cercato l'home page di questa Jpcacp. In meno di cinque minuti ho trovato un sorgente di esempio di ruimentale traceroute fatto in Java usando le Jpcap. Consiglio all'autore del thread di andare nella home page di Jpcap e informarsi, in particolare una visita nella sezione Samples potrebbe essere proficua. @EDIT: tra l'altro dando un'occhio ai javadoc è facile rendersi conto che Jpcap non deve essere un'API che richieda troppo tempo per essere assimilita: a livello quantitativo è composta da due package per un totale di un pugno di classi.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 03-10-2011 alle 10:32. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Non credo proprio che un traceroute si possa fare da J2SE liscio. Considera che devi forgiare dei pacchetti a mano, incrementando il time-to-live per ogni hop (traceroute funziona così: mandi pacchetti sempre allo stesso endpoint ma inizi con TTL = 1, poi 2, 3, 4, etc... e vedi chi ti risponde).
La via più facile è usare libpcap o un suo binding (come jpcap appunto).
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 03-10-2011 alle 10:32. |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 192
|
Jpcap è davvero molto utile. Dopo aver perso fin troppo tempo per compilarlo per il mio ubuntu 64bit, sto implementando il tracerouting ... e non è neppure difficile, devo dire.
ps. Ho dato un occhiata alla pagina con gli esempi...assurdo..ci sono pure i codici di cui ho bisogno edit: ne approfitto per chiedere una cosa sui pacchetti...sono novizio di queste cose: ICMP è incapsulato in IP, ma per inviare il pacchetto non dovrei "scegliere" un protocollo di livello4 tra TCP e UDP? Mi spiego meglio: se non usassi jpcap , dovrei manualmente aprire una socket (tcp o udp) e inviare pacchetti (penso)...invece con jpcap posso direttamente creare un pacchetto ICMP, settare i vari campi e mandare in non so che modo tramite un suo metodo. La classe ICMP non è legata in nessun modo a quella TCP o UDP. Non capisco bene la questione dell'incapsulamento dei vari livelli. Ogni pacchetto che invio devo sempre incapsularlo fino ad arrivare a livello 4? edit2: continuando a studiarmi queste cose , trovo spesso scritto che ICMP è incapsulato in ip e che quindi non è garantita la consegna. Rendo allora più chiara la domanda del mio primo edit: come è possibile inviare un pacchetto , senza passare attraverso un protocollo di livello 4? O jpcap con il suo send.(pacchetto); in realtà sta automatizzando il passaggio a livello 4, oppure non capisco come sia possibile inviare un pacchetto ICMP edit3: e poi basta Ultima modifica di Mattz : 03-10-2011 alle 10:40. |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 192
|
creo un nuovo messaggio, non per uppare, ma per non pasticciare ulteriormente quello sopra.
Mi sono ritrovato di fronte ad un problema concettuale che non riesco a risolvere: una volta creato il pacchetto ICMP con i campi di mio interesse e i campi dedicati al protocollo IP, devo specificare il datalink. Ed è qui che mi ritrovo a non capire. So che il datalink è di livello inferiore (2) e ne comprendo la funzione, ma non capisco fino a che punto devo essere io a specificare i vari livelli. Ovvero, mettendo di dover mandare un pacchetto dati: scelgo ad esempio TCP (livello 4), al suo interno imposto i campi IP (livello 3) altrimenti a chi manda il pacchetto.. , nei vari codici vedo poi che anche il livello 2 viene specificato: si ottiene il MAC della propria macchina e il MAC del gateway e si mette tutto in un campo datalink. Ma allora fino a che punto devo incapsulare protocolli? Ogni volta devo arrivare a livello2? Forse dipende dal tipo di linguaggio/libreria che sto usando? Ad esempio lavorando con le socket di java dovrei solo preoccuparmi del livello 4 (scegliendo la socket TCP o UDP)? E' proprio una lacuna concettuale che non riesco a risolvere...e se qualcuno avesse la pazienza di spiegarmi cosa sto sbagliando mi farebbe un grande favore...perchè se non capisco bene le basi non potrò fare applicazioni complesse (ma neppure semplici..) Grazie edit: forse ho trovato conferme: "If this JpcapSender instance was created by openRawSocket(), you can only send IP packets, but you may not need to set the Datalink layer's header of the IP packets you want to send. Note: the implementation and behavior of a raw socket may vary in different OS. For example, in Windows 2000/XP, you need to manually set the datalink/IP headers of a packet. " quindi dipende proprio dal sistema + linguaggio + metodi ... o no? edit2: riedito solo per far sapere che Jpcap ha una documentazione che fa schifo. Non c'è scritto praticamente nulla e si deve andare a tentativi. Oltre a questo , l'intero funzionamento delle librerie è molto dubbio visto che certi parametri vengono ignorati senza troppi complimenti nel momento di creazione del pacchetto. Ultima modifica di Mattz : 04-10-2011 alle 14:25. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2011
Messaggi: 381
|
ciao, il discorso è abbastanza semplice e si parte dal presupposto che tu hai OBBLIGATORIAMENTE bisogno dell'indirizzo mac mittente e dell'indirizzo mac del next-hop. Detto questo la documentazione che hai incollato spiega che in alcuni OS l'assegnamento dei vari mac address è automatica, in altri no.
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:29.




















