Другие языки программирования и технологии

delphi mac adress как узнать адрес роутера (BSSID) на вай фай сетях это довольно просто а через лан

у меня на роутере снизу написаны Пароль и адресс может есть что-нибудь ?
Александр Дудник
Александр Дудник
2 640
Лучший ответ
Видимо плохо знаком с гуглом

const
MAX_ADAPTER_ADDRESS_LENGTH = 7;

type
// Так будет выглядеть МАС
TMacAddress = array[0..MAX_ADAPTER_ADDRESS_LENGTH] of byte;

// Это структура для единичного запроса
TMibIPNetRow = packed record
dwIndex : DWORD;
dwPhysAddrLen : DWORD;
bPhysAddr : TMACAddress; // Вот здесь и лежит МАС!!!
dwAddr : DWORD;
dwType : DWORD;
end;

TMibIPNetRowArray = array [0..512] of TMibIPNetRow;

PTMibIPNetTable = ^TMibIPNetTable;
TMibIPNetTable = packed record
dwNumEntries : DWORD;
Table: TMibIPNetRowArray;
end;

{$EXTERNALSYM GetIpNetTable}
function GetIpNetTable(pIpNetTable: PTMibIPNetTable;
pdwSize: PULONG; bOrder: Boolean): DWORD; stdcall;
function GetIpNetTable; external IPHLPAPI name 'GetIpNetTable';

implementation

function TOutputDataString.SetMacFromIP1(IP: string):string;
// В качестве первого значения массив, второе значение,
// размер данных в массиве
function GetMAC(AValue: TMacAddress; ALength: DWORD): String;
var
I: Integer;
begin
if ALength = 0 then
Result := "00-00-00-00-00-00"
else
begin
Result := '';
for I:= 0 to ALength -2 do
Result := Result + IntToHex(AValue[i], 2) + '-';

Result := Result + IntToHex(AValue[ALength-1], 2);
end;
end;

// Получаем IP адрес
function GetDottedIPFromInAddr(const AInAddr: Integer): String;
begin
Result := '';
Result := IntToStr(FOURTH_IPADDRESS(AInAddr));
Result := Result + '.' + IntToStr(THIRD_IPADDRESS(AInAddr));
Result := Result + '.' + IntToStr(SECOND_IPADDRESS(AInAddr));
Result := Result + '.' + IntToStr(FIRST_IPADDRESS(AInAddr));
end;

// Основная функция
var
Table: TMibIPNetTable;
Size: Integer;
CatchIP: String;
Err, I: Integer;
begin
Result := '';
Size := SizeOf(Table); // Ну тут все просто...
Err := GetIpNetTable(@Table, @Size, False); // Выполняем...
if Err = NO_ERROR then // Проверка на ошибку...
// Теперь мы имеем таблицу из IP адресов и соответсвующих им MAC адресов
for I := 0 to Table.dwNumEntries - 1 do // Ищем нужный IP ...
begin
CatchIP := GetDottedIPFromInAddr(Table.Table[I].dwAddr);
if CatchIP = IP then // И выводим его МАС ...
begin
Result := GetMAC(Table.Table[I].bPhysAddr, Table.Table[I].dwPhysAddrLen);
Break;
end;
end;
end;

Но этот код вряд ли тебе поможет т. к. я уверен, что ты не знаком ни с типами ни с функциями....
Мухриддин Мадрахимов он не работает как и большинство кодов из гугла