BBS: Inland Empire Archive Date: 12-23-92 (17:51) Number: 334 From: MATT HART Refer#: NONE To: JIMMY BENEDETTO Recvd: NO Subj: Passwords! Conf: (2) Quik_Bas
JB> impossible!! The password is under 7 bytes, and uses only the 255 JB> ASCII codes. I was thinking of writing a Basic file which would Here's what I came up with. Compile with: C:\>bc tester; C:\>link tester,,,brun45; or whatever brun60, brt71enr run-time library you have It works by trying to un-zip it, then counting the number of files that are in the directory compared with how many started out - so unzipped files will increase the number of files in the directory. I tried it on a 2 character password protected file - and it worked perfectly. Start it with parameters indicating the search character range: C:\>tester 65/122 ^ ^ ^ Ending ASCII number Starting ASCII number Use it on a RAM drive or with a BIG cache to avoid a real slow run. ' TESTER.BAS Matt Hart '$STATIC DEFINT A-Z TYPE RegTypeX ax AS INTEGER bx AS INTEGER cx AS INTEGER dx AS INTEGER bp AS INTEGER si AS INTEGER di AS INTEGER flags AS INTEGER ds AS INTEGER es AS INTEGER END TYPE TYPE DTAType A AS STRING * 42 END TYPE C$ = COMMAND$ SEl = VAL(C$) EEl = VAL(MID$(C$,INSTR(C$,"/")+1)) CALL CountFiles("*.*",OrigCount) FOR i = SEl TO EEl Strg$ = CHR$(i) GOSUB Sheller FOR j = SEl TO EEl Strg$ = CHR$(i)+CHR$(j) GOSUB Sheller FOR k = SEl TO EEl Strg$ = CHR$(i)+CHR$(j)+CHR$(k) GOSUB Sheller FOR l = SEl TO EEl Strg$ = CHR$(i)+CHR$(j)+CHR$(k)+CHR$(l) GOSUB Sheller '... Continue to FOR o = SEl TO EEl... NEXT NEXT NEXT NEXT PRINT "Unsuccessful!!" END Sheller: ShellStrg$ = "PKUNZIP -S"+Strg$+" PASSFILE" PRINT "Trying -->";Strg$;"<--" SHELL ShellStrg$ CALL CountFiles("*.*",ThisTry) IF ThisTry > OrigCount THEN PRINT "Success! Password is" PRINT "-->";Strg$;"<--" FOR z = 1 TO LEN(Strg$) PRINT ASC(MID$(Strg$,z,1)) NEXT END ENDIF IF INKEY$ = CHR$(27) THEN PRINT "Halted" : END RETURN SUB CountFiles (Srch$,NumFiles) DIM DTA as DTAType NumFiles=0 CALL SrchFile (Srch$,File$,DTA,Ecode) DO UNTIL Ecode NumFiles=NumFiles+1 CALL SrchNext(File$,DTA,Ecode) LOOP NumFiles=NumFiles-1 END SUB SUB SrchFile (Srch$,File$,DTA as DTAType,Ecode) DIM InRegs as RegTypeX DIM OutRegs as RegTypeX DIM F as string * 64 InRegs.AX = &H1A00 InRegs.DS = VARSEG(DTA) InRegs.DX = VARPTR(DTA) CALL InterruptX (&H21, InRegs, OutRegs) F = Srch$+CHR$(0) InRegs.AX = &H4E00 InRegs.CX = 0 InRegs.DS = VARSEG(F) InRegs.DX = VARPTR(F) CALL InterruptX (&H21, InRegs, OutRegs) File$ = MID$( DTA.A,31 ) File$ = LEFT$(File$, INSTR(File$+CHR$(0),CHR$(0))-1) Ecode = OutRegs.AX END SUB SUB SrchNext (File$,DTA as DTAType,Ecode) DIM InRegs as RegTypeX DIM OutRegs as RegTypeX DIM F as string * 64 F = Srch$+CHR$(0) InRegs.AX = &H4F00 CALL InterruptX (&H21, InRegs, OutRegs) File$ = MID$( DTA.A, 31 ) File$ = LEFT$(File$, INSTR(File$+CHR$(0),CHR$(0))-1) Ecode = OutRegs.AX END SUB --- * Origin: Midnight Micro! V.32/REL (918)451-3306 (1:170/600)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET