Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] скрипт-генератор mac-адресов? (http://forum.oszone.net/showthread.php?t=199939)

super_bitard 19-02-2011 18:59 1617138

скрипт-генератор mac-адресов?
 
возможно ли написать скрипт, генерирующий рандомные mac-адреса?

за основу можно взять этот скрипт:
reg add "hklm\system\currentcontrolset\control\class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000x" /v "networkaddress" /t reg_sz /d "xxxxxxxxxxxxx" /f

где:
000x - ветвь принадлежащая соответствующему сетевому адаптеру
xxxxxxxxxxxxx - mac-адрес

Anonymоus 19-02-2011 20:07 1617193

Как-то так.
Код:

@Echo Off
SetLocal EnableDelayedExpansion EnableExtensions
Set TotalChars=16
Set GenerateChars=12
Set CharSet=0123456789ABCDEF
:Loop
Set /A Rnd=%TotalChars%*%Random%/32768
Set Mac=!CharSet:~%Rnd%,1!%Mac%
Set /A GenerateChars-=1
If %GenerateChars% GTR 0 GoTo Loop
Reg add "hklm\system\currentcontrolset\control\class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000x" /v "networkaddress" /t reg_sz /d "%Mac%" /f


amel27 20-02-2011 08:58 1617439

или так:
Код:

@echo off
SETLOCAL EnableDelayedExpansion
(
set "map=0-0;1-1;2-2;3-3;4-4;5-5;6-6;7-7;8-8;9-9;10-a;11-b;12-c;13-d;14-e;15-f"
set "mac="& for /l %%a in (1,1,12) do (set /a $a=!RANDOM!%%16
call set "$b=%%map:*!$a!-=%%"& set "mac=!mac!!$b:~,1!"))

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000x" /v "NetworkAddress" /t REG_SZ /d "%mac%" /f


super_bitard 20-02-2011 13:22 1617557

первый скрипт не работает
второй скрипт меняет mac на фиксированный 00AC00000000, при последующем применении скрипта меняет на такой же.

Anonymоus 20-02-2011 13:37 1617576

Первый скрипт работает. Поставь перед "reg add ..." Echo и убедись сам - каждый раз генерируется разный адрес.

amel27 21-02-2011 11:52 1618230

однако протупил, можно короче:
Код:

@echo off
SETLOCAL EnableDelayedExpansion
(
set "map=0123456789abcdef"
set "mac="& for /l %%a in (1,1,12) do set /a $a=!RANDOM!%%16& call set "mac=!mac!%%map:~!$a!,1%%"
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\000x" /v NetworkAddress /t REG_SZ /d "!mac!" /f
)


figusev@vk 01-06-2021 00:08 2959307

@echo off
del /F /S /Q mac1.txt > nul
del /F /S /Q mac.txt > nul
color 0a
cls
:restart
set /a y=1
goto begin2
:begin
set /a y=y+1
:begin2
REM ЗАМЕНА ГЕНЕРИРУЕМЫХ ЧИСЕЛ НА ABCDEF
set /a var=16*%random%/32768
if %var%==10 SET var=A
if %var%==11 SET var=B
if %var%==12 SET var=C
if %var%==13 SET var=D
if %var%==14 SET var=E
if %var%==15 SET var=F
echo %var% >> mac.txt
if %y%==12 goto END
goto begin
:END
for /f %%a in (mac.txt) do set/p=%%a < nul >> mac1.txt
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%a in (mac1.txt) do set var=%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l
@del /F /S /Q mac1.txt > nul
@del /F /S /Q mac.txt > nul
echo MAC ADDRESS %var%

goto restart

@echo off
:begin
SETLOCAL EnableDelayedExpansion
(
set "map=0123456789abcdef"
set "mac="& for /l %%a in (1,1,12) do set /a $a=!RANDOM!%%16& call set "mac=!mac!%%map:~!$a!,1%%")
Echo %mac%
goto begin

Если зациклить будет ошибка в интерпретаторе. А так мне понравилось быстро работает если перепишете возьму за основу.

DJ Mogarych 01-06-2021 10:38 2959318

Powershell:
Код:

((((new-guid).guid -split '-')[-1]) -split '(.{2})' |? {$_}) -join ':'

megaloman 02-06-2021 09:54 2959383

figusev@vk,
Цитата:

Цитата figusev@vk
Если зациклить будет ошибка в интерпретаторе. »

Не будет
Код:

@echo off
SETLOCAL EnableDelayedExpansion

set "map=0123456789abcdef"
:Begin
        set "mac="& for /l %%a in (1,1,12) do set /a $a=!RANDOM!%%16& call set "mac=!mac!%%map:~!$a!,1%%"
        echo !mac!
GoTo :Begin

Еще вариант
Код:

@Echo Off
Set "@@0=0" &Set "@@1=1" &Set "@@2=2" &Set "@@3=3" &Set "@@4=4" &Set "@@5=5" &Set "@@6=6" &Set "@@7=7" &Set "@@8=8" &Set "@@9=9" &Set "@@10=A" &Set "@@11=B" &Set "@@12=C" &Set "@@13=D" &Set "@@14=E" &Set "@@15=F"

:Begin
        Set "mac="& For /l %%a in (1,1,12) Do Call Set /A $a=16*%%RANDOM%%/32768 &Call Set "mac=%%mac%%%%%%@@%%$a%%%%%%"
        Call Set "mac=%mac%"
        Echo %mac%
GoTo :Begin



Время: 01:44.

Время: 01:44.
© OSzone.net 2001-