Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 18.04.2019, 21:59   #1
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию Получения мак адреса

Получения мак адреса подскажите как получить мак адрес сетевой платы
Есть у материнской платы уникальный id и возможно ли его получить?
linda88 вне форума Ответить с цитированием
Старый 18.04.2019, 22:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Цитата:
Сообщение от linda88 Посмотреть сообщение
Получения мак адреса подскажите как получить мак адрес сетевой платы
https://docs.microsoft.com/en-us/win...ptersaddresses

Цитата:
Сообщение от linda88 Посмотреть сообщение
Есть у материнской платы уникальный id и возможно ли его получить?
Смотря, что под этим понимать и для чего. Какую-ту инфу типа названия/серийника/... получить можно, но и поменять их можно.
p51x вне форума Ответить с цитированием
Старый 18.04.2019, 23:53   #3
Баламут
Баламучу слегка...
СуперМодератор
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,584
По умолчанию

Ну я как-то так делал. Давно правда...
Код:
uses Windows, WinSock, SysUtils;

type
  TMacAddress = array [1..6] of byte;

...............
function GetMAC(Value: TMacAddress; Length: DWORD): String;
var
  i: integer;
begin
 if Length = 0 then Result := '00-00-00-00-00-00'
 else
 begin
  Result:= '';
  for i:= 1 to Length-1 do
   Result := Result + IntToHex(Value[i], 2) + '-';
  Result := Result + IntToHex(Value[Length], 2)
 end
end;

function GetMacFromIP(IP: string): string;
var
  DestIP, SrcIP: ULONG;
  pMacAddr: TMacAddress;
  PhyAddrLen: ULONG;
  ps: PAnsiChar;
begin
 GetMem(ps, Length(ip)*2);
 strPCopy(ps, AnsiString(ip));
 DestIP:= inet_addr(ps);
 FreeMem(ps);
 PhyAddrLen:= 6;
 SendArp(DestIP, 0, @pMacAddr, PhyAddrLen);
 Result := GetMAC(pMacAddr, PhyAddrLen)
end;

Последний раз редактировалось Баламут; 18.04.2019 в 23:57.
Баламут вне форума Ответить с цитированием
Старый 19.04.2019, 11:36   #4
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
https://docs.microsoft.com/en-us/win...ptersaddresses


Смотря, что под этим понимать и для чего. Какую-ту инфу типа названия/серийника/... получить можно, но и поменять их можно.
Иметься ввиду привязка программы к мак адресу сетевой платы и материки чтобы нельзя было отвязать. Свое образная идентификация компьютера.

Последний раз редактировалось linda88; 19.04.2019 в 11:38.
linda88 вне форума Ответить с цитированием
Старый 19.04.2019, 12:03   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Я так и подумал. Это очень давно прошедший этап. Все эти значения легко меняются, а у легальных пользователей проблемы, например, при замене сетевухи.
p51x вне форума Ответить с цитированием
Старый 19.04.2019, 17:55   #6
Баламут
Баламучу слегка...
СуперМодератор
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,584
По умолчанию

Вот ни один раз уже слышал об этом, но так и не понял... В каком месте у компа может быть УНИКАЛЬНЫЙ ID? И уж тем более который нельзя изменить. Сетевуха не в счет

Последний раз редактировалось Баламут; 19.04.2019 в 17:58.
Баламут вне форума Ответить с цитированием
Старый 19.04.2019, 17:59   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Ну, теоретически, если собрать имя_материнки, ее серийник, модель системного диска, его серийник, мак адрес, ... то вероятность наткнутся на одинаковый набор уменьшается.
Про неизменить это сложнее, но, теоретически, если использовать всякие TPM и подобные...
p51x вне форума Ответить с цитированием
Старый 19.04.2019, 18:16   #8
Баламут
Баламучу слегка...
СуперМодератор
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,584
По умолчанию

Ну так я об этом и говорю. Где взять серийник материнки? Что это вообще?
Баламут вне форума Ответить с цитированием
Старый 19.04.2019, 18:24   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Есть несколько вариантов:
1. попроще, получить набор параметров
Цитата:
"BiosMajorRelease"
"BiosMinorRelease"
"ECFirmwareMajorRelease"
"ECFirmwareMinorRelease"
"BaseBoardManufacturer"
"BaseBoardProduct"
"BaseBoardVersion"
"BIOSReleaseDate"
"BIOSVendor"
"BIOSVersion"
"SystemFamily"
"SystemManufacturer"
"SystemProductName"
"SystemSKU"
"SystemVersion"
можно даже из реестра
2. посложнее, брать что-то типа GetSystemFirmwareTable и парсить SMBIOS
конечно, это ничего не гарантирует...
p51x вне форума Ответить с цитированием
Старый 19.04.2019, 18:37   #10
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

т.е. получается только сетевой платы неизменные параметры?
linda88 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1. Ввести символьный массив. Найти адреса всех парных его элементов. 2. Вывести адреса элементов массива 4 на 4, находящихся выше главной диагонали. 3. Реализовать следующее задани Y2J Помощь студентам 1 27.11.2018 21:32
Создать заголовок Bootstrap используемый в DHCP для автоматического получения клиентом Ip адреса Aliens_wolfs Работа с сетью в Delphi 1 23.03.2012 14:51
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3. Расмотреть два слу salomon93 Паскаль, Turbo Pascal, PascalABC.NET 11 01.12.2011 23:36
ПО для получения координат Иллидан Софт 2 07.07.2011 19:06