1000 ! SETPAS - This program allows a group manager [nnn,0] to change any & ! passwords or account names in his or her group. & ! & ! Protect <232> & ! & ! 2-Feb-87 F. Mitchell Erskine College & ! & ! 9-Feb-87 last edit *M & ! & ! Author: W. Franklin Mitchell, Jr. & ! Director of Computer Services & ! Erskine College, Due West, South Carolina & ! & ! Copyright (c) 1987 & ! Erskine College, Due West, South Carolina & ! & ! *********************************************************************** & ! * This software is furnished without charge by Erskine College and * & ! * may be copied only with the inclusion of the author's name and * & ! * copyright notice. No title to or ownership of this software is * & ! * hereby transmitted. Neither Erskine College nor the author assumes * & ! * any responsibility for the use or reliability of this software. The * & ! * author welcomes comments and/or bug reports mailed to Franklin * & ! * Mitchell, Erskine College, Box 86L, Due West, South Carolina 29639. * & ! *********************************************************************** & 1010 DIM M%(30) & \ ON ERROR GOTO 19000 & \ MISS% = 0% & \ VT52% = 3% & \ VT100% = 6% & \ VT220% = 18% & \ ESC$ = CHR$(155%) & \ M%(X%) = 0% FOR X% = 0% TO 30% & \ M%(0%) = 30% & \ M%(1%) = 6% & \ M%(2%) = 16% & \ M%(3%) = 1% & \ M%(4%) = 255% & \ CHANGE M% TO M$ & \ CHANGE SYS(M$) TO M% & \ KB.TYPE% = M%(5%) & \ IF KB.TYPE% = VT52% & THEN & CLEAR$ = ESC$ + "H" + ESC$ + "J" & ELSE & IF (KB.TYPE% = VT100%) OR (KB.TYPE% = VT220%) & THEN & CLEAR$ = ESC$ + "[H" + ESC$ + "[J" & ELSE & CLEAR$ = "" & 1020 PRINT CLEAR$ & \ PRINT "SETPAS V1.0 "; TIME$(0%); " "; DATE$(0%) & \ M%(X%) = 0% FOR X% = 0% TO 30% & \ M%(0%) = 30% & \ M%(1%) = 6% & \ M%(2%) = 26% & \ CHANGE M% TO M$ & \ CHANGE SYS(M$) TO M% & \ P% = M%(22%) & \ PN% = M%(21%) & \ GOTO 32000 IF PN% <> 0% & 1030 PRINT & \ PRINT "Your current ["; NUM1$(P%); ","; NUM1$(PN%); "] password"; & \ V$ = SYS(CHR$(3%)) & \ INPUT LINE PW$ & \ PW$ = CVT$$(PW$, 37%) & \ V$ = SYS(CHR$(2%)) & 1040 M%(X%) = 0% FOR X% = 0% TO 30% & \ M%(0%) = 30% & \ M%(1%) = 6% & \ M%(2%) = 4% & \ M%(4%) = 1% + 2% & \ M%(6% + X%) = ASCII(MID(PW$, X%, 1%)) FOR X% = 1% TO LEN(PW$) & \ M%(23%) = ASCII("D") & \ M%(24%) = ASCII("U") & \ M%(26%) = -1% & \ CHANGE M% TO M$ & 1060 V$ = SYS(M$) & 1080 PRINT CLEAR$ & \ PRINT 'A "#" in the password default will be replaced by the '; & \ PRINT 'second number of' & \ PRINT 'each account spec (i.e., "#" wil be replaced by "8" for '; & \ PRINT 'account [123,8]).' & \ PRINT & \ PRINT "New password default "; & \ INPUT LINE PW.DEFAULT$ & \ PW.DEFAULT$ = CVT$$(PW.DEFAULT$, 37%) & \ PW.DEFAULT$ = "ERSKINE#" IF LEN(PW.DEFAULT$) = 0% & \ X% = LEN(PW.DEFAULT$) & \ PW.DEFAULT$ = PW.DEFAULT$ + LEFT("ABCDEF", 6% - X%) IF X% < 6% & 1200 ACC% = -1% & \ PRINT CLEAR$ & \ PRINT "New passwords must be from SIX to FOURTEEN characters in the "; & \ PRINT "set A-Z, 0-9," & \ PRINT "as well as !@#$%^&*()_+-=[]{};:'"; & \ PRINT '"\/|,.`~<> and SPACE but not "?".' & \ PRINT & \ PRINT "Type Control/C to exit." & 2000 ACC% = ACC% + 1% & 2010 E% = 0% & \ PRINT & \ PRINT "Set password/name for account ["; NUM1$(P%); ",?] <"; & \ PRINT NUM1$(ACC%); ">"; & \ INPUT LINE ACC$ & \ ACC$ = CVT$$(ACC$, -1%) & \ ACC$ = NUM1$(ACC%) IF LEN(ACC$) = 0% & \ IF INSTR(1%, ACC$, "(") + INSTR(1%, ACC$, ",") <> 0% & THEN & PRINT & \ PRINT 'Just enter the second number of the account '; & \ PRINT '-- no "[", "(", or ",". Try again:' & \ GOTO 2010 & 2020 ACC% = VAL(ACC$) & \ GOTO 2040 & 2030 PRINT " Try again:" & 2040 NEW.PW$ = PW.DEFAULT$ + "" & 2044 X% = INSTR(1%, NEW.PW$, "#") & \ GOTO 2050 IF X% = 0% & \ NEW.PW$ = LEFT(NEW.PW$, X%-1%) + NUM1$(ACC%) + RIGHT(NEW.PW$, X%+1%) & \ GOTO 2044 & 2050 NEW.PW$ = LEFT(NEW.PW$, 14%) & \ PRINT & \ PRINT "New password for ["; NUM1$(P%); ","; NUM1$(ACC%); & \ PRINT "] (X = No change) <"; NEW.PW$; ">"; & \ INPUT LINE PW$ & \ PW$ = CVT$$(PW$, 37%) & \ GOTO 2200 IF PW$ = "X" & \ PW$ = NEW.PW$ IF LEN(PW$) = 0% & \ GOTO 20200 IF LEN(PW$) < 6% & \ GOTO 20300 IF INSTR(1%, PW$, "?") <> 0% & \ GOTO 20400 IF LEN(PW$) > 14% & 2100 M%(X%) = 0% FOR X% = 0% TO 30% & \ M%(0%) = 30% & \ M%(1%) = 6% & \ M%(2%) = 8% & \ M%(5%) = ACC% & \ M%(6%) = P% & \ M%(6% + X%) = ASCII(MID(PW$, X%, 1%)) FOR X% = 1% TO LEN(PW$) & \ M%(23%) = ASCII("D") & \ M%(24%) = ASCII("U") & \ M%(26%) = -1% & \ M%(27%) = 255% & \ CHANGE M% TO M$ & 2110 V$ = SYS(M$) & 2200 M%(X%) = 0% FOR X% = 0% TO 30% & \ M%(0%) = 30% & \ M%(1%) = 6% & \ M%(2%) = -25% & \ M%(3%) = -1% & \ M%(4%) = 5% & \ M%(5%) = ACC% & \ M%(6%) = P% & \ M%(23%) = ASCII("D") & \ M%(24%) = ASCII("U") & \ M%(26%) = -1% & \ CHANGE M% TO M$ & 2210 V$ = SYS(M$) & \ NM$ = CVT$$(MID(V$, 8%, 13%), 140%) & \ PRINT & \ PRINT "Account ["; NUM1$(P%); ","; NUM1$(ACC%); "]'s name <"; & \ PRINT NM$; ">"; & \ INPUT LINE AN$ & \ AN$ = CVT$$(AN$, 140%) & \ GOTO 2400 IF LEN(AN$) = 0% & \ IF LEN(AN$) > 13% & THEN & AN$ = LEFT(AN$, 13%) & \ PRINT & \ PRINT "%Name truncated to 13 characters: "; AN$ & 2220 M%(X%) = 0% FOR X% = 0% TO 30% & \ M%(0%) = 30% & \ M%(1%) = 6% & \ M%(2%) = -25% & \ M%(3%) = -2% & \ M%(4%) = 5% & \ M%(5%) = ACC% & \ M%(6%) = P% & \ M%(7%) = M%(4%) & \ M%(7% + X%) = ASCII(MID(AN$, X%, 1%)) FOR X% = 1% TO LEN(AN$) & \ M%(23%) = ASCII("D") & \ M%(24%) = ASCII("U") & \ M%(26%) = -1% & \ CHANGE M% TO M$ & 2230 V$ = SYS(M$) & 2400 GOTO 2000 & 19000 V$ = SYS(CHR$(2%)) & \ E% = ERR & \ RESUME 20100 IF (ERR = 2%) AND (ERL = 1060%) & \ RESUME 20150 IF ERL = 2020% & \ RESUME 20200 IF (ERR = 2%) AND (ERL = 2110%) & \ RESUME 20500 IF (ERR = 5%) AND ((ERL = 2110%) OR (ERL = 2210%)) & \ RESUME 32700 IF (ERR = 11%) OR (ERR = 28%) & 19100 PRINT & \ PRINT "?Unexpected SETPAS error: "; ERR & \ PRINT & \ ON ERROR GOTO 0 & 20100 PRINT & \ PRINT & \ PRINT "?Incorrect password... "; & \ MISS% = MISS% + 1% & \ SLEEP 3% FOR X% = 1% TO MISS% & \ GOTO 20110 IF MISS% >= 3% & \ PRINT "Try again:" & \ GOTO 1030 & 20110 PRINT "Access denied." & \ GOTO 32700 & 20150 PRINT & \ PRINT "?Illegal project number!"; & \ GOTO 2030 & 20200 PRINT & \ PRINT "?Passwords must be at least SIX characters long!"; & \ GOTO 2030 IF E% <> 2% & \ PRINT & \ PRINT & 20300 PRINT & \ PRINT "?Passwords cannot contain any QUESTION MARKS!"; & \ GOTO 2030 & 20400 PRINT & \ PRINT "?Passwords cannot be more than 14 characters long!"; & \ GOTO 2030 & 20500 PRINT & \ PRINT "?No ["; NUM1$(P%); ","; NUM1$(ACC%); "] account found." & \ GOTO 2000 & 32000 PRINT & \ PRINT "??Wizzard privilege required." & 32700 PRINT & 32767 END