Obtenir adr. MAC

[Résolu]
Signaler
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
-
hello world

je cherche comment avoir l'adresse MAC de mon PC, mais pas en utilisant la ligne de commande.

en gros je cherche un fonction de l'api win ou autre qui donne le MAC
de l'ordi sur lequel est exécuté mon prog (pas de truc en réseau ou
autre)



merci bien ;)

++

ad

_______________________


Omnia vincit labor improbus

9 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,

Voici un petit programme qui affiche l'adresse MAC de ton PC dans un MessageBox:



#include <windows.h>

#include



int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

{

PMIB_IFTABLE buffer;

MIB_IFROW donnees;

ULONG size=0;

char chaine[30];



typedef DWORD (WINAPI *PFONCTION)(PMIB_IFTABLE , PULONG, BOOL);

HMODULE hDLL= LoadLibrary("iphlpapi.dll");

PFONCTION GetIfTable=(PFONCTION) GetProcAddress(hDLL,"GetIfTable");



buffer = (MIB_IFTABLE*) malloc(sizeof(MIB_IFTABLE));

GetIfTable (buffer, &size, TRUE);

buffer = (MIB_IFTABLE *) malloc (size);



GetIfTable (buffer, &size, TRUE);



for (DWORD i=0;idwNumEntries;i++)

{

donnees=buffer->table[i];

if(donnees.dwType==MIB_IF_TYPE_ETHERNET)

{

wsprintf(chaine,"%02X-%02X-%02X-%02X-%02X-%02X",

donnees.bPhysAddr[0],donnees.bPhysAddr[1],donnees.bPhysAddr[2],



donnees.bPhysAddr[3],donnees.bPhysAddr[4],donnees.bPhysAddr[5]);


MessageBox(0,chaine,"Adresse MAC",0);

}

}



FreeLibrary(hDLL);

return 0;

}



Il utilise la fonction GetIfTable() contenue dans iphlpapi.dll. GetAdaptersInfo() permet aussi de retrouver l'adresse MAC mais elle est un peu plus complexe.
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/sendarp.asp

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
J'ai oublié de mettre:

free(buffer);

juste avant FreeLibrary()
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
super

merci bcp :)

++

ad

_______________________


Omnia vincit labor improbus
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
enfin quoique...

le

if(donnees.dwType==MIB_IF_TYPE_ETHERNET)

fait foirer le machin, aucune message box ne s'affiche

si je l'enleve, il me met d'abord 00-00-00-00-00-00

puis ensuite ma vraie adresse, un truc genre 00-53-45-00-00-00

(c'est celle affichée par la console de Windows)

enfin bon si ca marche...

faudra que j'essaye sur d'autres PCs

_______________________


Omnia vincit labor improbus
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Ce test sert à vérifier qu'il s'agit bien d'une carte ethernet.
Si tu l'enlève, il t'affichera toutes les interfaces réseau
disponibles: interface Windows toujours présente, modem etc...

Il est donc essentiel de garder ce test si tu ne veux que l'adresse MAC de ta care réseau.

Ce petit programme n'est qu'un petit exemple. A toi de le perfectionner selon tes besoins.
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
en fait, mon besoin est d'identifier un ordi: je voulais quelque chose
qui soit spécifique a chaque PC, et apparement l'adresse MAC
convient... j'ai pas franchement envie de faire une détection comme
pour l'activation de Windows, qui enregistre les caracs de tout le
hardware... juste un petit numéro simple, et qui ne soit pas le meme
d'un PC a l'autre,et qui marche meme si il n'y a pas de carte réseau...

_______________________


Omnia vincit labor improbus
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

De toutes façons tu ne pourras pas identifier un PC tant que tu n'auras pas défini de quoi est composé un PC...

Je m'explique : supposons que tu veuille identifier un PC par sa carte mère par exemple; si le type change sa carte, l'identification foire. Pourtant le PC est toujours le même. Tu vois ce que je veux dire ?

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
ben justement, c'est pour ca que Windows reste activé tant que tu ne changes pas la config

t'as le droit a 3 changements de matériel, apres ca se désactive et tu dois réactiver la chose
et
de toute facon, je n'ai pas besoin d'une telle 'précision'... moi ce
que je veux c'est juste dire si mon prog a déja été lancé sur tel ou
tel PC (c'est pour mettre sur une clé usb)

l'adress MAC devrait convenir pour ca
_______________________


Omnia vincit labor improbus