p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre à l'essai
    Inscrit en
    mars 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 61
    Points : 20
    Points
    20

    Par défaut Comment récupérer une adresse MAC ?

    Bonjour,
    J'ai besoin, depuis une application, de vérifier le type de matériel connecté à une adresse IP connue.
    Je n'ai pas de pb pour faire un ping et savoir si l'équipement existe mais je ne trouve pas comment récupérer son adresse MAC pour pouvoir l'identifier.
    Quelqu'un sait-il comment faire (à partir de l'API Windows) ?

    Merci.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juillet 2002
    Messages : 14
    Points : 17
    Points
    17

    Par défaut Oui...

    Tiens! cette question me rappel l'école

    Je connais deux méthodes :

    - la première est complètement absurde : tu fait un "arp -a" dans une ligne de commande et tu récupères un tableau du type :

    Adresse Internet Adresse physique
    yyy.yyy.yyy.yyy 00-00-00-11-22-33

    Tu parcours le tableau et tu choppe l'adresse "physique" (MAC) associée...

    Problème ? Hé ben! Heu! Ca marche que sur un réseau local! et même, j'irais plus loin en disant que ça ne marche que sur le même segment de réseau, c'est à dire que dès que tu passe un routeur, ou même un pont transparent, tu chopperas l'@ MAC du-dit routeur ou pont en lieu et place de celle du destinnataire...

    Avantage : un appel système, un parcours de tableau et une conditions et c'est gagné!

    - la deuxième est tout aussi simple : il te suffit d'interroger la bonne entry dans la bonne MIB SNMP (je crois que c'est PhysAdress mais...?!) et le tour est joué...

    Avantage : ça marche à tout les coup quand SNMP est actif sur la machine
    Problème : toutes les machines n'ont pas SNMP!

    MORALITE : obtenir l'@ MAC d'une machine à distance n'est jamais assuré à 100%...

    Courage...

  3. #3
    Membre éclairé
    Avatar de Altau
    Inscrit en
    juillet 2002
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : juillet 2002
    Messages : 288
    Points : 307
    Points
    307

    Par défaut

    A partir d'une application Windows (et un Windows récent), possibilité d'utiliser IPHLPAPI.DLL de Microsoft :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcesdkr/htm/_wcesdk_iphlpapi_module.asp
    puis la commande SendArp.
    Beaucoup d'autres commandes puissantes disponibles.
    Bon courage.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juillet 2002
    Messages : 14
    Points : 17
    Points
    17

    Par défaut Forcément si c'est sous Windows...

    ...ça facilite les choses

  5. #5
    Membre à l'essai
    Inscrit en
    mars 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 61
    Points : 20
    Points
    20

    Par défaut Pbs avec SendArp

    Tout d'abord, merci pour ces informations.
    Malheureusement, ça ne marche pas très bien.

    Dans l'environnement W2000 SP2, la fonction SendArp() de la dll iphlpapi.dll retourne 0 (erreur) et le GetLastError() également.
    Aucune adresse MAC n'est donc retournée.

    Sous dos, le ping, suivi de la commande arp -a sur l'adresse IP questionnée fonctionne correctement.
    Pour info, l'adresse IP 10.20.52.1 est convertie en valeur décimale 169096193 dans le champ IpAddr de la fonction SendArp(). Je suppose que c'est ok.

    Une hypothèse ??

  6. #6
    Membre éclairé
    Avatar de Altau
    Inscrit en
    juillet 2002
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : juillet 2002
    Messages : 288
    Points : 307
    Points
    307

    Par défaut

    As-tu pensé à inverser les octets du DWORD avant d'appeler la fonction ?
    (X86 est inversé par rapport au format "Réseau")
    Alain

  7. #7
    Membre à l'essai
    Inscrit en
    mars 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 61
    Points : 20
    Points
    20

    Par défaut Pb avec SendArp (suite)

    Tout juste. L'adresse est bien inversée.

    J'ai trouvé un bout de code qui devrait faire ce que je veux à l'adresse : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tcpip/tcpip_4wz4.asp.

    Comme je n'ai pas le SDK (platform SDK) qui va bien, j'utilise simplement iphlpapi.dll récupéré sur le net.

    Pour l'instant, je ne parviens toujours pas à obtenir une adresse MAC.
    Selon l'adresse IP, soit SendArp() retourne une erreur, soit il retourne NO_ERROR mais la champs de l'adresse MAC supposée reçue est à 0 (??).

    Je poursuis ...

  8. #8
    Membre à l'essai
    Inscrit en
    mars 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 61
    Points : 20
    Points
    20

    Par défaut SendArp OK

    En utilisant le code mentionné dans le message précédent et en chargeant dynamiquement iphlpapi.dll,
    CA TOURNE.

    Seul restrictions :
    Il faut être sous NTSP6 ou W2000.

    Merci encore pour le coup de main.

Discussions similaires

  1. Comment obtenir une adresse mac sur python
    Par Wael Maaoui dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 19/02/2007, 13h52
  2. Récupérer une adresse MAC sur l'entrée standard
    Par the_ionic dans le forum Réseau
    Réponses: 14
    Dernier message: 20/07/2006, 09h56
  3. récupérer une adresse mac d'un pc distant
    Par Mut dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 03/02/2006, 11h01
  4. [HTTP] Comment récupérer l'adresse de base d'une URL ?
    Par eric30eric dans le forum Web & réseau
    Réponses: 2
    Dernier message: 02/10/2005, 17h28
  5. Réponses: 5
    Dernier message: 25/03/2003, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo