|
Débuté par florent.alto, 03 fév. 2006 07:20 - 3 réponses |
| |
| | | |
|
| |
Posté le 03 février 2006 - 07:20 |
Bonjour,
En vue de protéger une appli, pourriez-vous me dire comment obtenir l'adresse MAC du PC ?
Merci.
Flo |
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2006 - 11:04 |
Bonjour,
Voici le code, récupéré sur WinDevAsso, merci à son auteur...
FONCTION fg_AdresseMACDistante(sAdresseIP=NetAdresseIP(), sErr="") // Version 1.00 pour WD7 (WD55 voir les déclarations) // (c) Octobre 2002 Romain PETIT (mailto:rompetit@ifrance.com) // sous licence WD-LIBRE (http://www.windevasso.org) // But : obtenir l'adresse MAC à partir d'une adresse IP (réseau local) // ATTENTION, ne fonctionne que sous 2K/XP (nécessite le SP6 sous NT ?) // Paramètres : adresse IP au format xx.xx.xx.xx // Retour : chaine, adresse MAC (6 nombres en hexa séparés par un '-') // en cas d'erreur, la fonction retourne une chaine vide et la chaine sErr passée par adresse peut être récupérée. // Notes : il ne s'agit pas ici de récupérer l'adresse MAC de machines sur Internet // mais de machines sur un réseau local (non testé avec routeurs). // Dans le cas d'une connexion ADSL Ethernet, NetAdresseIP() renvoie l'adresse // attribuée par le provider, la fonction renvoie donc l'adresse MAC de la // machine établissant la connexion (modem Ethernet par exemple) // Références API: // http://msdn.microsoft.com/library/default.asp… // Exemple : // sAdrMAC est une chaine // sRetourErreur est une chaine="" // sIPDist est une chaine = "192.168.0.1" // sAdrMAC = fg_AdresseMACDistante(sIPDist, sRetourErreur) // SI sAdrMAC <>"" ALORS // info("L'adresse MAC de "+ sIPDist + " est "+sAdrMAC) // SINON // erreur("L'adresse MAC de "+ sIPDist + " n'a pas pu être obtenue : "+ sRetourErreur) // FIN SI sAdresseIP ~="" ALORS sAdresseIP = NetAdresseIP() SI SysVersionWindows(sysVersionPlateForme)<>"NT" ALORS sErr = "Cette fonction n'est pas disponible avec la version de Windows installée." RENVOYER "" FIN szAdresseIP est une chaîne ASCIIZ sur 255 = sAdresseIP //WD55 : eAdresseIP est un entier long sans signe eAdresseIP est un entier sans signe //WD55 : eAdresseMAC est un entier long sans signe eAdresseMAC est un entier sans signe //WD55 : teAdresseMAC est un tableau de 6 entiers courts teAdresseMAC est un tableau fixe de 6 entiers sans signe sur 1 octet //WD55 : eNbAdrPhys est un entier long sans signe eNbAdrPhys est un entier sans signe //WD55 : eRet est un entier long eRet est un entier c est un entier sRetour est une chaîne=""
// Conversion de l'adresse IP en entier long eAdresseIP = AppelDLL32("wsock32.dll", "inet_addr", &szAdresseIP) SI eAdresseIP <> 0 ALORS eNbAdrPhys = 6 //récupération de l'adresse MAC eRet = AppelDLL32("iphlpapi.dll", "SendARP", eAdresseIP, 0, &eAdresseMAC, &eNbAdrPhys) SI eRet=0 ALORS SI eAdresseMAC<>0 ET eNbAdrPhys<>0 ALORS //La valeur retournée est un pointeur sur un tableau //que l'on copie dans le tableau de 6 octets prévu Transfert(&teAdresseMAC, &eAdresseMAC, 6)//6*1 octet //On peut utiliser : AppelDLL32("kernel32","RtlMoveMemory", &teAdresseMAC,&eAdresseMAC,6) //Pour chaque élément du tableau, on reconstruit la chaine en hexa POUR c=1 A eNbAdrPhys sRetour += NumériqueVersChaine(teAdresseMAC[c],"02X")+"-" FIN sRetour = Gauche(sRetour, Taille(sRetour)-1) sErr = "" SINON sErr = "La récupération de l'adresse MAC à partir de l'IP "+ sAdresseIP+" a échoué." FIN SINON sErr = "La récupération de l'adresse MAC à partir de l'IP "+ sAdresseIP+" a échoué." FIN SINON sErr = "L'adresse IP "+sAdresseIP+" n'a pas pu être convertie. Vérifier le format." FIN RENVOYER sRetour |
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2006 - 11:13 |
| |
| |
| | | |
|
| | |
| |
Posté le 03 février 2006 - 16:05 |
Merci.
Dans mon PC, sont installées une carte réseau sans fil et une carte réseau ethernet. Je suis connecté à internet par le réseau sans fil.
Et l'adresse MAC renvoyée est celle de la carte sans fil.
Qu'en dites vous ? |
| |
| |
| | | |
|
| | | | |
| | |
|