MAC Adresse auslesen

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
DNA
Beiträge: 40
Registriert: 25.02.2006 23:54

MAC Adresse auslesen

Beitrag von DNA »

Hier ersteinmal mein Code, mit dem ich unter Linux die MAC Adresse auslese:

Code: Alles auswählen

#PF_INET = 2
#SOCK_DGRAM = 2
#SIOCGIFHWADDR = $8927
#SIOCGIFCONF=$8912

Structure sockaddr
  sa_family.w       ; address family, AF_xxx
  sa_data.c[8]     ; 14 bytes of protocol address
EndStructure

Structure ifreq
  ifr_name.c[16]
  StructureUnion
    ifr_addr.sockaddr
    ifr_dstaddr.sockaddr
    ifr_broadaddr.sockaddr
    ifr_netmask.sockaddr
    ifr_hwaddr.sockaddr
  
    ifr_flags.w
    ifr_ifindex.l
    ifr_metric.l
    ifr_mtu.l
    *ifmapifr_map
    ifr_slave.s
    ifr_newname.s
    ifr_data.s
  EndStructureUnion
EndStructure

Procedure.s getMAC()
  Protected socket.l
  Protected i.b
  Protected mac.s
	Protected buffer.ifreq

	socket = SOCKET_(#PF_INET, #SOCK_DGRAM, 0)

	If socket
	  PokeS(@buffer\ifr_name,"eth0")
	  If ioctl_(socket, #SIOCGIFHWADDR, @buffer) <> -1
  	  For i = 0 To 5
        If i = 0
    	    mac = RSet(Hex(buffer\ifr_hwaddr\sa_data[i]), 2, "0")
    	  Else
    	    mac = mac + ":" + RSet(Hex(buffer\ifr_hwaddr\sa_data[i]), 2, "0")
    	  EndIf
      Next
    EndIf

    close_(socket)

    ProcedureReturn mac
	EndIf
EndProcedure

Debug getMac()
Das funktioniert auch super, aber da es kein Problem ist, die MAC zu ändern, wollte ich fragen, ob man nicht auch direkt aus der Hardware die MAC auslesen kann, um solche Manipulationen vorzubeugen? Würde es evtl. mit SOCK_RAW anstelle von SOCK_DGRAM funktionieren? Wenn ja, was müsste ich machen, dass ich das auch so nutzen kann, da soweit ich weiß, der Prozess als EUID=0 laufen muss. (Hab keine Ahnung was das mit EUID aufsich hat, nutze Linux noch nicht so lange)
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Re: MAC Adresse auslesen

Beitrag von Marvin »

Hm, ich würde fast behaupten, dass man die MAC-Adresse der Hardware selbst verändern kann, also wäre selbst das kein so toller Schutz (die Netzwerkkarte selbst zu befragen).
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: MAC Adresse auslesen

Beitrag von Josh »

ich hab zwar keine ahnung was dein programm macht, aber die mac-adresse wird normal direkt an der hardwäre geändert. wenn du an einem router hängst, kannst du wahrscheinlich auch im router die geänderte mac-adresse sehen.

dass die mac-adressen der netzwerkkarten und router änderbar sind, stammt meiner meinung noch aus der zeit, als sich einige internetprovider eingebildet haben, dass an ihren anschlüssen nur ein computer mit einer gestellten netzwerkkarte hängen darf und schon gar kein router. hat man dann was anderes an das modem angeschlossen, dann hat das einfach den dienst verweigert, was dann folglich wieder mit geklonten mac-adressen umgangen worden ist.
DNA
Beiträge: 40
Registriert: 25.02.2006 23:54

Re: MAC Adresse auslesen

Beitrag von DNA »

Marvin hat geschrieben:Hm, ich würde fast behaupten, dass man die MAC-Adresse der Hardware selbst verändern kann, also wäre selbst das kein so toller Schutz (die Netzwerkkarte selbst zu befragen).
Ich habs mal einfach probiert und meine MAC geändert, hat auch mit ifconfig alles gut geklappt. Aber als ich mir die MAC nach ausschalten des Rechners nochmal angeschaut habe, sowohl unter WinXP als auch unter Linux, steht wieder meine originale MAC und nicht die, die ich eingegeben habe. Von daher vermute ich doch, das es nur intern im Betriebssystem geändert wird.
Antworten