Adresse physique de carte réseau sous XP

Adresse physique de carte réseau sous XP - C++ - Programmation

Marsh Posté le 15-07-2003 à 16:30:32    

Salut,
j'ai écrit un petit programme (c++) qui lit l'adresse physique de la carte réseau. Seulement, sous XP, si la carte est pas reliée au réseau (ou à quoi que ce soit d'ailleur) c'est comme s'il n'y avait pas de carte et du coup ca plante   :fou:  : comment faire pour la détecter même si elle n'est pas reliée  :??: . (ca doit être faisable car j'ai un logiciel qui se sert de cette adresse pour vérifier sa licence et il fonctionne que la carte soit connectée ou non... :pt1cable: )
Merci!
PS: j'ai posé cette question sur la section hardware pour savoir s'il y avait une option dans windows pour qu'il l'active dans tout les cas mais a-priori ca n'existe pas  :pfff:

Reply

Marsh Posté le 15-07-2003 à 16:30:32   

Reply

Marsh Posté le 15-07-2003 à 18:04:36    

Ben donne un peu de code.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 15-07-2003 à 18:23:38    

Voila mes 2 méthodes pour récupérer l'adresse de la ou des cartes réseau (a représente le numéro de la carte dans la liste s'il y en a plusieurs)... Je crois que j'avais trouvé ce code sur ce forum d'ailleur. Pour les besoins de mon programme, je retourne l'adresse de la carte sous la forme "XX  XX  XX  XX  XX  XX" (c'est EN). Le problème c'est que sous XP, il ne trouve même pas de carte...  

Code :
  1. void FindCode(int a){ // Get adapter list
  2.   LANA_ENUM AdapterList;
  3.   NCB Ncb;
  4.   memset(&Ncb, 0, sizeof(NCB));
  5.   Ncb.ncb_command = NCBENUM;
  6.   Ncb.ncb_buffer = (unsigned char *)&AdapterList;
  7.   Ncb.ncb_length = sizeof(AdapterList);
  8.   Netbios(&Ncb);
  9.   string b;
  10.   GetAdapterInfo(AdapterList.lana[a], b);
  11. }
  12. void GetAdapterInfo(int adapter_num,string &a){
  13. // Reset the LAN adapter so that we can begin querying it
  14. NCB Ncb;
  15. memset(&Ncb, 0, sizeof(Ncb));
  16. Ncb.ncb_command = NCBRESET;
  17. Ncb.ncb_lana_num = adapter_num;
  18. if (Netbios(&Ncb) != NRC_GOODRET){
  19.     EN = "00";
  20. }
  21. // Prepare to get the adapter status block
  22. memset(&Ncb,0,sizeof(Ncb));
  23. Ncb.ncb_command = NCBASTAT;
  24. Ncb.ncb_lana_num = adapter_num;
  25. strcpy((char *) Ncb.ncb_callname, "*" );
  26. struct ASTAT
  27.     {
  28.     ADAPTER_STATUS adapt;
  29.     NAME_BUFFER NameBuff[30];
  30.     } Adapter;
  31. memset(&Adapter,0,sizeof(Adapter));
  32. Ncb.ncb_buffer = (unsigned char *)&Adapter;
  33. Ncb.ncb_length = sizeof(Adapter);
  34. // Get the adapter's info and, if this works, return it in standard,
  35. // colon-delimited form.
  36. if (Netbios(&Ncb) == 0)
  37.     {
  38.     char acMAC[23];
  39.     sprintf(acMAC, "%02X  %02X  %02X  %02X  %02X  %02X",
  40.             int (Adapter.adapt.adapter_address[0]),
  41.             int (Adapter.adapt.adapter_address[1]),
  42.             int (Adapter.adapt.adapter_address[2]),
  43.             int (Adapter.adapt.adapter_address[3]),
  44.             int (Adapter.adapt.adapter_address[4]),
  45.             int (Adapter.adapt.adapter_address[5]));
  46.     EN = acMAC;
  47.     }
  48. else
  49.     {
  50.     EN = "00";
  51.     }
  52. }


 
sinon après je compare cette adresse avec celle qui est déduite du mot de passe de l'utilisateur...

Reply

Marsh Posté le 15-07-2003 à 18:49:42    

C'est bien ce que je pensais, ce n'est pas l'adresse physique que tu récupères, mais l'adresse Mac. Y'a à ma connaissance 3 méthodes pour le faire. Il est intéressant de noter qu'apparement celle que tu emploies ne fonctionnes pas si la carte n'est pas reliée à un réseau.
Mais avant dit moi, si j'ai bien compris, t'es en train de coder un keygen ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 15-07-2003 à 18:54:00    

jette un petit coup d'oeil rapide du cote de "GetInterface" et compagnie. Ca pourra peut etre t'aider  :??:

Reply

Marsh Posté le 15-07-2003 à 19:51:46    

jvais ptet dire nimporte quoi mais peut etre peut on lire adresse en faisant un imp sur un port de la carte reseau

Reply

Marsh Posté le 16-07-2003 à 09:43:27    

Oui mais on peut pas faire un imp sous NT/XP ...
Sinon, ca a été traité plein de fois, et même la semaine dernière si je ne m'abuse.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed