PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Adresse MAC
Adresse MAC
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
Florent a écrit :
Bonjour,

En vue de protéger une appli, pourriez-vous me dire comment obtenir
l'adresse MAC du PC ?

Merci.

Flo


Bonjour,
le code est ici
http://www.windasso.org/cgi-bin/gesmod.exe…

de rien
chris
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 ?