Decoder une table ARP

Fermé
Enigamy Messages postés 42 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 10 août 2009 - 6 sept. 2008 à 14:06
 tkr - 17 nov. 2009 à 12:10
Bonjour je dois decoder une trame ARP et je n'ai AUCUNE idée de comment m'y prendre , la table ARP est la suivante :

ADDR HEX

0000 FF FF FF FF FF FF 00 40 05 13 65 80 08 06 00 01
0010 08 00 06 04 00 01 00 40 05 13 65 80 80 DE 0C 01
0020 00 00 00 00 00 00 80 DE 0C 02 00 00 00 00 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00



Merci d'avance !

3 réponses

BON, J'AI FAIT QUELQUES BOURDES JE REPREND MON MESSAGE :

Trame ethernet :

Pas de préambule dans ton cas.

adresse destination (6 oct) | adr. src (6) | type (2) | donnees
FF FF FF FF FF FF | 00 40 05 13 65 80 | 08 06

pour le type normalement on a :
# 0x0800 : IPv4
# 0x86DD : IPv6
# 0x0806 : ARP -> c'est ce qu'on a dans la trame

Partie ARP (=donnees de la trame ethernet) :

type_de_reseau_niv2 (2) | type_de_reseau_niv3 (2)
longeur_des_adresses_de_niveau_2 (1) | longeur_des_adresses_de_niveau_3 (2) | type_doperation (2)
adr_niv2_src (6) | adr_niv3_src(4) | adr_niv2_dst(6) | adr_niv3_dst(4)
=
00 01 (pour ethernet) | 08 00 (pour IP) | 06 (6octets pour eth) | 04 (4oct pour IP) | 00 01 (1 pour une requete 2 pour un reply) | 00 40 05 13 65 80 (adr eth source) | 80 DE 0C 01 (adr ip src)
00 00 00 00 00 00 (adr eth dest à 0 car c'est ce qu'on cherche) | 80 DE 0C 02 (adr ip dest) |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (octets de bourage)
6
Tu as là une trame ARP imbriqué dans une trame ethernet.
La trame ARP est inscrite dans la partie donnée de la trame ethernet.
Donc si tu connais la forme des trames tu résouds ton prb.
Je te donne les formes des trames à toi de découper dans ton exemple :

Trame ethernet :

preambule(8 octet) | adresse destination (6 oct) | adr. src (6) | type (2) | donnée (jusqua 1500 octet) | cheksum

pour le type normalement on a :
# 0x0800 : IPv4
# 0x86DD : IPv6
# 0x0806 : ARP
Ce qui est étonnant puisque dans ta trame le type est 0800 = IPv4 (au lieu de 0806 pour ARP)

Bref, après le type tu dois avoir jusqu'à max 1500 octets de données où tu peux lire ta requête ARP selon le shéma :

type_de_reseau_niv2 (4) | type_de_reseau_niv3 (4)
longeur_des_adresses_de_niveau_2 (2) | longeur_des_adresses_de_niveau_3 (2) | type_doperation (4)
adr_niv2_src (6) | adr_niv3_src | adr_niv2_dst(6) | adr_niv3_dst(6)

Quelques remarques :
1)à priori dans ton cas le niveau2=ethernet et le niveau3=IP
2)type_de_reseau_niv2 (4) | type_de_reseau_niv3 (4) sont apparament absents dans ta trame donc oubli ces champs.
3)type_dopertation= 1 pour une requete ARP (pour le reply on change cette valeur)
4)adr_niv2_dst(6) est mis à 00 00 00 00 00 00 comme tu peux le remarquer car c'est ce que cherche à determiner la requete ARP.
0
merci
-1