Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Internet / LAN / ASP.NET (https://www.delphipraxis.net/23-library-internet-lan-asp-net/)
-   -   Delphi MAC Adresse ermitteln (https://www.delphipraxis.net/113-mac-adresse-ermitteln.html)

sakura 12. Jun 2002 09:27


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 Borland Community und in C++. Die Umwandlung nach Delphi stammt aus meiner Feder :)

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:
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;
Viel Spass...

[edit=flomei]Wir "räumen auf", daher Titel geändert... Mfg, flomei[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz