Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как изменить/эмулировать мак адрес компа


Автор: Rohoss 29.6.2008, 17:42
Собственно сабж.  Известно, что сетевая плата одна. В сети много примеров как узнать, но как изменить не нашёл…

Автор: Qu1nt 29.6.2008, 18:12
Цитата(Google)

1) Зайдите в систему как Администратор.
2) Откройте Пуск-> Панель управления. Откройте "Сетевые подключения". Выделите нужный сетевой интерфейс, зайдите в его Свойства (правым кликом).
3) Сейчас Вы видите, какому устройству соответствует данный сетевой интерфейс.
4) Запускаем regedit: "Пуск-> Выполнить->regedt32". Обратите внимание: не "Regedit".
5) Открываем раздел "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
6) Ищем наш подраздел. Подразделы описывают сетевые интерфейсы всех имеющихся сетевых адаптеров и отображаются в виде 4-х значных чисел 0000, 0001, 0002 и т.д. Не уходите в подключи Linkage и Ndi. По ключу 000x\"DriverDesc" находим нужный нам интерфейс. Он будет содержать имя сетевой карты.
7) Изменяем (добавляем, если нужно, тип данных - REG_SZ) ключ "NetworkAddress".  Вводим новый адрес.
8) Не трогайте DriverDateData.
9) Отключаем, затем включаем сетевой интерфейс в окне "Сетевые подключения". 
10) Желательна перезагрузка.

Чревато все это)

Автор: Rohoss 29.6.2008, 18:15
Уже разобрался.
Можно симулировать. Для этого  в реестре в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001 создаём строковой параметр с именем  NetworkAddress и нашим новым маком.  smile 
Вот код
Код

procedure SenMacAdress(sNewMac:string);
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001',false);
reg.WriteString('NetworkAddress',sNewMac);
reg.CloseKey;
reg.Free;
end;

После этого нужно отключится от сети и опять подключится. Знать бы ещё как это сделать…  smile

Добавлено @ 18:17
Qu1nt спасибо, ну уже нашёл

Автор: Qu1nt 29.6.2008, 18:59
Я бы изменил твою функцию как-нибудь так:
Код

procedure SetMacAdress(const NewMac: string; DeviceNum: Integer = 1);
begin
  with TRegistry.Create do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKey('SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000' + IntToStr(DeviceNum), False);
    WriteString('NetworkAddress', NewMac);
    Free;
  end;
end;

Цитата(Rohoss @  29.6.2008,  18:15 Найти цитируемый пост)

После этого нужно отключится от сети и опять подключится. Знать бы ещё как это сделать… 

Скачиваем http://download.microsoft.com/download/f/d/0/fd05def7-68a1-4f71-8546-25c359cc0842/TechniquesForSimp2006_05.exe консольную утилитку.
Отключаем:
Код

CNic n:0 -d

Включаем:
Код

CNic n:0 -c



Автор: Rohoss 29.6.2008, 19:30
Qu1nt, супер!!! Большое спасибо!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)