Конференция "Сети" » определить по IP клиента MAC адрес его сетевой
 
  • 9899100 (20.11.07 20:47) [0]
    Доброго время суток! Мастера подскажите, это вообще реализуемо на дельфи? определить по IP клиента MAC адрес его сетевой
    если реализуемо то подскажите где посмотреть что то подобное
  • DVM © (20.11.07 21:57) [1]
    Определить мак-адрес можно только в том же коллизионном сегменте сети, что и подопытный компьютер.

    Короче в интернет нельзя. Как и в любой сети с маршрутизаторами.
  • 9899100 (20.11.07 22:06) [2]
    :) имеется ввиду определить в локальной сети , про и-нет речи не идет
  • DVM © (20.11.07 22:29) [3]
    на сайте у Rouse_ есть вроде пример.

    http://rouse.drkb.ru/network.php#infofromip там в самом низу
  • 9899100 (20.11.07 22:46) [4]
    о! то что дохтор прописал :)
    осталось тока проверить в сетке :)
  • Rouse_ © (21.11.07 10:56) [5]
    Можно еще проще, если работает под NT

    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls, Winsock, ExtCtrls;

    const
     MAX_ADAPTER_ADDRESS_LENGTH = 6;

    type
     TMacAddress = array[0..MAX_ADAPTER_ADDRESS_LENGTH - 1] of byte;

     TForm1 = class(TForm)
       Button1: TButton;
       procedure Button1Click(Sender: TObject);
     end;

     function SendARP(const DestIP, SrcIP: ULONG;
       pMacAddr: PULONG; var PhyAddrLen: ULONG): DWORD; stdcall; external 'IPHLPAPI.DLL';

    var
     Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);

     function GetMAC(Value: TMacAddress; Length: DWORD): String;
     var
       I: Integer;
     begin
       if Length = 0 then Result := '00-00-00-00-00-00' else
       begin
         Result := '';
         for i:= 0 to Length - 2 do
           Result := Result + IntToHex(Value[i], 2) + '-';
         Result := Result + IntToHex(Value[Length-1], 2);
       end;
     end;

    var
     DestIP, SrcIP: ULONG;
     pMacAddr: TMacAddress;
     PhyAddrLen: ULONG;
    begin
     DestIP := inet_addr('195.182.10.22');
     PhyAddrLen := 6;
     SendArp(DestIP, 0, @pMacAddr, PhyAddrLen);
     Caption := GetMAC(pMacAddr, PhyAddrLen);
    end;

    end.

 
Конференция "Сети" » определить по IP клиента MAC адрес его сетевой
Есть новые Нет новых   [134431   +10][b:0][p:0.001]