Hallöle, ich dachte mein 200 Post darf etwas besonderes sein (also ein Script) Ich habe den Mac Changer vor ner halben Ewigkeit mal mit DjDominik zusammen gemacht, und hoffe, das er ihn nicht schonmal hier gezeigt hat^^
Funktion: wie schon der Name sagt, kann er die MAC-Adresse ändern und hat eine Recovery Funktion
Spoiler anzeigen
;~ Copyright: Jonathan Möwe
#RequireAdmin
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=D:\ICQ-Work\funfun\Gui.kxf
$Gui = GUICreate("MacCHANGE", 297, 176, 192, 124)
GUICtrlCreateGroup("MAC-Adresse Ändern", 8, 72, 281, 57)
GUICtrlCreateLabel("Neue Adresse (zB.) :", 16, 96, 101, 17)
$NewMACBox = GUICtrlCreateInput("", 120, 96, 161, 21)
GUICtrlSetLimit(-1, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Deine MAC", 8, 8, 281, 57)
$MacBox = GUICtrlCreateInput("", 54, 29, 225, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
GUICtrlCreateLabel("MAC :", 16, 32, 33, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ChangeButton = GUICtrlCreateButton("MAC Ändern", 8, 136, 75, 25, $WS_GROUP)
$RecoverButton = GUICtrlCreateButton("Recover der MAC", 88, 136, 123, 25, $WS_GROUP)
$ExitButton = GUICtrlCreateButton("Beenden", 216, 136, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetData($MacBox, _GetMacFromIP(@IPAddress1))
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ChangeButton
$sMAC = GUICtrlRead($NewMACBox)
If StringLen($sMAC) < 17 Then
MsgBox(16, "MacChange", "MAC-Adresse muss mindestens 17 Zeichen haben.!")
ContinueLoop
EndIf
If StringInStr($sMAC, ":", 1, 5) = 0 Then
MsgBox(16, "MacChange", "MAC-Adresse muss mindestens 5 Doppelpunkte (:) Haben.!")
ContinueLoop
EndIf
_ChangeMAC($sMAC)
Case $ExitButton
Exit
Case $RecoverButton
[/autoit] [autoit][/autoit] [autoit]$sRecovermac = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\", "RECOVERMAC")
[/autoit] [autoit][/autoit] [autoit]ProgressOn("MacChange", "Adresse wird Wiederhergestellt!", "Bitte Warten")
Local $sBuffer = "000"
For $iSchritte = 0 To 10 Step 1
If $iSchritte = 10 Then $sBuffer = "00"
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\" & $sBuffer & $iSchritte, "NetworkAddress", "REG_SZ", $sRecovermac)
ProgressSet($iSchritte * 10)
Sleep(250)
Next
Sleep(500)
ProgressOff()
MsgBox(64, "MacChange", "Bitte PC Neustarten!")
Exit
EndSwitch
WEnd
Func _ChangeMAC($sNewMAC)
Local $sRealMAC = StringReplace($sNewMAC, ":", "")
Local $sBuffer = "000"
ProgressOn("MacChange", "Adresse wird Geflasht!", "Bitte Warten")
For $iSchritte = 0 To 10 Step 1
If $iSchritte = 10 Then $sBuffer = "00"
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\" & _
$sBuffer & $iSchritte, "NetworkAddress", "REG_SZ", $sRealMAC)
ProgressSet($iSchritte * 10)
Sleep(250)
Next
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\", "RECOVERMAC", "REG_SZ", $sRealMAC)
[/autoit] [autoit][/autoit] [autoit]Sleep(500)
ProgressOff()
MsgBox(64, "MacChange", "Bitte PC Neustarten!")
Exit
EndFunc ;==>_ChangeMAC
[/autoit] [autoit][/autoit] [autoit]Func _GetMACFromIP($sIP)
Local $MAC, $MACSize
Local $i, $s, $r, $iIP
$MAC = DllStructCreate("byte[6]")
$MACSize = DllStructCreate("int")
DllStructSetData($MACSize, 1, 6)
$r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
$iIP = $r[0]
$r = DllCall("iphlpapi.dll", "int", "SendARP", "int", $iIP, "int", 0, "ptr", DllStructGetPtr($MAC), "ptr", DllStructGetPtr($MACSize))
$s = ""
For $i = 0 To 5
If $i Then $s = $s & ":"
$s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2)
Next
Return $s
EndFunc ;==>_GetMACFromIP