![]() |
MAC Adresse ermitteln
Hi DPler,
diesen Beitrag habe ich erstmalig bei delphi3000.com am 9.3.2001 veröffentlich. Nach und nach werde ich einige Beiträge von dort hier einbringen. Das Original ist aus der ![]() Die MAC Adresse kann i.a. dazu genutzt werden, um einen Computer ein-ein-deutig zu identifizieren. Jedoch gibt es inzwischen einige, wenige Netzwerkkarten, welche eine Manipulation der MAC Adresse zulassen. Das bringt uns noch dazu: Nur Rechner mit einer Netzwerkkarte haben eine MAC Adresse, da dieser auf den Netzwerkkarten gespeichert ist. Nächste Einschränkung: Die Lösung funktioniert ausschliesslich auf Windows Rechnern (getestet unter NT4/2000 Server; Delphi 5 Entp.), auf welchen auch das NetBIOS Protokoll installiert ist. Der Code ist eigentlich recht simpel und hat daher keine Kommentare. Ein Hinweis sei mir aber noch gestattet. Die Unit NB30 muss in die uses Klausel aufgenommen werden.
Delphi-Quellcode:
Viel Spass...
uses
NB30; function GetAdapterInfo(Lana: Char): String; var Adapter: TAdapterStatus; NCB: TNCB; begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBRESET); NCB.ncb_lana_num := Lana; if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBASTAT); NCB.ncb_lana_num := Lana; NCB.ncb_callname := '*'; FillChar(Adapter, SizeOf(Adapter), 0); NCB.ncb_buffer := @Adapter; NCB.ncb_length := SizeOf(Adapter); if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; Result := IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[5]), 2); end; function GetMACAddress: string; var AdapterList: TLanaEnum; NCB: TNCB; begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBENUM); NCB.ncb_buffer := @AdapterList; NCB.ncb_length := SizeOf(AdapterList); Netbios(@NCB); if Byte(AdapterList.length) > 0 then Result := GetAdapterInfo(AdapterList.lana[0]) else Result := 'mac not found'; end; [edit=flomei]Wir "räumen auf", daher Titel geändert... Mfg, flomei[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz