Этот код написан на 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