Вопрос по c# – Создать случайный Mac-адрес

3

Я ищу метод в C #, который генерирует случайный номер MAC. Гугл довольно слаб в этом.

Большое спасибо

SOLUTION:

С помощью Yahia мне удалось закодировать следующее решение. Спасибо еще раз!

public static string GenerateMACAddress()
    {
        var sBuilder = new StringBuilder();
        var r = new Random();
        int number;
        byte b;
        for (int i = 0; i < 6; i++)
        {
            number = r.Next(0, 255);
            b = Convert.ToByte(number);
            if (i == 0)
            {
                b = setBit(b, 6); //--> set locally administered
                b = unsetBit(b, 7); // --> set unicast 
            }
            sBuilder.Append(number.ToString("X2"));
        }
        return sBuilder.ToString().ToUpper();
    }

    private static byte setBit(byte b, int BitNumber)
    {
        if (BitNumber < 8 && BitNumber > -1)
        {
            return (byte)(b | (byte)(0x01 << BitNumber));
        }
        else
        {
            throw new InvalidOperationException(
            "Der Wert für BitNumber " + BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
        }
    }

    private static byte unsetBit(byte b, int BitNumber)
    {
        if (BitNumber < 8 && BitNumber > -1)
        {
            return (byte)(b | (byte)(0x00 << BitNumber));
        }
        else
        {
            throw new InvalidOperationException(
            "Der Wert für BitNumber " + BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
        }
    }
Error: User Rate Limit Exceeded MUG4N
Error: User Rate Limit Exceeded Yahia
Error: User Rate Limit Exceededen.wikipedia.org/wiki/MAC_address Oren
Error: User Rate Limit Exceeded user207421
Error: User Rate Limit Exceeded MUG4N

Ваш Ответ

6   ответов
4
Error: User Rate Limit Exceeded MUG4N
Error: User Rate Limit Exceeded
1

enter image description here

http://blog.technitium.com/2011/05/tmac-issue-with-wireless-network.html

public static string GetRandomWifiMacAddress()
{
    var random = new Random();
    var buffer = new byte[6];
    random.NextBytes(buffer);
    buffer[0] = 02;
    var result = string.Concat(buffer.Select(x => string.Format("{0}", x.ToString("X2"))).ToArray());
    return result;
}
0

public static class MacAddress
{
    private static readonly Random Random = new Random();

    public static string GetSignatureRandomMac(string generic = "AA")
    {
        string[] macBytes = new[]
        {
            generic,
            generic,
            generic,
            Random.Next(1, 256).ToString("X"),
            Random.Next(1, 256).ToString("X"),
            Random.Next(1, 256).ToString("X")
        };

        return string.Join("-", macBytes);
    }

    public static string GetRandomMac()
    {
        string[] macBytes = new[]
        {
            Random.Next(1, 256).ToString("X"),
            Random.Next(1, 256).ToString("X"),
            Random.Next(1, 256).ToString("X"),
            Random.Next(1, 256).ToString("X"),
            Random.Next(1, 256).ToString("X"),
            Random.Next(1, 256).ToString("X")
        };

        return string.Join("-", macBytes);
    }
}

Console.WriteLine(MacAddress.GetRandomMac());
Console.WriteLine(MacAddress.GetSignatureRandomMac());
Console.WriteLine(MacAddress.GetSignatureRandomMac("BB"));
10

public static string GetRandomMacAddress()
{
    var random = new Random();
    var buffer = new byte[6];
    random.NextBytes(buffer);
    var result = String.Concat(buffer.Select(x => string.Format("{0}:", x.ToString("X2"))).ToArray());
    return result.TrimEnd(':');
}

2

Так что вместо

b = setBit(b, 6); //--> set locally administered
b = unsetBit(b, 7); // --> set unicast 

b = setBit(b, 1); //--> set locally administered
b = unsetBit(b, 0); // --> set unicast 

unsetBit()

return unchecked((byte)(b & (byte)~(0x01 << BitNumber)));

if (i == 0)
{
    b = (byte)((b & 0xFE) | 0x02) //-->set locally administered and unicast
}
-1

Похожие вопросы