MAC-Adresse eines Devices in einer C-Konsolenanwendung mit bekannter IP herausfinden
-
Hallo,
wie der Titel schon sagt, möchte ich die MAC-Adresse einer Hardware im Netzwerk herausfinden. Dies möchte ich aber nicht einfach im cmd machen, sondern ich benötige die MAC für den weiteren Programmablauf.
Allgemein geht es um eine kleine Serie von Geräten die ich laufend konfigurieren muss. Dabei ist die IP bekannt und für die Konfiguration wird zusätzlich die MAC benötigt. Diese ist zwar auch bekannt, allerdings möchte ich nicht bei jedem Durchlauf die MAC von Hand eintippen.
Mein Gedanke:
- TCP-Verbindung über Socket aufbauen, MAC-Adresse auslesen und in Variable speichern, TCP-Verbindung beenden und dann die eigentliche Konfiguration im Programm abarbeiten.Mein Problem:
Ich finde nirgends Informationen wie ich bei einem C-Socket die MAC-Adresse der Gegenstelle herausfinden kann. Das muss aber doch irgendwie möglich sein? Oder geht das nur über die ARP-Tabelle? Wenn ja wie komm ich da an meine MAC im C-Programm?Aktuell schaut meine *.c oben so aus, allerdings konnte ich bei WinSock2 nicht herausfinden wie ich an die MAC-Adresse komme. Socket anhand der IP aufbauen und alles ist kein Problem und funktioniert auch wunderbar.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <WinSock2.h> // header file for winsocket functions #pragma comment(lib, "ws2_32.lib") //Winsock Library file linked /* struct sockaddr_in{ short sin_family; //AF_INET, AF_INET6 unsigned short sin_port; // struct in_addr sin_addr; // see struct in_addr, below char sin_zero[8] // }; typedef struct in_addr { union{ struct{ u_char s_b1, s_b2, s_b3, s_b4; } S_un_w; u_long S_addr; } S_un; } IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR; struct sockaddr{ unsigned short sa_family; // address famil (AF_INET or AF_INET6) char sa_data[14]; // 14 bytes of protocol address }; */
-
C kennt keine MAC-Adresse. Stelle deine Frage im entsprechenden Subforum.