joelson0007 (Adm) 264 Report post Posted April 16, 2012 Fala pessoal, fiz este mac change, mas não garanto que funciona em todas as placas de rede!! :blush: usem o ipconfig /all para ver a modificação no endereço físico expandcollapse popup;============================================ ; Desenvolvido por Joelson0007 ; compartilhado com forum autoitbrasil.com ;============================================ #RequireAdmin #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GuiStatusBar.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> if (RegRead("HKEY_CURRENT_USER\Software\Change_mac_1.0", "Original_mac") ="") Then RegWrite("HKEY_CURRENT_USER\Software\Change_mac_1.0", "Original_mac", "REG_SZ", _GetMac()) EndIf Global $sMacOrigin=RegRead("HKEY_CURRENT_USER\Software\Change_mac_1.0", "Original_mac") Global $progressbar1 ;================================= guia #Region ### START Koda GUI section ### Form= $guia = GUICreate("Change Mac 1.0", 284, 218, -1, -1) $Group1 = GUICtrlCreateGroup(" Change Mac 1.0 ", 8, 8, 265, 175) $Label1 = GUICtrlCreateLabel("Mac Original", 27, 40, 82, 22) GUICtrlSetFont(-1, 11, 400, 0, "Tahoma") $iMacOriginal = GUICtrlCreateInput("", 112, 38, 137, 26,$ES_READONLY) GUICtrlSetFont(-1, 11, 400, 0, "Tahoma") $Label2 = GUICtrlCreateLabel("Mac Atual", 27, 77, 68, 22) GUICtrlSetFont(-1, 11, 400, 0, "Tahoma") $iMacAtual = GUICtrlCreateInput("00:06:00:95:8D:83", 112, 75, 137, 26,$ES_READONLY) GUICtrlSetFont(-1, 11, 400, 0, "Tahoma") $Label3 = GUICtrlCreateLabel("Novo Mac", 27, 113, 70, 22) GUICtrlSetFont(-1, 11, 400, 0, "Tahoma") $iNovoMac = GUICtrlCreateInput("", 112, 111, 137, 26) GUICtrlSetFont(-1, 11, 400, 0, "Tahoma") $bRestaurar = GUICtrlCreateButton("Restaurar", 48, 152, 75, 25) $bTrocar= GUICtrlCreateButton("Trocar", 136, 152, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $StatusBar1 = _GUICtrlStatusBar_Create($guia) Dim $StatusBar1_PartsWidth[1] = [-1] _GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth) _GUICtrlStatusBar_SetText($StatusBar1, @TAB & "Desenvolvido por Joelson0007", 0) _GUICtrlStatusBar_SetBkColor($StatusBar1, 0xB4B4B4) update() GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### ;==> fim da guia GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $bTrocar ChangeMac() Case $bRestaurar Restaurar() EndSwitch WEnd ;================================ Update Func update() $sMacOrigin=RegRead("HKEY_CURRENT_USER\Software\Change_mac_1.0", "Original_mac") Local $sMacUlt=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007", "NetworkAddress") GUICtrlSetData($iMacOriginal,_Mac_formater($sMacOrigin)) GUICtrlSetData($iMacAtual,_Mac_formater($sMacUlt)) EndFunc ;================================ Trocar mac Func ChangeMac() ProgressShow() Sleep(2000) RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007", "NetworkAddress", "REG_SZ", StringRegExpReplace(GUICtrlRead($iNovoMac),"\x3A","")) _LanEnable(0) Sleep(2000) _LanEnable(1) Sleep(2000) update() GUICtrlDelete($progressbar1) EndFunc ;================================ Restaurar Mac Original Func Restaurar() ProgressShow() Sleep(2000) RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007", "NetworkAddress", "REG_SZ", $sMacOrigin) _LanEnable(0) Sleep(2000) _LanEnable(1) Sleep(2000) update() GUICtrlDelete($progressbar1) EndFunc ;================================ Desabilitar/Habilitar conexão local Func _LanEnable($ativacte = 1) If $ativacte Then $cod = 0 Else $cod = 1 EndIf Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2") Local $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapter Where NetEnabled = '"&$cod&"'") If IsObj($colItems) Then For $objItem In $colItems If $ativacte Then $objItem.Enable Else $objItem.Disable EndIf Next EndIf EndFunc ;================================ Fomtar Mac address no input ;modificado por @manimal Func _Mac_formater($fMac) Local $fMac_formted = StringLeft(StringRegExpReplace($fMac, "[^0-9A-Z]", ""), 12) ; remove caracteres não permitidos e limita tamanho em 12 caract Return StringRegExpReplace($fMac_formted, "((?<=\w{2})\w\w?)", ":$1") ; formata para padrão MAC e devolve EndFunc ;================================ Checar mundança no input Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode $hWndFrom = $ilParam $iIDFrom = _WinAPI_LoWord($iwParam) $iCode = _WinAPI_HiWord($iwParam) Switch $hWndFrom Case GUICtrlGetHandle($iNovoMac) Switch $iCode Case $EN_CHANGE Sleep(500) GUICtrlSetData($iNovoMac,_Mac_formater(GUICtrlRead($iNovoMac))) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;================================ Mostrar progressbar Func ProgressShow() $progressbar1 = GUICtrlCreateProgress(0, 185, 284, 10,9) GUICtrlSetColor(-1, 0x800000) GUICtrlSetBkColor(-1, 0xE6E6E6) GUICtrlSendMsg($progressbar1, 1034, True, 10) EndFunc Func _GetMac() Local $oWMI = ObjGet( "winmgmts:\\" & @ComputerName & "\root\cimv2" ) Local $o_mac = $oWMI.ExecQuery( "SELECT Index, Caption, MACAddress, IPAddress, DefaultIPGateway FROM Win32_NetworkAdapterConfiguration Where IPEnabled = True", "WQL", 0x30 ) If IsObj( $o_mac ) Then Local $o_mac_e For $o_mac_e In $o_mac $o_mac_e.MACAddress Next EndIf Return $o_mac_e.MACAddress EndFunc Download ChangeMac_v1.0.au3 3 Share this post Link to post Share on other sites
JDSCaram (Adm) 67 Report post Posted April 16, 2012 Muito bom joelson, meus parabens aqui funcionou sim Share this post Link to post Share on other sites
Belini (Adm) 233 Report post Posted April 16, 2012 Mais um script de grande utilidade parabéns joelson0007. Share this post Link to post Share on other sites
JScript (Adm) 445 Report post Posted April 16, 2012 Excelente trabalho! Aqui funcionou redondinho também, valeu!!! Abraços, João Carlos. Share this post Link to post Share on other sites
Brenner 13 Report post Posted April 17, 2012 Não tenho um Mac nem conhecimento sobre o mesmo, mas mac adress é o mesmo que Ip? AutoIt também pode ser programado no S.O Mac? :o Share this post Link to post Share on other sites
joelson0007 (Adm) 264 Report post Posted April 17, 2012 O endereço MAC (Media Access Control) é o endereço físico de 48 bits da estação, ou, mais especificamente, da interface de rede. O protocolo é responsável pelo controle de acesso de cada estação à rede Ethernet. Este endereço é o utilizado na camada 2 (Enlace) do Modelo OSI. Representa-se um endereço MAC escrevendo, exactamente, 12 dígitos hexadecimais agrupados dois a dois – os grupos são separados por dois pontos. Exemplo: 00:00:5E:00:01:03 fonte:wikipedia é como se fosse a identidade da placa de rede B) 1 Share this post Link to post Share on other sites
JScript (Adm) 445 Report post Posted May 6, 2012 Não tenho um Mac nem conhecimento sobre o mesmo, mas mac adress é o mesmo que Ip? AutoIt também pode ser programado no S.O Mac? :o Você recebeu uma excelente explicação de nosso amigo @joelson0007, o que faltou para agradecê-lo? Saiba que nossos usuários são analisados nos mínimos detalhes, isso conta bastante! Abraços, João Carlos. Share this post Link to post Share on other sites
Manimal (Adm) 165 Report post Posted July 30, 2012 (edited) @joelson0007 Muito bom o programa e interessante o conceito. Ajudou em relação a como desligar e religar a placa de rede. Obrigado. Aproveitando, sugiro um pequena modificação na função _Mac_formater para deixar o programa mais legal, espero que não se importe. Porque atualmente está permitindo que o usuário digite mais caracteres que a máscara do MAC permite. Código original: Func _Mac_formater($fMac) Local $fMac_formted $aMac=StringRegExp($fMac,"(\w{2})",3) For $i = 0 To UBound($aMac) - 1 $fMac_formted&=$aMac[$i]&":" Next Return StringRegExpReplace($fMac_formted,"\x3A$","") EndFunc Troque por: Func _Mac_formater($fMac) Local $fMac_formted = StringLeft(StringRegExpReplace($fMac, "[^0-9A-Z]", ""), 12) ; remove caracteres não permitidos e limita tamanho em 12 caract Return StringRegExpReplace($fMac_formted, "((?<=\w{2})\w\w?)", ":$1") ; formata para padrão MAC e devolve EndFunc E para dar o efeito de edição em tempo real, diminua o tempo do Sleep na função WM_COMMAND para 100 ou elimine o Sleep. Claro que essas mudanças são apenas cosméticas e não afetam o resultado ou operação do seu excelente programa. Ps.: Editei a máscara de formatação para melhor legibilidade. Edited July 30, 2012 by Manimal Share this post Link to post Share on other sites
JScript (Adm) 445 Report post Posted July 30, 2012 Excelente adição, fica bem melhor mesmo! Abraços, João Carlos. Share this post Link to post Share on other sites
joelson0007 (Adm) 264 Report post Posted July 30, 2012 @Manimal, pode modificar a vontade, corrigir, melhorar, fique a vontade... Já fiz a modificação no script original, usando a nova função :lol: Share this post Link to post Share on other sites
kidslax 18 Report post Posted August 1, 2012 Obrigado por compartilhar! Até agora não sabia o que era endereço MAC :D Share this post Link to post Share on other sites
Salviano da Silva Santos 0 Report post Posted August 19, 2017 Obrigado amigo,precisava muito dessa ferramenta Share this post Link to post Share on other sites