Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Генератор MAC адреса  (Прочитано 5599 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Валерий [РФ]

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
  • Ubuntu 20.04
    • Просмотр профиля
Генератор MAC адреса
« : 11 Августа 2015, 18:21:50 »
Всем привет!
Подскажите пожалуйста, как на php сделать простенький генератор мак адресов? Или в виде обычного bash скрипта?
«Лучше быть умным и иногда тупить, чем быть тупым и всегда умничать»

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Генератор MAC адреса
« Ответ #1 : 11 Августа 2015, 18:48:38 »
мак - это по сути псевдослучайное число, если не считать префиксов (https://ru.wikipedia.org/wiki/MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81). Префиксы распределяемые между производиетелями сетевых интерфейсов. Как правильно выбрать префикс - не скажу - не знаю. Но можно выбрать локально администрируемый вариант и префикс брать произвольный. А последние биты - можно смело из рандома брать.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Валерий [РФ]

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
  • Ubuntu 20.04
    • Просмотр профиля
Re: Генератор MAC адреса
« Ответ #2 : 11 Августа 2015, 19:41:06 »
Я нашел разные генераторы онлайн и заметил одну фишку по формированию мак адреса.

Вот пример:
70-B4-5A-95-D5-E7
3C-F6-57-D8-30-BB
3C-65-3F-3B-03-F5
3A-00-24-73-CD-85
3D-61-A9-39-2D-18
F4-9E-CC-4F-33-A1
36-70-98-8E-48-C8
49-84-2D-88-C0-31
7E-FA-31-A3-6E-FF
29-AC-60-D2-E6-8E
EB-DA-2C-B7-29-5F
59-60-D0-F1-EF-18

Как видим он состоит из 12 символов разбитых через дефис по 2 символа на 6 ячеек. Порядок символов уникален, т.е. либо буква и цифра (F4-), либо две цифры от 0 до 99 (98-), либо две буквы (FF-), по другому мак не примется.

Я попробовал собрать вот такой скрипт (php) из готовый вариантов на различных сайтах но у меня получается какая-то лажа)))

Код: (php) [Выделить]
<?php
$input 
= array(
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
);
$rand_keys array_rand($input12);
echo 
$input[$rand_keys[0]] . "";
echo 
$input[$rand_keys[1]] . "-";
echo 
$input[$rand_keys[2]] . "";
echo 
$input[$rand_keys[3]] . "-";
echo 
$input[$rand_keys[4]] . "";
echo 
$input[$rand_keys[5]] . "-";
echo 
$input[$rand_keys[6]] . "";
echo 
$input[$rand_keys[7]] . "-";
echo 
$input[$rand_keys[8]] . "";
echo 
$input[$rand_keys[9]] . "-";
echo 
$input[$rand_keys[10]] . "";
echo 
$input[$rand_keys[11]] . "";
?>

сам я в этом чайник  ;D
Может кто доведет до ума по выше описанному принципу?
«Лучше быть умным и иногда тупить, чем быть тупым и всегда умничать»

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Генератор MAC адреса
« Ответ #3 : 11 Августа 2015, 19:58:04 »
Я нашел разные генераторы онлайн и заметил одну фишку по формированию мак адреса.
...
Как видим он состоит из 12 символов разбитых через дефис по 2 символа на 6 ячеек. Порядок символов уникален, т.е. либо буква и цифра (F4-), либо две цифры от 0 до 99 (98-), либо две буквы (FF-), по другому мак не примется.
Цитировать
Ну, блин, вы даёте!
(с) из известного фильма.

MAC - это Ethernet адрес, 2 адреса в Ethernet кадре, всё асолютно регламентировано стандартом IEEE 802.3:
- нет там никаих 12 символов ...
- там есть 6-байтовое числовое заначение, каждый байт: 0-255,
- а 2 символа в вашей записи - это шестнадцатеричные числа, выражающие полубайты, 4 бит - старший и 4-младший.
- а 16-ричные цифры записываются знаками: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
- выбирайте любые 12 таких знаков (6 байт, 12 полубайт), записывайте их в ряд - это и будет вам допустимый MAC-адрес.

Так что 012345 и FEDCBA - это вполне хорошие MAC-адреса.

Оффлайн Валерий [РФ]

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
  • Ubuntu 20.04
    • Просмотр профиля
Re: Генератор MAC адреса
« Ответ #4 : 11 Августа 2015, 20:10:45 »
Я нашел разные генераторы онлайн и заметил одну фишку по формированию мак адреса.
...
Как видим он состоит из 12 символов разбитых через дефис по 2 символа на 6 ячеек. Порядок символов уникален, т.е. либо буква и цифра (F4-), либо две цифры от 0 до 99 (98-), либо две буквы (FF-), по другому мак не примется.
Цитировать
Ну, блин, вы даёте!
(с) из известного фильма.

MAC - это Ethernet адрес, 2 адреса в Ethernet кадре, всё асолютно регламентировано стандартом IEEE 802.3:
- нет там никаих 12 символов ...
- там есть 6-байтовое числовое заначение, каждый байт: 0-255,
- а 2 символа в вашей записи - это шестнадцатеричные числа, выражающие полубайты, 4 бит - старший и 4-младший.
- а 16-ричные цифры записываются знаками: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
- выбирайте любые 12 таких знаков (6 байт, 12 полубайт), записывайте их в ряд - это и будет вам допустимый MAC-адрес.

Так что 012345 и FEDCBA - это вполне хорошие MAC-адреса.


Ясно. Но сути не меняет.
Всё равно нужен генератор который будет складывать из этого (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.) мак адрес.
«Лучше быть умным и иногда тупить, чем быть тупым и всегда умничать»

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Генератор MAC адреса
« Ответ #5 : 11 Августа 2015, 20:16:38 »
Всё равно нужен генератор который будет складывать из этого (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.) мак адрес.
А что там генерировать: берёте последовательно наугад 12 раз цифру из этого ряда...

Оффлайн Валерий [РФ]

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
  • Ubuntu 20.04
    • Просмотр профиля
Re: Генератор MAC адреса
« Ответ #6 : 11 Августа 2015, 20:21:06 »
Вот, получилось  :D
Код: (php) [Выделить]
<?php
$input 
= array("A","B","C","D","E","F","0","1","2","3","4","5","6","7","8","9");
$rand_keys array_rand($input12);
echo 
$input[rand(0,12)] . "";
echo 
$input[rand(0,12)] . "-";
echo 
$input[rand(0,12)] . "";
echo 
$input[rand(0,12)] . "-";
echo 
$input[rand(0,12)] . "";
echo 
$input[rand(0,12)] . "-";
echo 
$input[rand(0,12)] . "";
echo 
$input[rand(0,12)] . "-";
echo 
$input[rand(0,12)] . "";
echo 
$input[rand(0,12)] . "-";
echo 
$input[rand(0,12)] . "";
echo 
$input[rand(0,12)] . "";
?>

Не знаю на сколько такой код правильный, но зато работает  ;D
«Лучше быть умным и иногда тупить, чем быть тупым и всегда умничать»

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Генератор MAC адреса
« Ответ #7 : 11 Августа 2015, 20:59:06 »
Не знаю на сколько такой код правильный, но зато работает  ;D
Ну работает - и ладно...

Непонятно зачем так записывать (16-ричные цифры):
$input = array("A","B","C","D","E","F","0","1","2","3","4","5","6","7","8","9");Запишите так:
$input = array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Генератор MAC адреса
« Ответ #8 : 12 Августа 2015, 00:05:08 »
я в PHP не силен, но ИМХО rand должен давать числа в диапазоне 0-15 (0-F в шеснадцатеричной системе счисления), а не 0,12.

И не забывайте, что старшие два бита для локально администрируруемых MAC адресов (согласно стандарту) обязаны быть 01 т.е. самый старший знак должен быть в диапазоне 4-7.

Ну а кроме того как по мне так проще генерить 6 случайных байт (5 чисел в диапазоне 0-255 и одно 64-127 - первый байт) и оформить их вывод в 16-ричном виде (не знаю как в PHP это делать - но должно быть ибо 16-ричный - довольно часто употребимый формат).
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.038 секунд. Запросов: 25.