Форум: "Сети";
Текущий архив: 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.014 c