Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.11.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
2-1281957561
mm0
2010-08-16 15:19
2010.11.07
MemoryStream в потоке


15-1278489779
Виталий
2010-07-07 12:02
2010.11.07
Неясности в формате файла


15-1279526811
Kerk
2010-07-19 12:06
2010.11.07
Всемастаковский шахматный турнир


6-1229087355
Ст
2008-12-12 16:09
2010.11.07
Tcpserver узнать ip клиента


2-1281722016
Дмитрий Стариков
2010-08-13 21:53
2010.11.07
Снова за помощью





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский