neku
Codeur roumain
Je ne pense pas devoir expliquer le code vu qu'il est largement commenté et que le titre parle de lui même
Example d'utilisation :
Code:
[size=2][color=#0000ff]#include[/color][/size][size=2][color=#000000] "stdafx.h"[/color]
[/size][size=2][color=#0000ff]#include[/color][/size][size=2][color=#000000] <Winsock2.h>[/color]
[/size][size=2][color=#0000ff]#include[/color][/size][size=2][color=#000000] <Iptypes.h>[/color]
[/size][size=2][color=#0000ff]#include[/color][/size][size=2][color=#000000] <Iphlpapi.h>[/color]
[/size][size=2][color=#0000ff]#include[/color][/size][size=2][color=#000000] <stdio.h>[/color]
[/size][size=2][color=#0000ff]#pragma[/color][/size][size=2][color=#0000ff]comment[/color][/size][size=2][color=#000000]([/color][/size][size=2][color=#0000ff]lib[/color][/size][size=2][color=#000000], "Iphlpapi.lib")[/color]
[/size][size=2][color=#0000ff]#pragma[/color][/size][size=2][color=#0000ff]comment[/color][/size][size=2][color=#000000]([/color][/size][size=2][color=#0000ff]lib[/color][/size][size=2][color=#000000], "Ws2_32.lib")[/color]
[/size][size=2][color=#0000ff]char[/color][/size][size=2][color=#000000]* GetMacAddress ([/color][/size][size=2][color=#0000ff]int[/color][/size][size=2][color=#000000] AdapterID) {[/color]
[/size][indent][size=2][color=#008000]//Variable qui permettra de compter le nombre d'adapter parcouru
[/color][/size][size=2][color=#0000ff]int[/color][/size][size=2] nAdapterCount = 0;
[/size][size=2][color=#008000]//Variable qui contiendra l'ip associé à l'adapter parcouru
[/color][/size][size=2]ULONG IP;
[/size][size=2][color=#008000]//Variable qui contiendra la taille du buffer
[/color][/size][size=2]ULONG Buflen;
[/size][size=2][color=#008000]//Pointeurs vers les infos de l'adapter
[/color][/size][size=2]PIP_ADAPTER_INFO pAdInfo = NULL;
PIP_ADAPTER_INFO pAdInfo_c = NULL;
[/size][size=2][color=#008000]//On définit la taille du buffer à 0
[/color][/size][size=2]Buflen = 0;
[/size][size=2][color=#008000]//Vu que Buflen est défini à 0, la taille du buffer est trop petite
[/color][/size][size=2][color=#008000]//Donc la fonction GetAdaptersInfo va nous renvoyer dans Buflen la taille exacte
[/color][/size][size=2]GetAdaptersInfo(pAdInfo,&Buflen);
[/size][size=2][color=#008000]//Initialisation du pointeur pAdInfo & pAdInfo_c
[/color][/size][size=2]pAdInfo = ([/size][size=2][color=#0000ff]struct[/color][/size][size=2] _IP_ADAPTER_INFO *)[/size][size=2][color=#0000ff]new[/color][/size][size=2] UCHAR[Buflen + 1];
pAdInfo_c = pAdInfo;
[/size][size=2][color=#008000]//Si la commande GetAdaptersInfo c'est déroulée avec Success
[/color][/size][size=2][color=#0000ff]if[/color][/size][size=2] (GetAdaptersInfo(pAdInfo, &Buflen) == ERROR_SUCCESS) {
[/size][indent][size=2][color=#0000ff]do[/color][/size][size=2] {
[/size][indent][size=2][color=#008000]//On récupère l'IP lié à l'adapter en cours
[/color][/size][size=2]IP = inet_addr(pAdInfo->IpAddressList.IpAddress.String);
[/size][size=2][color=#008000]//Si celle si n'est pas null ou différente de 127.0.0.1
[/color][/size][size=2][color=#0000ff]if[/color][/size][size=2] ((IP != 0) && (IP != 0x7f000001)) {
[/size][indent][size=2][color=#008000]//On incrémente le compteur d'adapter parcouru
[/color][/size][size=2]nAdapterCount++;
[/size][size=2][color=#008000]//Si le numéro d'adapter est égale à celui que l'on désire
[/color][/size][size=2][color=#008000]//Ou 0 pour le premier
[/color][/size][size=2][color=#0000ff]if[/color][/size][size=2] ((nAdapterCount == AdapterID) || (AdapterID == 0)) {
[/size][indent][size=2][color=#008000]//Si la MAC Address à une longueur supérieure à 0 donc existante
[/color][/size][size=2][color=#0000ff]if[/color][/size][size=2] (pAdInfo->AddressLength != 0) {
[/size][indent][size=2][color=#008000]//Pointeur de caractère qui contiendra la MAC Address
[/color][/size][size=2][color=#0000ff]char[/color][/size][size=2]* MACStr;
[/size][size=2][color=#008000]//Initialisation du pointeur
[/color][/size][size=2]MACStr = [/size][size=2][color=#0000ff]new[/color][/size][size=2][color=#0000ff]char[/color][/size][size=2][256];
[/size][size=2][color=#008000]//On place tout les octets à 0 pour être sur qu'il n'y ai pas de crasses
[/color][/size][size=2]memset(MACStr,'\0',256);
[/size][size=2][color=#008000]//On boucle sur chaque partie de la MAC
[/color][/size][size=2][color=#0000ff]for[/color][/size][size=2] ([/size][size=2][color=#0000ff]int[/color][/size][size=2] i = 0; i < ([/size][size=2][color=#0000ff]int[/color][/size][size=2])pAdInfo->AddressLength; i++) {
[/size][indent][size=2][color=#008000]//Pointeur de caractère qui contiendra la partie en cours de la MAC
[/color][/size][size=2][color=#0000ff]char[/color][/size][size=2]* Temp;
[/size][size=2][color=#008000]//Initialisation du pointeur
[/color][/size][size=2]Temp = [/size][size=2][color=#0000ff]new[/color][/size][size=2][color=#0000ff]char[/color][/size][size=2][256];
[/size][size=2][color=#008000]//Ecriture dans Temps de la partie de la MAC en cours (En hexa sur 2 Digits)
[/color][/size][size=2]sprintf(Temp,":%02X",pAdInfo->Address[i]);
[/size][size=2][color=#008000]//En ajoute la partie à la MAC complète
[/color][/size][size=2]strcat(MACStr,Temp);
[/size][size=2][color=#008000]//On supprime le pointeur
[/color][/size][size=2][color=#0000ff]delete[/color][/size][size=2] Temp;
[/size][/indent][size=2]}
[/size][size=2][color=#008000]//Suppression du pointeur pAdInfo
[/color][/size][size=2][color=#0000ff]delete[/color][/size][size=2] pAdInfo;
[/size][size=2][color=#008000]//On retourne la MAC Address obtenu
[/color][/size][size=2][color=#0000ff]return[/color][/size][size=2] MACStr + 1;
[/size][/indent][size=2]}
[/size][/indent][size=2]}
[/size][/indent][size=2]}
[/size][/indent][size=2][color=#008000]//On boucle tant que il existe un autre adapter & qu'il est différent du précédent
[/color][/size][size=2]} [/size][size=2][color=#0000ff]while[/color][/size][size=2] ((pAdInfo->Next != NULL) && ((pAdInfo = pAdInfo->Next) != pAdInfo));
[/size][/indent][size=2]}
[/size][size=2][color=#008000]//On supprime le pointeur pAdInfo_c
[/color][/size][size=2][color=#0000ff]delete[/color][/size][size=2] pAdInfo_c;
[/size][size=2][color=#008000]//On retourne NULL (aucune MAC Address de trouvé)
[/color][/size][size=2][color=#0000ff]return[/color][/size][size=2] NULL;
[/size][/indent][size=2]}
[/size]
Code:
[size=2][color=#0000ff]int[/color][/size][size=2][color=#000000] _tmain([/color][/size][size=2][color=#0000ff]int[/color][/size][size=2][color=#000000] argc, _TCHAR* argv[])[/color]
{
[/size][indent][size=2][color=#0000ff]char[/color][/size][size=2]* MACAddr;
MACAddr = [/size][size=2][color=#0000ff]new[/color][/size][size=2][color=#0000ff]char[/color][/size][size=2][256];
MACAddr = GetMacAddress(0);
std::cout << MACAddr;
system("PAUSE");
[/size][size=2][color=#0000ff]return[/color][/size][size=2] 0;
[/size][/indent][size=2]}
[/size]