Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.11.07;
Скачать: CL | DM;

Вниз

MAC по IP   Найти похожие ветки 

 
Alekcey ©   (2010-07-26 14:21) [0]

Как получить MAC по IP компьютера из другой подсети


 
Leonid Troyanovsky ©   (2010-07-26 14:26) [1]


> Alekcey ©   (26.07.10 14:21)  

> Как получить MAC по IP компьютера из другой подсети

http://groups.google.com/group/fido7.ru.delphi/msg/8e6974970ac98f5d

--
Regards, LVT.


 
DVM ©   (2010-07-26 14:26) [2]

между подсетями есть маршрутизаторы?


 
Alekcey ©   (2010-07-26 14:34) [3]

маршрутизаторы есть

Посоветовали
Вариант раз: склепать NetBios запрос, как это делает команда nbtstat, в ответе будет MAC адрес хоста.
Вариант два: спросить об этом маршрутизатор между сетями, отправив ему по SNMP iso.org.dod.internet.mgmt.mib-2.at.atTable.atEntry и/или iso.org.dod.internet.mgmt.mib-2.ip.ipNetToMediaTable. По полученным таблицам искать соответствие IP-to-MAC.

Но для меня это надолго. ПРимеры есть?


 
DVM ©   (2010-07-26 14:40) [4]


> Alekcey ©   (26.07.10 14:34) [3]


> как это делает команда nbtstat

Это будет работать только если включен NetBIOS over TCP/IP. Т.е не всегда.


> спросить об этом маршрутизатор между сетями

не каждый маршрутизатор тебе ответит


 
Alekcey ©   (2010-07-26 14:44) [5]

Думаю для меня ближе "как это делает команда nbtstat"

В какую сторону теперь двигаться?

Нашел такое:

procedure TForm1.GetNetBiosNames(const Addr: String);
var
 NCB: TNCB;
 Enum: TLanaEnum;
 NetbiosInfo: TNetbiosInfo;
 I, A: Integer;
 Ends: Byte;
begin
 FillChar(NCB, SizeOf(TNCB), #0);
 NCB.ncb_command := Char(NCBENUM);
 NCB.ncb_buffer := @Enum;
 NCB.ncb_length := SizeOf(TLanaEnum);
 if Netbios(@NCB) = Char(NRC_GOODRET) then
   for I := 0 to Integer(Enum.length) - 1 do
   begin
     FillChar(NCB, SizeOf(TNCB), #0);
     NCB.ncb_lana_num := Enum.lana[I];
     NCB.ncb_command := Char(NCBRESET);
     if Netbios(@NCB) = Char(NRC_GOODRET) then
     begin
       FillChar(NetbiosInfo, SizeOf(TNetbiosInfo), #0);
       NCB.ncb_command := Char(NCBASTAT);
       Move(Addr[1], NCB.ncb_callname[0], Length(Addr));
       NCB.ncb_buffer := @NetbiosInfo;
       NCB.ncb_length := SizeOf(TNetbiosInfo);
       if Netbios(@NCB) = Char(NRC_GOODRET) then
         for A := 0 to NetbiosInfo.AdapterStatus.name_count - 1 do
         begin
           Ends := Byte(NetbiosInfo.NameBuffer[A].name[NCBNAMSZ - 1]);
           NetbiosInfo.NameBuffer[A].name[NCBNAMSZ - 1] := #32;
           Memo1.Lines.Add(Format("%s <%s>",
             [String(NetbiosInfo.NameBuffer[A].name),
               IntToHex(Ends, 2)]));
         end;
     end;
   end;
end;

Работает нормально.
Под MAC переделать можно?


 
han_malign   (2010-07-27 10:45) [6]

http://ru.wikipedia.org/wiki/ARP


 
Alekcey ©   (2010-07-27 13:02) [7]

не пойму, почему дает mac 00-00-00...
У меня IP xx.xx.2.107
Нужен mac компа с ip xx.xx.10.22

type

 IPAddr = packed record
 a1, a2, a3, a4 : Byte;
 end;

 MacAddr = packed record
 a1, a2, a3, a4, a5, a6 : Byte;
 end;

 function SendARP(DestIP, SrcIP : IPAddr; pMacAddr, PhyAddrLen : Pointer) : DWORD; stdcall; external "Iphlpapi.dll";

implementation

{$R *.dfm}

uses winsock;

procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
   rad, lad : IPAddr;
   len : Dword;
   ipstr : String;
   mac : MacAddr;
begin
 ipstr := "1.2.3.4";
 len := 6;
 rad := IPAddr(inet_addr(PChar(ipstr)));
 ZeroMemory(@lad, SizeOf(IPAddr));
 ZeroMemory(@mac, SizeOf(MacAddr));
 SendArp(rad, lad, @mac, @len);
 showmessage(Format("%.02x-%.02x-%.02x-%.02x-%.02x-%.02x", [mac.a1, mac.a2, mac.a3, mac.a4, mac.a5, mac.a6]));
end;


 
DVM ©   (2010-07-27 13:11) [8]


> Alekcey ©

ARP пакеты не проходят через маршрутизаторы


 
Alekcey ©   (2010-07-27 13:48) [9]

Что делать? Как быть? :)


 
Anatoly Podgoretsky ©   (2010-07-27 14:18) [10]

Хакеры всего мира мечтаю задосить Интернет послав широковещательный запрос по адресу 255.255.255.255


 
Alekcey ©   (2010-07-27 15:07) [11]

Мне со своей локалкой бы сначала разобраться :))

Работаю в фирме с локалкой, состоящей из нескольких подсетей. Пишу программу по обнаружению изменений в локальной сети. (смена ip, mac, установка/удаление программ , может ещё что-нибудь).

Идея такая: админ вбивает в программу диапазоны адресов, программа периодически сканит сеть и определяет изменения.

Пинговать за маршрутизатором умею.
Получать имя компа за маршрутизатором умею.
Из реестра( ...\uninstal ) доставать список программ умею.

Остался mac.
Я так понимаю в сети только mac может однозначно определять комп.

В инете есть бесплатные проги, но я хочу свою (хотя-бы частично свою :)) )


 
Anatoly Podgoretsky ©   (2010-07-27 15:37) [12]

> Alekcey  (27.07.2010 15:07:11)  [11]

МАС не может, это самое ненадежное.


 
Alekcey ©   (2010-07-27 15:44) [13]

Ну если так, то возникает другая задача: как однозначно определить, что под ip xx.xx.xx.xx сегодня тот-же комп,что и вчера?


 
DVM ©   (2010-07-27 16:18) [14]


> Alekcey ©   (27.07.10 15:44) [13]


> как однозначно определить, что под ip xx.xx.xx.xx сегодня
> тот-же комп,что и вчера?

Очевидно путем установки на каждый компьютер программы собирающей и отсылающей данные в центр.


 
miek   (2010-07-27 18:56) [15]

>Пишу программу по обнаружению изменений в локальной сети

Если ты - админ сети, то ты и так об этом знаешь. Вбивай сам все изменения. Если ты - "хрен с горы" (не обижайся), то какого тебе париться об этих изменениях? Пингуй те компы, которые нужны для работы твоей проги, и все.


 
Leonid Troyanovsky ©   (2010-07-27 18:58) [16]


> Alekcey ©   (27.07.10 15:07) [11]

> Идея такая: админ вбивает в программу диапазоны адресов,
>  программа периодически сканит сеть и определяет изменения.

- Да что  тут  предлагать?.. А то пишут, пишут...  
Конгресс, немцы какие-то... Голова пухнет.
Взять все, да и поделить...

--
Regards, LVT.


 
Pavia ©   (2010-07-27 19:05) [17]

Зачем что-то ставить когда есть виндовс? Сделать один или не один сервер а остальные компьютерами сделать членами домена виндоус. В AD есть много всего. Главное все правильно настроить.

По поводу ARP.
> ARP пакеты не проходят через маршрутизаторы<Цитата>
>
>
> Alekcey ©   (27.07.10 13:48) [9]
> Что делать? Как быть? :)

Настроить маршрутизаторы что бы проходили. Хотя это уменьшит безопасность.



Страницы: 1 вся ветка

Текущий архив: 2010.11.07;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.006 c
15-1280348982
Юрий
2010-07-29 00:29
2010.11.07
С днем рождения ! 29 июля 2010 четверг


15-1280474574
Лезнайка на Нуле
2010-07-30 11:22
2010.11.07
когнитивный диссонанс


15-1280223880
И. Павел
2010-07-27 13:44
2010.11.07
Ассоциация расширений с программами


2-1281891701
Радуга
2010-08-15 21:01
2010.11.07
403 Forbidden при массовых запросах к сайту. Как обойти?


15-1279916973
Юрий
2010-07-24 00:29
2010.11.07
С днем рождения ! 24 июля 2010 суббота