Надёжно - никакихкакие способы хранения паролей есть еще? кроме как в скрипте
Т.е. выскакивает такое сообщение, когда вводишь неправильный пароль. Просто закрыть программу не получается...Sorry pall, wrong password. Try again
$superpass = 'qwerty'
While 1
$i = InputBox('Super script', 'Enter password', '', '*')
If StringCompare($i, $superpass) = 0 Then
MsgBox(0, '', 'ta da... password is right')
ExitLoop
Else
exit
EndIf
WEnd
$superpass = 'qwerty'
While 1
$i = InputBox('Super script', 'Enter password', '', '*')
If StringCompare($i, $superpass) = 0 Then
MsgBox(0, '', 'ta da... password is right')
ExitLoop
Else
MsgBox(0, '', 'Sorry pall, wrong password. Try again')
EndIf
WEnd
$superpass = 'qwerty'
While 1
$i = InputBox('Super script', 'Enter password', '', '*')
If @error OR $i = "" Then ExitLoop
If StringCompare($i, $superpass) = 0 Then
MsgBox(0, '', 'ta da... password is right')
ExitLoop
Else
MsgBox(0, '', 'Sorry pall, wrong password. Try again')
EndIf
WEnd
$superpass = 'qwerty'
While 1
$i = InputBox('Super script', 'Enter password', '', '*')
If @error OR $i = "" Then ExitLoop
Sleep(2000)
If StringCompare($i, $superpass) = 0 Then
MsgBox(0, '', 'ta da... password is right')
ExitLoop
EndIf
WEnd
Можно ещё ограничить юзера N-ым количеством ввода пароля...Прикол в том, что кроме всего вышеперечисленного есть еще перебор пароля.
Sleep (2000) вроде как должен уменьшить скорость перебора.
Тогда можно его вводить в заблуждение:не дать повода
исследователю вашей программы понять о не правильном вводе кода
$sPass = 'qwerty'
$iCounter = 0
$iInputsLimit = 5
While 1
$iCounter += 1
$sInput = InputBox('Supper script', 'Enter password', '', '*')
If @error Then Exit
If StringCompare($sInput, $sPass) = 0 Then
MsgBox(64, 'Accepted', 'ta da... password is right, you may continue using this software.')
ExitLoop
Else
$sMainMsg = 'Sorry pall, your keyboard is damaged, or it is a wrong password.\n\n'
$sTriesMsg = 'Try again.\n(Tries allowed: %i, Tries left: %i)'
$sLimitMsg = _
"That's it, you tried [%i] times to input password, it seems that you are trying to hack this software,\n" & _
"or you just having a really serious memory problem.\n\nTry again later."
If $iCounter = $iInputsLimit Then
$sMainMsg &= $sLimitMsg
Else
$sMainMsg &= $sTriesMsg
EndIf
MsgBox(16, 'Denied', StringFormat($sMainMsg, $iInputsLimit, $iInputsLimit - $iCounter))
If $iCounter = $iInputsLimit Then Exit
EndIf
WEnd
MsgBox(64, 'Software', 'The software works now!')
#include <string.au3>
;~ $sCryptedPass = _StringEncrypt(1, 'qwerty', 'qwerty')
$sCryptedPass = '9BA81FDF0B89502F8E2B599A'
$sPassInput = InputBox('Password', 'Enter your password (qwerty):', '', '*')
If @error Then Exit
If _StringEncrypt(0, $sCryptedPass, $sPassInput) = $sPassInput Then
Execute(_StringEncrypt(0, _
'E3DD1FA20B8B512F8F59599BA2BFDC054B10F068FDE104C0EE6' & _
'0BC5B63C52E214CD5891A3DF915F03BBB24439C92632BEF9178' & _
'484514F0D06D7AA2169B911BB8E2CF588470D2B7CA256DA4555' & _
'CECAAE8039CF1DF9CE5190B2997EFD6CDBF97A99B9C0D088A00' , _
$sPassInput))
Else
MsgBox(0, 'False', '"' & $sPassInput & '" is false.')
EndIf
А зачем, оно и без этого хорошо шифрует... я как то не задумывался над этой возможностью, т.е получается что для расшифровки пароля нужен сам пароль, а у нас его нет, значит можно смело хранить его в скрипте (по крайней мере уже не так просто получить его) :laugh:Можно использовать Call(), Assign(), Enum(), Execute() и шифровать их содержимое
Типа обфускации, например есть 10 пользовательских функций, а какая из них вызывается в зашифрованом Call() не видно, без пароля только угадывать.А зачем, оно и без этого хорошо шифрует...
Наверное будет, чем больше текста шифруется, тем сильнее. Надо пробовать.Garrett сказал(а):Вот только шифрование основной части скрипта… Не будет ли всё это дело "тормозить"?