DECLARE SUB Decode (t$)
DECLARE SUB Interp (t$, b!)
DECLARE SUB Upper (n$)
SCREEN 12
CLS
PRINT "QBasic cracking system."
LINE INPUT "Cracking filename>"; cfk$
2 OPEN cfk$ FOR INPUT AS #1
LINE INPUT #1, file$
CLS
PRINT "File:"; file$
10 LINE INPUT #1, a$
IF a$ = "---" THEN  ELSE PRINT a$: GOTO 10
33 INPUT "Choice"; ch$
Upper ch$
IF ch$ = "" THEN END
ch$ = ch$ + ":"
DO UNTIL b$ = ch$
IF EOF(1) THEN CLOSE #1: OPEN cfk$ FOR INPUT AS #1: PRINT "Invailid Choice!": GOTO 33
LINE INPUT #1, b$
LOOP
51 LINE INPUT #1, flip$
LINE INPUT #1, n$
flip = VAL(flip$)
IF LEFT$(n$, 1) = "<" THEN PRINT "Must be"; LEN(n$); "charectars long": INPUT "CHANGE TO "; n$: d = 23
IF LEFT$(n$, 1) = CHR$(34) THEN d = 1: n$ = RIGHT$(n$, LEN(n$) - 1)
IF d = 0 THEN Decode n$
OPEN file$ FOR BINARY AS #2
PUT #2, flip, n$
CLOSE 2
LINE INPUT #1, b$
IF UCASE$(b$) = "\" OR UCASE$(b$) = "/" THEN CLOSE 1: GOTO 2 ELSE GOTO 51
END
erre:
CLOSE #1
OPEN cfk$ FOR INPUT AS #1
RESUME NEXT

SUB Decode (t$)
tt = LEN(t$)
FOR q = 1 TO tt STEP 3
c$ = c$ + CHR$(VAL(MID$(t$, q, 3)))
NEXT q
t$ = c$
END SUB

SUB Interp (t$, b)
FOR qw = 1 TO LEN(t$)
IF MID$(t$, qw, 1) = " " AND MID$(t$, qw + 1, 1) = " " THEN c$ = c$ + " ": d = 0: qw = qw + 1: GOTO 112
IF MID$(t$, qw, 1) = " " AND NOT MID$(t$, qw + 1, 1) = " " THEN c$ = c$ + CHR$(b): d = 0: GOTO 112
IF d = 0 THEN c$ = c$ + MID$(t$, qw, 1)
d = 0
112 NEXT qw
t$ = c$
END SUB

SUB Upper (n$)
FOR qw = 1 TO LEN(n$)
IF ASC(MID$(n$, qw, 1)) > 96 AND ASC(MID$(n$, qw, 1)) < 123 THEN MID$(n$, qw, 1) = CHR$(ASC(MID$(n$, qw, 1)) - 32)
NEXT qw
END SUB

