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

Вниз

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

 
Qwertyk ©   (2005-03-21 22:15) [0]

Как получить мак адрес по IP?


 
Piter ©   (2005-03-21 23:15) [1]

а зачем?


 
Qwertyk ©   (2005-03-21 23:46) [2]

хмм..
есть программа lanstartcmd, для включения компьютера по локальной стеи. Так вот мне нужно сделать для нее оболочку. Нужно определить МАК адрес компьютера по IP в локальной сети..


 
Piter ©   (2005-03-21 23:50) [3]

а система какая?


 
Alex Konshin ©   (2005-03-22 03:56) [4]

А у тебя IP в локалке статические? А то как бы не вышло, что ты определяешь MAC адрес по IP для выключенного компьютера, да еще и не того.
MAC по IP определяется посылкой пакетов ARP. Мне вот и интересно, а будет ли кому на них отвечать, если компьютер выключен? Не, я правда не знаю. Могу и ошибаться.

Попробуй, может, и зря я пугаю. Ищи в MSDN в IP Helper API функцию SendARP, если мне память не изменяет, ну или что-то рядом с ней.


 
Alex Konshin ©   (2005-03-22 04:15) [5]

Да, для тех, кто не понял. Спрашивал про статические адреса потому, что ARP кешируются, поэтому теоретически можно получить MAC того, чего уже нет (выключено). Если же еще и адреса динамические, то я вообще не понимаю, о каком IP идет речь.


 
Piter ©   (2005-03-22 16:51) [6]

Alex Konshin ©   (22.03.05 3:56) [4]
Мне вот и интересно, а будет ли кому на них отвечать, если компьютер выключен?


по-моему, нет

Alex Konshin ©   (22.03.05 3:56) [4]
Ищи в MSDN в IP Helper API функцию SendARP


верно - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/sendarp.asp

Но это для w2k/XP/2003

Для Win9x можно обратиться к узлу (например, пропинговать) и в ARP таблице искать соответствие IP-MAC (если пинг прошел, оно там должно быть)

Alex Konshin ©   (22.03.05 4:15) [5]
Спрашивал про статические адреса потому, что ARP кешируются


насколько я помню, не более, чем на минуту другую

Если же еще и адреса динамические, то я вообще не понимаю, о каком IP идет речь

а какая разница - статические или динамические адреса?! Просто в локалкее пытаются определить MAC сетевой карточки по IP адресу. Причем здест статика, динамика?


 
GLFox ©   (2005-03-22 16:56) [7]

Я использую такую вот функцию для получения MAC:

function GetHostInfoNB(sHostName:String; iInfoTypes:Integer):String;
var
 NCB:TNCB;
 i,iLen,iResCode:Integer;
 pAStat:^TAStat;
begin
 Result:="";
 if (sHostName="")or(sHostName=sLocalHostName) then sHostName:="*" else
   while (Length(sHostName)>0)and(sHostName[1]="\") do Delete(sHostName,1,1);
 FillChar(NCB,SizeOf(NCB),0);
 Ncb.ncb_command:=NCBRESET;
 Netbios(@NCB);
 FillChar(NCB,SizeOf(NCB),0);
 Ncb.ncb_command:=NCBASTAT;
 Ncb.ncb_lana_num:=0;
 New(pAStat);
 Ncb.ncb_buffer:=pAStat;
 Ncb.ncb_length:=SizeOf(TAStat);
 iLen:=Length(sHostName);
 for i:=0 to NCBNAMSZ-1 do
   if i<iLen then Ncb.ncb_callname[i]:=sHostName[i+1]
   else Ncb.ncb_callname[i]:=" ";
 iResCode:=Netbios(@NCB);
 if iResCode = 0 then begin
   if (nbiMACAddr and iInfoTypes) = nbiMACAddr then
     with pAStat^.adapt do begin
       Result:=Format("%.2x %.2x %.2x %.2x %.2x %.2x",
                     [adapter_address[0], adapter_address[1], adapter_address[2],
                      adapter_address[3], adapter_address[4], adapter_address[5]]);
     end;
   if (nbiGrpName and iInfoTypes) = nbiGrpName then begin
     if Result<>"" then Result:=Result+#0;
     for i:=0 to pAStat^.adapt.name_count-1 do
       if (pAStat^.NameBuff[i].name_flags and GROUP_NAME) = GROUP_NAME then begin
         Result:=Result+pAStat^.NameBuff[i].name;
         Break;
       end;
   end;
 end else AddEventToLog(etErrorInter,0,"NetBIOS error ("+sHostName+")");
 Dispose(pAStat);

где

TAStat=record
 adapt    : TAdapterStatus;
 NameBuff : array[0..29]of TNameBuffer;
end;


 
Piter ©   (2005-03-22 17:44) [8]

GLFox ©   (22.03.05 16:56) [7]
Result


а если NetBios на компьютере отключен?


 
Alex Konshin ©   (2005-03-22 23:57) [9]

Хуже - компьютер отключен.

Разница динамические/статические в том, что в случае динIP сам IP вообще не имеет смысла для отключенного компьютера, ведь при каждом включении он получает новый IP. Для статического я еще как-то могу представить ситуацию, что MAC-адрес где-то закешировался и мы его получили хотя компьютер выключен.



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

Форум: "Сети";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.02 c
6-1111511576
Radgar
2005-03-22 20:12
2005.06.06
ServerSocket


1-1116486365
heady
2005-05-19 11:06
2005.06.06
Ctrl+A в Memo


14-1116494164
BJValentine
2005-05-19 13:16
2005.06.06
Описалово компонентов RxLib


1-1116589938
juice
2005-05-20 15:52
2005.06.06
Как реализовать закрытие многопоточного приложения ?


3-1114433967
Bless
2005-04-25 16:59
2005.06.06
Эффективность плана выполнения запроса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский