MAC-Adresse ermitteln

Dieses Thema im Forum "Linux OS" wurde erstellt von tim081, 09.05.2007.

  1. tim081

    tim081 Grünschnabel

    Dabei seit:
    09.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo Zusammen,

    ich bin relativ unerfahren im Umgang mit Linux und muss für die Arbeit ein kleines Konsolentool schreiben, welches die MAC-Adresse ausliest. Da man die unter Linux ja einfach ändern kann, soll einmal die verwendete Adresse ausgegeben werden (erhalte ich ja mit ifconfig), aber auch die "echte" MAC-Adresse aus dem Rom der Netzwerkkarte. Gibt es dafür eine Möglichkeit?

    Schon mal danke im Voraus.
    Tim
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. seim

    seim seim oder nicht seim?

    Dabei seit:
    08.09.2006
    Beiträge:
    909
    Zustimmungen:
    0
    Ort:
    /mnt/reallife
    Darf ich mal fragen weshalb man die Adresse ändern kann wenn die in einem ROM steht?
     
  4. #3 Atomara, 09.05.2007
    Atomara

    Atomara Debrandeter User

    Dabei seit:
    06.03.2004
    Beiträge:
    1.255
    Zustimmungen:
    0
    Ort:
    Deutschland , Nrw , Münsterland
    ich glaube er meint damit das spoofen der mac adresse und dem system eine andere mac vorgaukelt
     
  5. #4 Bâshgob, 09.05.2007
    Bâshgob

    Bâshgob freies Radikal

    Dabei seit:
    29.07.2004
    Beiträge:
    2.334
    Zustimmungen:
    0
    Ort:
    Hannover
    Wenn keine "alternative" MAC gesetzt ist bekommst du mit ifconfig die "echte" MAC.

    Temporär ändern lässt sich die MAC via ifconfig <Interface Name> hw ether <mac-adresse>

    HTH
     
  6. tim081

    tim081 Grünschnabel

    Dabei seit:
    09.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Erstmal Danke für die Antworten:
    Genau so eine temporäre Änderung meine ich. Wenn man jetzt mittels ifconfig <interface> hw ether die MAC geändert hat, hat man danach noch eine Möglichkeit die "echte" MAC-Adresse, die der Karte normal zugeordnet ist, abzufragen oder ist sie bis zu einem Neustart nicht mehr ermittelbar.
     
  7. #6 Bâshgob, 09.05.2007
    Bâshgob

    Bâshgob freies Radikal

    Dabei seit:
    29.07.2004
    Beiträge:
    2.334
    Zustimmungen:
    0
    Ort:
    Hannover
    Nach meinem Wissenstand ist die ursprüngliche MAC dann nicht mehr ermittelbar, erst nach einen Neustart o.ä.
     
  8. tim081

    tim081 Grünschnabel

    Dabei seit:
    09.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Ja dann vielen Dank für die Info. Dachte vielleicht irgendwo in /proc könnte man die herausbekommen. Aber habe bis jetzt auch nichts gefunden.
     
  9. #8 SkydiverBS, 09.05.2007
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Hallo!

    Ich habe mal mit strace geschaut wo ifconfig die Hardware-Adresse her bekommt. Dabei stieß ich auf die Funktion ioctl() und den Parameter SIOCGIFHWADDR. Nach einer kurzen Suche fand ich folgenden Beispiel-Code (von mir etwas abgeändert, war im Original bei mir nicht lauffähig):
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <net/if.h>
    #include <netinet/in.h>
    #include <sys/ioctl.h>
    
    int main(int argc, char **argv) {
    	int sd;
    	struct ifreq ifr;
    	unsigned char *a;
    
    	if (argc != 2) {
    		fprintf(stderr, "Usage: ifname\n");
    		return 2;
    	}
    	sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
    	if (sd < 0) {
    		perror("socket");
    		return 1;
    	}
    	strncpy(ifr.ifr_name, argv[1], IFNAMSIZ);
    	if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0) {
    		perror("ioctl SIOCGIFHWADDR");
    		return 1;
    	}
    	a = (unsigned char *) &ifr.ifr_hwaddr.sa_data;
    	printf("%02x:%02x:%02x:%02x:%02x:%02x\n", a[0],a[1],a[2],a[3],a[4],a[5]); 
    
    	return 0;
    }
    
    Quelle: http://outflux.net/software/shorts/c/hw_get.c

    Ein weiteres Beispiel ist hier zu finden: http://cboard.cprogramming.com/showthread.php?t=43261.

    Allerdings habe ich keinen Hinweis auf eine Möglichkeit gefunden die MAC-Adresse direkt aus dem ROM der Netzwerkkarte auszulesen.

    Gruß,
    Philip
     
  10. tim081

    tim081 Grünschnabel

    Dabei seit:
    09.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,

    erstmal herzlichen Dank. Habe leider im Moment keine Zeit mehr es auszuprobieren. Werde es aber morgen vormittag mal versuchen und dann schreiben wie es geklappt hat.

    Gruß
    Tim
     
  11. tim081

    tim081 Grünschnabel

    Dabei seit:
    09.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,

    habe den Code von Philip mal ausprobiert. Nur leider wird nach der Änderung der Mac-Adresse mit "ifconfig hw ether" auch die geänderte ausgegeben und nicht die ursprüngliche "echte" Adresse der Karte. Werde wohl noch ein bisschen weiter suchen müssen.
     
  12. tim081

    tim081 Grünschnabel

    Dabei seit:
    09.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Für alle, die an der Lösung interessiert sind.

    Es gibt ein kleines Konsolentool "hwinfo", welches man einfach unter Linux installieren kann und das alle möglichen Hardwareinformationen (auch die korrekte MAC-Adresse) ausgibt.

    Gruß Tim
     
  13. #12 Bâshgob, 14.05.2007
    Bâshgob

    Bâshgob freies Radikal

    Dabei seit:
    29.07.2004
    Beiträge:
    2.334
    Zustimmungen:
    0
    Ort:
    Hannover
    Ah, Danke. Hast du mal geschaut woher hwinfo seine Daten nimmt, insbesondere eben die MAC?
     
  14. tim081

    tim081 Grünschnabel

    Dabei seit:
    09.05.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Habe mir den Quelltext mal angeschaut. Aber nicht das meiste verstanden. Ich glaube das macht es zusammen mit den Treibermodulen u. greift wohl somit auf die Hardware zu. Aber genau sagen kann ich es leider nicht.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 SkydiverBS, 28.06.2007
    Zuletzt bearbeitet: 28.06.2007
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Hallo!

    1) Ich habe herausgefunden das die MAC-Adresse in /sys zu finden ist und zwar in
    Code:
    /sys/class/net/eth0/address
    . Wenn man das in einem Skript verwenden will ist es leichter als über den von mir erwähnten Systemcall ioctl. Allerdings ist das immer noch nicht die Adresse aus dem ROM.

    2) Habe mir hwinfo angeschaut. Bei mir hat es nach Änderung der MAC-Adresse auch diese angezeigt und nicht die korrekte (00:c0:9f:31:11:3d):
    Code:
    # hwinfo --network
    25: None 00.0: 10701 Ethernet
      [Created at net.119]
    [COLOR="Red"]  UDI: /org/freedesktop/Hal/devices/net_00_c0_9f_31_11_3d[/COLOR]
      Unique ID: usDW.ndpeucax6V1
      Parent ID: rBUF.uE+1Gsq0aS2
      SysFS ID: /class/net/eth0
      SysFS Device Link: /devices/pci0000:00/0000:00:1e.0/0000:02:02.0
      Hardware Class: network interface
      Model: "Ethernet network interface"
      Driver: "b44"
      Driver Modules: "b44"
      Device File: eth0
      HW Address: 00:c0:9f:31:11:3f
      Link detected: yes
      Config Status: cfg=new, avail=yes, need=no, active=unknown
      Attached to: #14 (Ethernet controller)
    Was mich verwundert hat ist die rot markierte Zeile in der die richtige MAC-Adresse ja als Teil einer Pfad-Angabe drin steht. Nach etwas suchen bin ich darauf gekommen das diese "UDI" von HAL verwendet wird. Mit dem Programm "lshal" kann man sich HAL-Informationen anzeigen lassen und ich staunte nicht schlecht als ich dort meine korrekte MAC-Adresse entdeckte:
    Code:
    udi = '/org/freedesktop/Hal/devices/net_00_c0_9f_31_11_3d'
      info.udi = '/org/freedesktop/Hal/devices/net_00_c0_9f_31_11_3d'  (string)
      linux.subsystem = 'net'  (string)
      linux.hotplug_type = 2  (0x2)  (int)
      net.80203.mac_address = 827304513853  (0xc09f31113d)  (uint64)
      info.product = 'Networking Interface'  (string)
      net.arp_proto_hw_id = 1  (0x1)  (int)
      net.linux.ifindex = 2  (0x2)  (int)
      [COLOR="Red"]net.address = '00:c0:9f:31:11:3d'  (string)[/COLOR]
      net.interface = 'eth0'  (string)
      net.physical_device = '/org/freedesktop/Hal/devices/pci_14e4_4401'  (string)
      info.capabilities = {'net', 'net.80203'} (string list)
      info.category = 'net.80203'  (string)
      info.parent = '/org/freedesktop/Hal/devices/pci_14e4_4401'  (string)
      linux.sysfs_path = '/sys/class/net/eth0'  (string)
    Mich würde noch interessieren ob das bei euch auch klappt.

    Nachtrag: Habe gerade durch einen kurzen Blick in den hald Quellcode (sucht in hald/linux/device.c nach "net.address") herausgefunden das HAL die MAC-Adresse auch nur aus /sys holt. Der Trick dabei ist das hald die Informationen beim Systemstart sammelt und sich merkt. Deswegen wurde mir noch die alte (korrekte) Adresse ausgegeben. Nachdem ich hald neugestartet habe, hat auch dieser die neue (manipulierte) MAC wiedergegeben.

    D.h. wir haben immer noch keinen verlässlichen Weg die reale MAC-Adresse herauszufinden.

    Gruß,
    Philip
     
  17. tibi38

    tibi38 Grünschnabel

    Dabei seit:
    03.11.2012
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo,
    gibt es schon eine sichere Möglichkeit die originale MAC auszulesen?
    Gruß
     
Thema: MAC-Adresse ermitteln
Besucher kamen mit folgenden Suchen
  1. mac-adresse unix

    ,
  2. aus mac adresse ip ermitteln unix

Die Seite wird geladen...

MAC-Adresse ermitteln - Ähnliche Themen

  1. Alle MAC-Adressen mit Hostnamen im Netzwerk ermitteln

    Alle MAC-Adressen mit Hostnamen im Netzwerk ermitteln: Hallo, ist es irgendwie möglich in einem Netzwerk (Windows und Mac Rechner) die MAC-Adressen der Netzwerkkarten zu ermitteln. Zusätzlich dazu...
  2. MAC-Adressen in einem Netzwerk ermitteln

    MAC-Adressen in einem Netzwerk ermitteln: Hallo, ist es irgendwie möglich in einem Netzwerk (Windows Rechner, verbunden mit einem Linux-Server) die MAC-Adressen der Netzwerkkarten zu...
  3. systemd + Netzwerk + MAC-adresse

    systemd + Netzwerk + MAC-adresse: Hallo Habe mein archlinux jetzt erfolgrich auf systemd umgestellt läuft alles, Netzwerk per dhcpd, nur wo kann ich jetzt eine gefakte MAC...
  4. Sun QFE Problem mit MAC-Adressen

    Sun QFE Problem mit MAC-Adressen: Hallo zusammen! Ich habe ein kleines Problem mit meiner in einen normalen IBM xServer eingebauten Sun QFE (QuadFastEthernet) Karte: Die...
  5. DHCP-Server nur fuer bestimmte MAC-Adresse

    DHCP-Server nur fuer bestimmte MAC-Adresse: Hallo, Ich moechte einen dhcp-Server aufsetzten, welcher nur auf Rechner mit der richtigen MAC-Adresse hoeren soll. Diese Rechner moechte ich...