Opa, corrigi, não tinha testado pq estava com pressa e fiz correndo, só não coloquei aspas no primeiro IF, o que causa um erro de falta de valores, já que até ali a variável "tentativas" é nula e não foi atribuída a ela o valor inicial de uma variável numérica (0). O código ficou um pouco menor do que o do Delmar, em termos de comando, em linhas ficou praticamente a mesma coisa, acho que com apenas uma linha de diferença, onde no código abaixo não é preciso declarar qualquer valor para a nossa variável "tentativas" ou "chances".
Fiz uma mudança também, onde ele incrementa antes da checagem, garantindo assim apenas 3 chances, onde no primeiro eu tinha colocado depois, o que garantia uma chance "extra" ao usuário.
- Código:
@echo off
setlocal enableextensions enabledelayedexpansion
title Abrir Programa com senha
call:Passw
echo.
ECHO - ESTE PROGRAMA ESTµ PROTEGIDO POR SENHA...
ECHO.
echo - FAVOR INFORMAR A SENHA PARA ABRIR O PROGRAMA:
ECHO.
:1
set /a tentativas+=1
%tmp%\pass 12345
set passa=%errorlevel%
if "%tentativas%"=="3" goto:limite
if %passa%==5 goto:sai
echo.
echo - SENHA INCORRETA. FAVOR TENTAR NOVAMANTE.
ECHO.
goto:1
:sai
echo.
pushd %ProgramFiles(x86)%\Ultra Iso
start UltraISO.exe
popd
echo.
echo - SENHA CORRETA. AGORA VOCÒ PODE DESFRUTAR DO PROGRAMA.
echo.
PING -n 4 127.0.0.1 >nul
PING -n 3 127.0.0.1 >nul
PING -n 2 127.0.0.1 >nul
PING -n 1 127.0.0.1 >nul
exit
:limite
cls
echo Limite de tentativas!
exit
:Passw
pushd "!temp!"
(
echo On Error Resume Next
echo Set ReBin = CreateObject^("Scripting.FileSystemObject"^).OpenTextFile^("Pass.exe", 2, True^)
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("4D5A40000100000002000000FFFF0000B8000000000000000A000000000000000E1FBA0E00B409CD21B8014CCD2157696E3332202E4558452E0D0A2440000000504500004C010200F2BEC45000160000F8010000E00007030B010238000A00000012000000020000BD6000000010000000200000000040000010000000020000040000000100000004000000000000000070000000020000C7AB000003000000000020000010000000001000001000000000000010000000000000000000000000600000C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("00000000000000000000000000000000000000000000000050600000100000000000000000000000000000000000000000000000000000002E4D5052455353310050000000100000000A000000020000000000000000000000000000E00000E02E4D5052455353326C0300000060000000040000000C0000000000000000000000000000E00000E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076322E3139",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("050033090000550089E583EC18895DF8008B550831DB8975FC008B0231F68B003D91010000C077433D8D0C0020B7E51B000000700C414082C00031C08944082404E88C1630881F2040C756084CA74243FF11D0BBFF009088BDC808005DF889EC5DC20400213D938440D7DB43C91041BB36DB6807D053E0022875E882B0801BF68974A8B848830BCD34F40FBD2E15EA4CBB1D10895C505438604F8788CE3BC002F8D1B21EE845B948F101C3244523E94F24B0DE000990FF00015383EC248D5DF86E100000010480CE93800F22EC04A4725C844F060000B8004040008D55F480E600B1D80000020450781091484582600B0C709044E003E8BCC4100A2101886B00",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("58A3104AB058412014C501D20F858B8A30C8A00F4E0702247AB1D80168138B4B30890C24E860AC74803583FAC0741B328B1D4A320CB0D8A02451135089144A83CE89003E8078008181CE780430480E1F83CE87121910088B15571090350004A12910890424E8228C025B01C3E86C4690E8C04182CEF40B1000E22D8B334210461100977E16171023B0D1C87B520FF13382500CA0020500FF15FC50D100FC14E000D9486BE2A3C8E0F3038B200D14AA9058DEF51F6ED14867E211081EF51FD4D593CE9830F021F741700A80AB171083C00F04108C4E100C004E905804BF58042F81CE7C9010C04660037D000802750D8B450C8300C0048B0080382F7441082410",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("4027B09E5229A1051301C0BD0A60011016855EC60432B481CE6C114557100000C645FB01C745F4C02C42148845FB807DFB040D7502EB620E8050079031D8C70FE057D05851C4FF5F0D31E359EBF71260371A55013550C4FF600B00A053B45FC7D0581441FF0FC01600EBA68682003AD8472F29F4FF08809CB2EEB858449F3C8CF841970B12D313B14ED10864FB01B11845B0183008108C102008000004301298AF1372EA5D60F61510B33DCE717F3108A120FB13050885C97426DFC4FF810481381245D01844304A110385D275E9C9C39F721F050804A1A0191704F8FF74002985C089C374138944F61F43FF149D34B154A7645F0F003D510FC0352FB025B0D5",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("35BCD8400A033100C085C9EB0A408B1462851A410BF4EBBD93308D53BFBE09F2545267032DA136691D26611E25E6F200F93561EAFD21C1BFA6A170AA903CB0088044F01F9E685FA50B24641DE5530FB7C08323EC6487168D55A8F3086305891105FF15D48304BA1F81571083EC0C4B0007EB460100C94A780E807C2AA8044175F409CB1A90274F30B8C35377108AD0C59F903C9C4BB630A0AB4E1BE92307AAD105106902B8B008403A96C21F4780CBAD01BBE4A04C41C4045C2408EBD7C0F141DF7557565381ECCC9816B0D87007912880D0580640BFE5F5D5357C5C4482190400A1408CD0588780795CC4C911C745A0820C9158841B4A0403C72845A42A83AA",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("32BCA148A82AC2AA32B02A031CCA24AA22B41C431C0AC501890845C8A1540EC21C8A85E820D0A15C0E42FD700B52002601668945D8895A344F01D04F018721045B02854644CF090F853B6501EF003CB18F15FC351A8F020F84592A90C09F78BC8824B90F383030BF7A3C4400F125701C02703C84004E0104108A04940D703C80178B15449016318462010089431420A130DD1853188B1534841031C4110AE50389530820C74330C32A432C8B25153C34108A03253881220089433489F689D82140C8950B19C0242001C902044188842A4860A03492777E18925888A6016B211889856C145115915808674C113F1189857414711352688647113D21857C143114",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("03383A1444381487D858A81C9F2350C84F21F84F11FF75423157D245041E0D1AEC1D1A91513A00791980CEDE8A90389CD821D82ED13844300AE6200832A3800E51309488CF243900D889FA75B1EBB1E8620C9D0ADF845189E15B073D0000100000721081E922DF17870409002D1EB10E919E126C0189E089CC018B088B4004FFE0DF69108B45142104108B4510B00CC01089C000088B4508E50CF0B8D0C2010CD4B4C1820DB11EC9E10103B0FF25E49F00339090731200F15F52B2E1916A007CE091F47C0CC3C7F8AA7CCCC0C7F07C8CC1C72CAA3C4CC2C3283C0CC1C31CAB3C0CC2C3D8FDC0CC3C2C0410FD3CD96BC19381173CE7B3207C8A02E0DD43050090",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("A50B00C1121C4101700300B05424E55404C03423E342C6C606001044461644F7D6160400508497460725F70630563637076094E686484547657420E114D60650160430554657E5068016E646C656465604803756064797F6E6066094C64657260700106847116D73766372745D20035F6765746368580FC015006D61696E61726773803400F7F555E666970621F7E60633666D6F64406528305746F715064700F745970787036365807101005F696F62005F386F6E304308AC1226F6662047071046472510620660C6563787066006072097E6466706602607505606D016C6C6F606320680447369676E61406C55338B78040BFF500074358B50088B300300F0",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("2BF28BDE8B4810002BCB74238B500C0300F203FE2BC02BD20B00D0ACC1E207D0E87200F60BD00BD274080300DA290B3BF772E4E84604BE178055602E0E10F0100000641000C480350080A0005CF716BE0288D3045057B688C73380BF02006CB6784431803FC870FC833E440D155500E840EE34B0004CE7830E0608025669727475616C802505746563740050E840F474030245A546A0268077B588FD0F8D031000B0608807884728581050545054F03F8DB518E2DF2AB0103D03F8564520008BD8AC0AC0B000880846FF75F6244017CE13006247E064B59E101210D0EA646C000035D50682B12A03CC08845067BF0E718D4E4D045F81C7EE00FEFFFFB0E9AAB8",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("1E849204B01A96CE118560DCBF183B502246D48D61460100FF1F2F70EF845000A68A300006EB8E4000C95CC0EC0EF0FFA20E207061737320105B53654E47D0A500000000F22436A703120402340714206EC66F2070A0824500627704206573706100876F0A0008200800402ACE2DD5C2942474340430743523D35284D40220D332A5C4A4D47204408524D5D294E474048C058C703723F335870610265746064727D702E03397A65706D2D34304C2116F66288CF0550480F43585142455440490025032A75352A7A30062169626980420710165417286490102563277D21710E1E2F282006763630C0230F6E6669676F692A6308363F35209D05209D3829809E0",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("3206E0ADA42028618C28C002328700DD307329032920213D20300632FFFFEA00F0FF9A107550D234C0D0004CC1C4283CF0CFF02E00FFBFC00000000000000000FF25D850400090900000000000000000FF25CC50400090900000000000000000FF25D450400090900000000000000000FF25D050400090900000000000000000FF25C8504000909000000000000000005589E55DE97C02000090909090909090FFFFFFFF9019400000000000FFFFFFFF00000000143700004B45524E454C33322E646C6C0041646441746F6D41004578697450726F636573730046696E6441746F6D410047657441746F6D4E616D654100536574556E68616E646C6564457863",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("5060000000000000000000009C600000506000005C6000000000000000000000A96000005C60000000000000000000000000000000000000000000000000000000000000000000000000000000000000786000008B60000000000000B460000000000000000000000000000000000000000000000000000000004765744D6F64756C6548616E646C654100000047657450726F6341646472657373004B45524E454C33322E444C4C006D73766372742E646C6C0000005F67657463680060E80000000058059F0200008B3003F02BC08BFE66ADC1E00C8BC850AD2BC803F18BC85751498A44390688043175F68BD68BCFE85C0000005E5A2BC0890432B4102BD0",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("2BC93BCA73268BD9AC4124FE3CE875F24383C104AD0BC078063BC273E5EB0603C378DF03C22BC38946FCEBD6E8000000005F81C78CFFFFFFB0E9AAB89B020000ABE80000000058051C020000E90C020000558BEC83EC148A025633F646397508894DF088018975F8C645FF000F86E30100005357807DFF008A0C32740C8A443201C0E904C0E0040AC8468365F400884DFE0FB645FF8B7D082BF83BF70F83A001000084C90F8917010000807DFF008B1C327403C1EB0481E3FFFF0F0046817DF8810800008BFB7320D1EFF6C301741481E7FF07000003F081C7810000008075FF01EB4B83E77FEB4583E303C1EF0283EB0074374B74274B74154B753281E7FFFF",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("03008D74300181C741440000EBCF81E7FF3F000081C74104000046EB1181E7FF03000003F083C741EBB383E73F47807DFF0074090FB71C32C1EB04EB0C33DB668B1C3281E3FF0F00000FB645FF8075FF0103F08BC383E00F83F80F74058D5803EB384681FBFF0F00007408C1EB0483C312EB27807DFF00740D8B0432C1E80425FFFF0000EB040FB70432468D98110100004681FB10010100745F8B45F82BC785DB74428B7DF003C7895DEC8B5DF88A08FF45F840FF4DEC880C1F75EF8A4DFEEB24807DFF000FB61C32740D0FB6443201C1EB04C1E0040BD88B7DF88B45F0FF45F8881C3846FF45F4D0E1837DF408884DFE0F8C9AFEFFFFEB4933C03845FF7413",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("8A4432FCC645FF0025FC000000C1E00546EB0C668B4432FB25C00F0000D1E083E17F03C88D44090885C074168B0C328B5DF88B7DF08345F80483C60448890C1F75EA0FB645FF8B4D082BC83BF10F8221FEFFFF5F5B8B45F85EC9C20400E964B7FFFF9EACFFFF000000004D730200000003010000000000000000000000000000000000002E62737300000000100000000400000003010400000000000000000000000000000000002E66696C650000003C000000FEFF000067017478746D6F64652E630000000000000000002E74657874000000900300000100000003010000000000000000000000000000000000002E646174610000001000000002000000",x,2^)^)^) : Next
echo For x = 1 To 511 Step 2 : ReBin.Write Chr^(Clng("&H" ^& Mid^("",x,2^)^)^) : Next
echo ReBin.Close
)>"%tmp%\pass.vbs"
CScript "%tmp%\pass.vbs" //nologo
Del "%tmp%\pass.vbs" 2>&1
popd
Exit/b
Delmar, bom código, mas você pode incrementar ou decrementar o valor de uma variável numérica inteira em batch usando os operadores "+=" e "-=", sem a necessidade de declarar qualquer valor anterior para elas, o prompt de comando assume como "0" automaticamente, se tratando de uma variável numérica, e então ele decrementa/incrementa o valor especificado. Isso evita que você tenha que colocar o nome da variável novamente, como "set /a var=%var% +1", ou algo do tipo.
Já corrigi o código no post anterior. Fica só a mérito de curiosidade, os dois tem praticamente o mesmo funcionamento e eficiência, a única diferença é a eficácia.