IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

(débutant vb.net) Récupérer l'adresse MAC d'un appareil d'après son adresse IP


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut (débutant vb.net) Récupérer l'adresse MAC d'un appareil d'après son adresse IP
    Bonjour,
    je suis à la recherche d'une fonction qui me permettrait de récupérer l'adresse Mac d'un appareil pour lequel j'ai l'adresse IP.
    Actuellement, mon programme fait des ping avec des adresses ip, j'aimerai juste récupérer les adresses MAC correspondantes pour pouvoir identifier tous les appareil branchés (savoir quel appareil a quelle adresse IP)

    Merci d'avance,
    Clément

  2. #2
    Membre confirmé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Points : 610
    Points
    610
    Par défaut
    Salut,

    Tu peux regarder du côté de WMI
    http://www.thescarms.com/dotNet/wmi.aspx

    un autre exemple

    @+

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    merci pour les liens, je pense que c'est une bonne piste, mais je n'ai pas réussi à exploiter correctement

    je pensais qu'en utilisant IPAddress au lieu de IPEnabled (voir code ci dessous) j'arriverai à retrouver l'adresse mac correspondante, mais visiblement ça ne fonctionne pas car IPAddress est un Array...
    Il va me falloir trouver une autre solution donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Imports System.Management 
    
        Try
            Dim strMACAddress as string = ""
            '
            ' Create the query, in SQL syntax, to retrieve the properties from
            ' the active Network Adapter.
            '
            ' A l'origine, la ligne suivante est ainsi :
            ' Dim strQuery As String = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True"
            Dim strQuery As String = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPAddress =" & MonadresseIP
    
            '
            ' Create a ManagementObjectSearcher object passing in the query to run.
            '
            Dim query As ManagementObjectSearcher = New ManagementObjectSearcher(strQuery)
    
            '
            ' Create a ManagementObjectCollection assigning it the results of the query.
            '
            Dim queryCollection As ManagementObjectCollection = query.Get()
    
            '
            ' Loop through the results extracting the MAC Address.
            '
            Dim mo As ManagementObject
    
            For Each mo In queryCollection
                strMACAddress = mo("MacAddress").ToString().Replace(":", "")
                Exit For
            Next
    
            Return strMACAddress 
    
        Catch ex As Exception
            Return ""
        End Try
    Merci pour votre aide
    Clément

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par clem67 Voir le message
    merci pour les liens, je pense que c'est une bonne piste, mais je n'ai pas réussi à exploiter correctement

    je pensais qu'en utilisant IPAddress au lieu de IPEnabled (voir code ci dessous) j'arriverai à retrouver l'adresse mac correspondante, mais visiblement ça ne fonctionne pas car IPAddress est un Array...
    Il va me falloir trouver une autre solution donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Imports System.Management 
    
        Try
            Dim strMACAddress as string = ""
            '
            ' Create the query, in SQL syntax, to retrieve the properties from
            ' the active Network Adapter.
            '
            ' A l'origine, la ligne suivante est ainsi :
            ' Dim strQuery As String = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True"
            Dim strQuery As String = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPAddress =" & MonadresseIP
    
            '
            ' Create a ManagementObjectSearcher object passing in the query to run.
            '
            Dim query As ManagementObjectSearcher = New ManagementObjectSearcher(strQuery)
    
            '
            ' Create a ManagementObjectCollection assigning it the results of the query.
            '
            Dim queryCollection As ManagementObjectCollection = query.Get()
    
            '
            ' Loop through the results extracting the MAC Address.
            '
            Dim mo As ManagementObject
    
            For Each mo In queryCollection
                strMACAddress = mo("MacAddress").ToString().Replace(":", "")
                Exit For
            Next
    
            Return strMACAddress 
    
        Catch ex As Exception
            Return ""
        End Try
    Merci pour votre aide
    Clément
    Si t'itères sur les éléments de l'array tu dois pouvoir trouver l'ip non?
    (A moins que l'array SOIT l'ip (car une ipv4 est un array de 4 octets))

  5. #5
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    je l'ai jamais utiliser en VB
    mais il y le protocole ARP qui fait ca il me semble

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par alex61 Voir le message
    je l'ai jamais utiliser en VB
    mais il y le protocole ARP qui fait ca il me semble
    à ma connaissance, j'ai toujours utilisé le protocole ART avec l'invité de commande, mais pour mon cas, je souhaiterai faire en quelque sorte la même chose, mais pas dans l'invité de commande.
    En fait, j'essaie de faire un programme faisant un ping pour une plage d'adresses IP, et pour chaque adresse IP qui répond, récupérer l'adresse MAC correspondante.
    C'est en fait pour pouvoir identifier les appareil qui sont dans mon réseau local, l'IP n'étant pas fixe pour chacun d'eux.

    Si vous avez de bons tuyaux... je suis évidemment preneur

    Merci
    Clément

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par clem67 Voir le message
    à ma connaissance, j'ai toujours utilisé le protocole ART avec l'invité de commande, mais pour mon cas, je souhaiterai faire en quelque sorte la même chose, mais pas dans l'invité de commande.
    En fait, j'essaie de faire un programme faisant un ping pour une plage d'adresses IP, et pour chaque adresse IP qui répond, récupérer l'adresse MAC correspondante.
    C'est en fait pour pouvoir identifier les appareil qui sont dans mon réseau local, l'IP n'étant pas fixe pour chacun d'eux.

    Si vous avez de bons tuyaux... je suis évidemment preneur

    Merci
    Clément
    Mettre un DHCP avec des baux statiques

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par PitMaverick78 Voir le message
    Mettre un DHCP avec des baux statiques
    ce n'est malheureusement pas possible mais merci quand même ^^

  9. #9
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Diagnostics.Process.Start("Commande DOS");

    ca exécute une commande dos

    après pour récupéré les donné je connait pas

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    pas encore essayé, mais si cela fonctionne, si quelqu'un connais la manière de procéder pour récupérer le retour d'info... qu'il poste

  11. #11
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par clem67 Voir le message
    pas encore essayé, mais si cela fonctionne, si quelqu'un connais la manière de procéder pour récupérer le retour d'info... qu'il poste
    Oui tu peux rediriger le flux d'entrée et de sortie vers un stream ou tu peux lire/ecrire. Y'a un truc du genre RedirectOutput et RedirectInput

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    bon, j'ai tenté quelque chose, j'arrive à ouvrir l'invité de commande avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Diagnostics.Process.Start("cmd")
    mais impossible ensuite de trouver la manière pour écrire dans l'invité de commande.

    Dans l'absolu, je pense que vu qu'il existe le moyen de faire un PING et de trouver l'adresse MAC correspondante dans les langages C# et C++, il y a peu de chances pour qu'il n'y ait rien d'équivalent en VB.net, cependant j'aimerai éviter dans la mesure du possible d'ouvrir l'invité de commande à chaque ping.

    J'ai le triste sentiment que peu de monde à déjà eu le besoin de faire ce que je fais... j'ai traversé Google en long, en large et en travers, mais rien de très concret, et tout ne fonctionne pas forcément...
    Le plus souvent c'est juste des applis pour trouver l'adresse mac de la carte réseau de la machine à partir de laquelle on execute le script...

    Bref, je commence doucement à désespérer...

    Merci pour tout
    Clément

  13. #13
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim siteResponds As Boolean
            siteResponds = My.Computer.Network.Ping("www.google.fr")
    ca fait un ping et retourne vrai ou faux

    mais pas d'arp

    dsl

  14. #14
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par alex61 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim siteResponds As Boolean
            siteResponds = My.Computer.Network.Ping("www.google.fr")
    ca fait un ping et retourne vrai ou faux

    mais pas d'arp

    dsl
    Oui ton code fonctionne, personnellement j'utilise ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim Ping As New Net.NetworkInformation.Ping
    Dim PingReply As Net.NetworkInformation.PingReply
     
    '...
     
    PingReply = Ping.Send(Adresse IP à pinger)
     
    '...
     
    PingReply.Address.ToString '=> Me donne l'adresse IP testée
    PingReply.Buffer.Length '=> Me donne le nombre d'octets envoyés
    PingReply.RoundtripTime '=> Me donne la durée du ping

  15. #15
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Je viens de trouver ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Net.NetworkInformation.PhysicalAddress
    Mais je ne sais pas comment l'exploiter pour le moment... work in progress

  16. #16
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par clem67 Voir le message
    Je viens de trouver ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Net.NetworkInformation.PhysicalAddress
    Mais je ne sais pas comment l'exploiter pour le moment... work in progress
    cette base semble être la bonne... mais pour le moment rien de concret, si jamais vous vous y connaissez mieux que moi (sans aucun doute d'ailleurs car je suis débutant), votre aide, avis, commentaire est le bienvenu

  17. #17
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    bon, à ce jour, toujours pas trouvé... même avec la piste ci-dessus

    si des idées vous viennent, bienvenue à vous
    Merci
    Clément

  18. #18
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    je vient de tomber la dessus par hasard

    http://access.developpez.com/faq/?page=API#MacDistant

    c'est du vba mais avec un peu de chance en changeant juste quelque truc tu pouraa le réutiliser

  19. #19
    Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par alex61 Voir le message
    je vient de tomber la dessus par hasard

    http://access.developpez.com/faq/?page=API#MacDistant

    c'est du vba mais avec un peu de chance en changeant juste quelque truc tu pouraa le réutiliser
    salut,
    merci pour le coup de main, malheureusement rien a faire...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2011, 11h26
  2. Réponses: 2
    Dernier message: 10/04/2006, 13h08
  3. obtenir son adresse mac
    Par MonsieurAk dans le forum Windows
    Réponses: 6
    Dernier message: 24/08/2005, 11h01
  4. Réponses: 10
    Dernier message: 26/07/2005, 14h38

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