Analyse trame

hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004 - 1 déc. 2003 à 21:00
 master400 - 5 janv. 2010 à 23:27
je souhaite enregistrer dans un fichier ( texte par exemple )des trame ethernet comment faire ??
merci
Legrand
A voir également:

46 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 déc. 2003 à 22:09
:big) Neodante :big)

Tout ce que je peux te dire c'est que de base ce n'est pas possible car c'est du bas niveau ! En revanche cela est rendu possible grâce à la jpcap qui est un wrapper de la pcap écrite en C. Ton code sera difficilement portable mais l'implémentation d'un sniffer ne tient que sur une vingtaine de lignes !!!
Je posterais mon prog de sniffage dans 2 mois après avoir passer mes oraux -> Attaques TCPIP en Java !
Donc soit tu vas sur www.sourceforge.net pour télécharger la jpcap (installe aussi la libpcap sur ton système pour que cela marche !), soit tu attends deux mois ! :-p
@+
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 déc. 2003 à 22:09
:big) Neodante :big)

Au fait t'en à besoin pour faire quoi ????
@++
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
2 déc. 2003 à 09:02
je m explik.

Description : Développement d'un serveur de cookies sous Windows en utilisant les sockets et controle des URLs dans une base de données.Envoi d 'une alerte par mail automatique.

en faite le but est d avoir un monitoring ( un client ) d'une part et des postes distants d'autre part ( des serveurs ).

le client doit pouvoir interroger a la demande un serveur qui lui doit lui fournir les infos necessaire afin de savoir sur quel site il est. suis je clair ?? ( soit en utilisant les cookies , soit en utilisant un fichier stocké qui lui contient les des trames)

merci de ton aide !!
Legrand
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 déc. 2003 à 09:26
:big) Neodante :big)

Si c'est pour de l'internet HTTP, alors un simple proxy suffit, tu as juste à analyser la requête HTTP GET et tu auras toutes les statistiques que tu veux !
M'enfin si ce n'est pas pour du HTTP ...
Tiens si t'as besoin d'un proxy en va -> va dans mes sources (je ne garantis pas que le programme puisse être utilisé brut mais avec quelques modifications et une gestion des threads un peu plus approfondi avec une ThreadPool par exemple ...)
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
2 déc. 2003 à 09:50
désolé mais la je suis perdu !!! oui c'est bien pour du http mais je ne vois pas a quoi sert le proxy du moins je ne comprends pas car je ne sais pas l interet...!!!
en plus faut configurer le proxy sur l'ie du client ??
je pense que je m exprime mal et donc je tu n'a pas forcment compris ce que dois faire mon appli!

si possibilite de contact telephonique pour expliker mon truc je suis preneur . merci de consacrer du temps pour les debutants !!!
;oP

Legrand
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 déc. 2003 à 11:42
:big) Neodante :big)

En effet j'ai peut être pas tout à fait saisi le but ...
Là je suis au boulot donc le téléphone c mort !
En revanche, si tu veux m'appeler au ... attends je t'envoie un message dans la boite mail du site ... :big)
@+
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
2 déc. 2003 à 15:23
Re !
j ai instaler winpcap ,ainsi que jpcap. c'est cool avec ce code java j arrive a voire les trames qui passe !!

import jpcap.*;
class Tcpdump implements JpcapHandler
{
public void handlePacket(Packet packet){
System.out.println(packet);
}
public static void main(String[] args) throws java.io.IOException{
String[] lists=Jpcap.getDeviceDescription();
System.out.println("Start capturing on "+lists[0]);
Jpcap jpcap=Jpcap.openDevice(Jpcap.getDeviceList()[0],1000,false,20);
jpcap.loopPacket(-1,new Tcpdump());
}
}

par contre la je recupere tt les trames ( udp , arp ,.. ) je souhaite que les tcp comment faire. deplus le resultat je veux le stocker dans un fichier .. j ai essayé avec la suite mais sans y parvenir!

encore un peu d aide stp

// public void JpcapWriter(Jpcap jpcap,String essai) throws java.io.IOException{}

// public void closeDumpFile(){}

// public void writeDumpFile(Packet packet){}


Legrand
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 déc. 2003 à 19:26
:big) Neodante :big)

Pour limiter tes trames aux TCP regarder dans les tutoriaux et particulièrement le filtre qui n'est rien d'autre qu'une chaine : "proto TCP" ....
@+
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
3 déc. 2003 à 09:43
si par exemple tu as un exemple de code pour le jpcapwriter et aussi pour ne filtrer que le tcp je veux bien car pas trouver dans les tutoriaux ( du moins si mais pas compris comment l utiliser)

merci

et bonne journée au faite !
Legrand
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 déc. 2003 à 13:23
:big) Neodante :big)

Comme tu as pu le voir, la jpcapwriter est un projet à l'abandon, moi aussi je suis à la recherche d'un forgeur de paquet TCP/IP.... donc si tu trouves ce serait magnifique ! De mon côté je planifie de créer mes propres classes en créant des JNI sur le libnet (tout comme jpcapwriter). :-p
Pour les filtres, il y a des exemples dans les tutoriaux (en fait c'est souvent la seule différence entre les tutoriaux, sinon la doc de jpcap dis d'aller regarder la doc de lib pcap !
Les filstres ne sont que des chaines de caractères et il me semble qu'il y a un tutorial qui fait que du TCP/IP sinon la chaîne de filtre est : "proto TCP" pour filtrer que le TCP ...
@+
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
3 déc. 2003 à 13:58
pourquoi tu dis a l abandon

a cette adresse apparement jpcapwriter marche et est debbuger ( what's new) mais comment ca marche ????

http://netresearch.ics.uci.edu/kfujii/jpcap/doc/index.html
Legrand
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 déc. 2003 à 14:59
:big) Neodante :big)

Qaund je te disais à l'abandon je te parlais de la jpwriter qui est censé faire exactement l'inverse jpcap cad construire des paquets ! Ce projet est aussi sur source forge mais est complètement mort ! Le lien que tu m'as donné et que je connaissais ne parle que de la jpcap (à moins que je n'ai pas vu certains éléments ?) uniquement.
Je regarde de plus près ...
@+
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 déc. 2003 à 15:08
:big) Neodante :big)

J'ai vu qu'il était ecrit jpcapwriter mais je ne sais pas où la trouver !!! J'ai chercher sur google et effectivement celui-ci nous ramène vers la Javadoc du lien que tu m'as donné !
Je vais regarder ça de plus près ce soir, et je vais t'envoyer un petit exemple de filtre TCP en même temps !
:big) @+
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
3 déc. 2003 à 15:12
sur http://netresearch.ics.uci.edu/kfujii/jpcap/doc/document.html

tu vas dans le menu documents puis api manuel . la tu trouveras des infos sur jpcapwriter !!

Intereesant hein !!

j attends tes petits morceuax de code !!

l'union fait la force !!!
Legrand
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
3 déc. 2003 à 16:13
pour aide voici un lien montrant des exemples de script :
http://netresearch.ics.uci.edu/kfujii/jpcap/src/java/jpcap/

ici il parle de jpcapwriter et autre ...

( j ai essayer de mon coté je capte rien faut m aider a demarrer !!)

si tu peux adapter le code que je t avais envoyer la derniere fois ( qui remontait toutes les trames ) ca serait cool !!
( remonter que les tcp et les enregistrer les trames ds un fichier )
je te remercie !
Legrand
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 déc. 2003 à 19:22
:big) Neodante :big)

En fait je viens de réaliser qu'il existe 2 jpcap sur le net ! Là première et celle que j'ai utilisé se trouve sur souceforge.net et l'autre est sur le site netresearch !
Les exemples que j'ai sont fait avec la jpcap de sourceforge !
Tu veux toujours mes sources ???? ;)
@+
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
3 déc. 2003 à 19:25
:big) Neodante :big)

Voilà un bout d'une de mes sources de test de la jpcap de sourceforge (attaention c'est long !):
package tcpipattacker.modules;

import net.sourceforge.jpcap.capture.*;
import net.sourceforge.jpcap.net.*;
import tcpipattacker.*;

public class sniff
extends Module {

public String getName() {
return "sniff";
}

public String getHelp() {
return "SYNOPSIS : sniff\n" +
"DESCRIPTION : Sniff the network. This module is entirely assisted.\n" +
"Written by Julien CHABLE (jchable@itin.fr)\n";
}

public String run(String[] arguments) {
// Console d'affichage
Console console = new Console("sniff");
// Paramètres de la capture
int packetCount;
String filter = "";
String device;

try {
console.println("Instantiate Capturing Engine");
PacketCapture pcap = new PacketCapture();
console.println("Check for devices");
console.println("Available network devices on your machine :");
String[] devices = PacketCapture.lookupDevices();
// Affiche tous les accès réseau
for (int i = 0; i < devices.length; ++i)
console.println("\t " + i + " : " + devices[i]);
console.println("Use network device :");
device = pcap.findDevice();
console.println(device);
console.println("Open device to capturing (requires root)");
pcap.open(device, true);
console.println("BPF filter (see pcap help) :");
// TIENS UN FILTRE
filter = console.prompt();
pcap.setFilter(filter, true);
console.println("Register a listener for packets");
pcap.addPacketListener(new PacketHandler());
console.println("How many packets to capture :");
packetCount = console.promptInt();
console.println("Capturing packets ...");
pcap.capture(packetCount);
}
catch (Exception e) {
return "Module " + getName() + " error : " + e.getMessage();
}

return "Succesfull execution of " + getName() + "!";
}
}

final class PacketHandler
implements PacketListener {
private String sourceAddress;
private String destinationAddress;
private String dataPacket;
private Console console = new Console();

public void packetArrived(Packet packet) {
try {
// Trame Ethernet
if (packet instanceof EthernetPacket) {
EthernetPacket ethernetPacket = (EthernetPacket) packet;
sourceAddress = ethernetPacket.getSourceHwAddress();
destinationAddress = ethernetPacket.getDestinationHwAddress();
console.println("[Ethernet] : from <" + sourceAddress + "> to <" +
destinationAddress + ">");
}
// Paquet ARP
if (packet instanceof ARPPacket) {
ARPPacket arpPacket = (ARPPacket) packet;
byte[] data = arpPacket.getARPHeader();
console.print("\t[ARP] : " +
(arpPacket.getOperation() == ARPFields.ARP_OP_REQ_CODE ?
"Request" : "Reply"));
console.print(" from " + arpPacket.getSourceProtoAddress() + " to " +
arpPacket.getDestinationProtoAddress());
console.println(" - Header length : " + arpPacket.getHeader().length +
" - Data Length : " + arpPacket.getData().length);
}

// Paquet IP
if (packet instanceof IPPacket) {
IPPacket ipPacket = (IPPacket) packet;
byte[] data = ipPacket.getIPData();
sourceAddress = ipPacket.getSourceAddress();
destinationAddress = ipPacket.getDestinationAddress();
dataPacket = new String(data, "ISO-8859-1");
console.println("\t[IP] : from <" + sourceAddress + "> to <" +
destinationAddress + ">\n\t\t" +
dataPacket);
}
// Paquet ICMP
if (packet instanceof ICMPPacket) {
ICMPPacket icmpPacket = (ICMPPacket) packet;
byte[] data = icmpPacket.getICMPData();
sourceAddress = icmpPacket.getSourceAddress();
destinationAddress = icmpPacket.getDestinationAddress();
dataPacket = new String(data, "ISO-8859-1");
console.println("\t[ICMP] : " +
ICMPMessage.getDescription(icmpPacket.getMessageCode()) +
"\n\t\tData : " + dataPacket);
}
// Paquet IGMP
if (packet instanceof IGMPPacket) {
IGMPPacket igmpPacket = (IGMPPacket) packet;
byte[] data = igmpPacket.getData();
sourceAddress = igmpPacket.getSourceAddress();
destinationAddress = igmpPacket.getDestinationAddress();
dataPacket = new String(data, "ISO-8859-1");
console.println("\t[IGMP] : " +
IGMPMessage.getDescription(igmpPacket.getMessageType()) +
" " + igmpPacket.getGroupAddress() + "\n\t\tData : " +
dataPacket);
}
// Paquet TCP
if (packet instanceof TCPPacket) {
TCPPacket tcpPacket = (TCPPacket) packet;
byte[] data = tcpPacket.getTCPData();
dataPacket = new String(data, "ISO-8859-1");
console.print("\t[TCP] - Port source : " +
String.valueOf(tcpPacket.getSourcePort()) +
" (" + IPPort.getName(tcpPacket.getSourcePort()) +
") Destination port : " +
String.valueOf(tcpPacket.getDestinationPort()) +
" (" + IPPort.getName(tcpPacket.getDestinationPort()) +
")\n\tSequence Number : " +
String.valueOf(tcpPacket.getSequenceNumber()) +
"\n\tAcknowledgment Number : " +
String.valueOf(tcpPacket.getAcknowledgmentNumber()) +
"\n\tHeader Length : " +
String.valueOf(tcpPacket.getTCPHeaderLength()));
// Flags
if (tcpPacket.isUrg())
console.println("\n\tURG[0x" + Integer.toHexString(tcpPacket.getUrgentPointer()) + "]");
if (tcpPacket.isAck())
console.println("\n\tACK[0x" + Long.toHexString(tcpPacket.getAcknowledgmentNumber()) + "]");
if (tcpPacket.isPsh())
console.println("\n\tPSH");
if (tcpPacket.isRst())
console.println("\n\tRST");
if (tcpPacket.isSyn())
console.println("\n\tSYN[0x" + Long.toHexString(tcpPacket.getSequenceNumber()) + "]");
if (tcpPacket.isFin())
console.println("\n\tFIN");
console.println("\tData : " + dataPacket);
}
// Paquet UDP
if (packet instanceof UDPPacket) {
UDPPacket udpPacket = (UDPPacket) packet;
byte[] data = udpPacket.getData();
dataPacket = new String(data, "ISO-8859-1");
console.print("\t[UDP] - Port source : " +
String.valueOf(udpPacket.getSourcePort()) +
" (" + IPPort.getName(udpPacket.getSourcePort()) +
") Destination port : " +
String.valueOf(udpPacket.getDestinationPort()) +
" (" + IPPort.getName(udpPacket.getDestinationPort()));
}
console.println("");
}
catch (Exception e) {
e.printStackTrace();
}
}
}

Voilà je t'avais prévenu ! 8-)
@+
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
4 déc. 2003 à 09:03
je comprends mieux maintenant ! tu ne connaissais pas les 2 versions ??
Au faite mon appli est sous windows ca marche bien avac la jpcap de souceforge.net.? ( si oui comment l installer !merci !)

J ai lu ton code ! merci !!
si jamais tu essaye l'autre jpcap je suis interressé si tu arrives a faire ce que je veux faire ( essaye vu tes talants tu y arrivera toi car apparement simpe a magnier)

a +
Legrand
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
4 déc. 2003 à 09:17
:big) Neodante :big)

La jpcap de sourceforge marche très bien ,aucun souci d'installation et d'exécution à ma grande surprise (souvent les projets open source sont un peu lourd à configurer ...) !!
Pour l'installer rien de plus simple tu copie les fichier java dans ton répertoire de travail et tu utilise les classes tel quelles !
Je vais essayer de me mettre à l'autre version car j'ai besoin de construire des paquets donc dés que j'ai un peu de code je te le met, mais cela pas avant 1 ou 2 semines!
:-p @+
0
hoffnanard Messages postés 19 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 26 janvier 2004
4 déc. 2003 à 09:27
mais faut que j installe quoi ? ou sont les classes ??? sur le site il faut telecharger quoi pour windows ? merci de m expliker stp!!

avec l autres versions en 2 lignes tu remontes toutes les trames !!!

Legrand
0
Rejoignez-nous