Когда я меняю mac-адрес, мне приходится выключать и включать Wi-Fi. А как с Ethernet?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Когда я меняю mac-адрес, мне приходится выключать и включать Wi-Fi. А как с Ethernet?

Сообщение Anonymous »

Пишу код для временной смены mac-адреса, вроде все работает, но mac-адрес меняется только, например на примере wifi, а не когда выключаю сетевая карта, но когда я подхожу к значку Wi-Fi и нажимаю, выключаю ее, а затем включаю и снова подключаюсь к сети. И теперь вопрос, как это сделать с Ethernet? Я пробовал использовать код для отключения сетевой карты, но тогда mac-адрес вообще ничего не меняет, он только стандартный.
Этот код написан на C# .NET 4.7. .2.

Код: Выделить всё

private static async Task ChangeMacAddresses()
{
var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();

foreach (var nic in networkInterfaces)
{
if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet || nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
{
string newMac = GenerateRandomMacAddress();
await SmoothPrint($"Changing MAC address for {nic.Name} to {newMac}", 10);

// Znalezienie odpowiedniego identyfikatora klasy
string classId = GetNetworkInterfaceClassId(nic);

if (string.IsNullOrEmpty(classId))
{
await SmoothPrint($"Failed to find class ID for {nic.Name}", 10);
continue;
}

// Zmieniamy adres MAC
string changeMacCommand = $@"reg add ""HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{classId}"" /v NetworkAddress /t REG_SZ /d {newMac} /f";
await ExecuteCommandsAsAdmin(new[] { changeMacCommand });
}
}

await SmoothPrint("MAC addresses changed.", 10);
}

private static string GetNetworkInterfaceClassId(NetworkInterface nic)
{
// Odczytaj identyfikator klasy z rejestru systemowego
// Należy zastąpić poniższy kod rzeczywistym sposobem pozyskiwania identyfikatora klasy
// lub znaleźć odpowiedni sposób uzyskania identyfikatora na podstawie sprzętu

// Przykład: "00000000-0000-0000-0000-000000000000" - trzeba zmienić na rzeczywisty identyfikator
return "00000000-0000-0000-0000-000000000000";
}

private static string GenerateRandomMacAddress()
{
Random rand = new Random();
byte[] macAddr = new byte[6];
rand.NextBytes(macAddr);
macAddr[0] = (byte)(macAddr[0] & (byte)0xFE); // set the multicast bit to 0
macAddr[0] = (byte)(macAddr[0] | (byte)0x02); // set the local bit to 1
return string.Join(":", macAddr.Select(b => b.ToString("X2")));
}
Я пробовал выключать и включать сетевую карту, но безрезультатно.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ith-ethern
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»