BBS Messages

Intro
Ailanthus Tree: Login | Users | Commands | Messages | Chat | Hang
Magpie BBS: Messages | Users | Commands
Misc BBSes: Aerogram | Bonsai Tree | Mofo | NYCENET | Riverdale | Misc Messages
ASCII Art: Nude | Jane | Femme | Spock | Kirk | Nixon
Game Docs: Archon II | Breakdance | Bruce Lee | Cutthroats | Dallas Quest | Deadline | Flight Sim 2
Hitchhikers Guide | Incredible Hulk | Infidel | Kennedy Approach | Mask of the Sun | M.U.L.E.
Pastfinder | Pinball Construction Set | Raid on Bungeling Bay | Raid over Moscow | Rescue on Fractalus
Seven Cities of Gold | Sonar Search | Spy vs Spy | Whistler's Brother
Util Docs: Blitz Compiler | Designer's Pencil | Easy Script | Kwik-Write | Micromon
Movie Maker | Paperclip | Perspectives | Wordpro 3 Plus/64 | Wolfenstein
Philes: 1541 Alignment | 976 Numbers | Mainframes | Sysops' Bible
Drugs | Knock-Out Drops | Lock Picking | Radar Jamming | Thermite


Mofo Ex Machina

These two files have an interesting history. The first few times I called Mofo Ex Machina (Penn and Teller's BBS), I noticed a glaring security hole that let anybody easily gain access to the entire machine. I think it was as simple as hitting Ctrl-C, at which point the program ended and dumped you into the OS, but the modem didn't disconnect. From there you could do just about anything, since these were usually running on single-user machines where the operator had full access. (Several other early BBS systems suffered from this same weakness.) As you can see, it was pretty easy to get the full list of users and their passwords, as well as access to some of the BBS's source code. I've redacted the passwords to spare these individuals more embarrassment.


L


      Name            Password         First on:   Last on     Point
   1: 
   2: PENN            [redacted]       1/11/88 :   1/11/88         0
   3: TELLER          [redacted]       1/11/88 :   1/11/88         0
   4: MOFO            [redacted]       1/11/88 :   1/15/88        58
   5: MARC-GARLAND    [redacted]       1/11/88 :   1/15/88        31
   6: EDDIE-G         [redacted]       1/11/88 :   1/15/88        51
   7: CAMMIE          [redacted]       1/11/88 :   1/11/88         0
   8: COLIN           [redacted]       1/11/88 :   1/11/88         0
   9: JESSE           [redacted]       1/11/88 :   1/11/88         0
  10: ASK-JESS        [redacted]       1/11/88 :   1/11/88         0
  11: CINDY-VALK      [redacted]       1/11/88 :   1/11/88         0
  12: CHRIS-CANDREVA  [redacted]       1/13/88 :   1/13/88         0
  13: JIMI            [redacted]       1/13/88 :   1/13/88         0
  14: JOHN-LASKOW     [redacted]       1/13/88 :   1/13/88         0
  15: ROLAND-THOMAS   [redacted]       1/13/88 :   1/13/88         0
  16: JTC             [redacted]       1/13/88 :   1/13/88         0
    -- more
[N]ext, [A]dd, [K]ill, [P]ack, [Q]uit, [T]op, [L]ist, [F]ileMake

 [A,F,K,L,N,P,Q,T, ] --> N


      Name            Password         First on:   Last on     Point
  17: ROLLING-FLOYD   [redacted]       1/13/88 :   1/13/88         0
  18: JONATHAN-TELLER [redacted]       1/14/88 :   1/15/88         0
  19: RICH-ROSEN      [redacted]       1/14/88 :   1/14/88         0
  20: WE-ARE-ALL-RICH [redacted]       1/14/88 :   1/14/88         0
  21: EVE-POLLACK     [redacted]       1/14/88 :   1/14/88         0
  22: CRAIG-MILLER    [redacted]       1/14/88 :   1/14/88         0
  23: JOHN-EDDY       [redacted]       1/14/88 :   1/14/88         0
  24: TOM             [redacted]       1/14/88 :   1/14/88         0
  25: CORRRIGAN       [redacted]       1/14/88 :   1/14/88         0
  26: LARRY-ZUCKERBER [redacted]       1/14/88 :   1/14/88         0
  27: ROSEMARY-SUTTON [redacted]       1/14/88 :   1/15/88        34
  28: JOHN-SOLTESZ    [redacted]       1/14/88 :   1/14/88         0
  29: JONATHAN-GLEICH [redacted]       1/14/88 :   1/14/88         0
  30: -               [redacted]       1/14/88 :   1/14/88         0
  31: M.L.-WEITZMAN   [redacted]       1/14/88 :   1/14/88         0
  32: PEGGY           [redacted]       1/14/88 :   1/14/88         0
    -- more
[N]ext, [A]dd, [K]ill, [P]ack, [Q]uit, [T]op, [L]ist, [F]ileMake

 [A,F,K,L,N,P,Q,T, ] --> N


      Name            Password         First on:   Last on     Point
  33: LOOKIN          [redacted]       1/14/88 :   1/14/88         0
  34: GREG-GERSHOWITZ [redacted]       1/14/88 :   1/14/88        12
  35: LED             [redacted]       1/14/88 :   1/14/88         0
  36: BARNZ           [redacted]       1/14/88 :   1/14/88         0
  37: JIM             [redacted]       1/14/88 :   1/14/88         0
  38: MARK-POLLACK    [redacted]       1/15/88 :   1/15/88         0
  39: PAUL-POLOW      [redacted]       1/15/88 :   1/15/88         0
  40: FRANK-DEFALCO   [redacted]       1/15/88 :   1/15/88         0
  41: HERB            [redacted]       1/15/88 :   1/15/88         0
  42: DENNIS          [redacted]       1/15/88 :   1/15/88         0
  43: JOHN            [redacted]       1/15/88 :   1/15/88         0
  44: CHARLES         [redacted]       1/15/88 :   1/15/88         0
  45: DAVID-KATZENBER [redacted]       1/15/88 :   1/15/88        31
  46: JIM-HOWARD      [redacted]       1/15/88 :   1/15/88         0
  47: MICHAEL-BKKKKKP [redacted]       1/15/88 :   1/15/88         0
  48: CORRIGAN        [redacted]       1/15/88 :   1/15/88         0
    -- more
[N]ext, [A]dd, [K]ill, [P]ack, [Q]uit, [T]op, [L]ist, [F]ileMake

 [A,F,K,L,N,P,Q,T, ] --> N


      Name            Password         First on:   Last on     Point
  49: HARRY-GEIST     [redacted]       1/15/88 :   1/15/88         0
  50: DTANIRR         [redacted]       1/15/88 :   1/15/88         0
  51: DARKLORD        [redacted]       1/15/88 :   1/15/88         0
  52: #1              [redacted]       1/15/88 :   1/15/88         0
  53: RR              [redacted]       1/15/88 :   1/15/88         0
  54: JOSH-GITELSON   [redacted]       1/15/88 :   1/15/88         0
  55: ALEX-ROSEN      [redacted]       1/15/88 :   1/15/88         0
  56: KB              [redacted]       1/16/88 :   1/16/88         0
  57: MICHAEL         [redacted]       1/16/88 :   1/16/88        28

[A]dd, [K]ill, [P]ack, [Q]uit, [T]op, [L]ist, [F]ileMake

 [A,F,K,L,P,Q,T, ] --> 


{ The Bulletin Board Program } { For the PR BBS, Penn & Teller Style } { started August 5, 1987 } { Colin Summers, natch } {$P512} {$C-} program Mofo; const ver = '1.0'; mExt = '.MNU'; { extension for Menu files } iExt = '.INF'; { extension for email files } coolName = 'c:\mofo\cool.mnu'; mainName = 'c:\mofo\main.mnu'; coldName = 'c:\mofo\cold'; eName = 'c:\mofomail.mnu'; formatChar = ']'; fileChar = '|'; emailChar = '='; commentChar = '{'; stopKey = ' '; skipKey = 'X'; standardTime = 15; delayTime = 250; maxOptions = 10; margin = 80; pagelength = 21; type maxLine = string[255]; screenLine = string[80]; scream = file of screenLine; natural = 0..MaxInt; timeRec = record Hours,Minutes,Seconds,Hundredths : byte; end; dateRec = record Year,Month,Date,Day : byte; end; { used by inLine routines } var logon: timeRec; stoppable, skippable, skipit, done: boolean; {$I MOFO.LBR} {$I MOFO.SHW} {$I MOFO.EM} {$I MOFO.DSP} {$I MOFO.LST} begin done := false; GetTime (logon); if paramCount=0 then DisplayFile (coldName); repeat DisplayFile (mainName); case option (3) of 0: done := true; { Quit } 1: processFile (coolName); { CoolInfo } 2: processFile (eName); { EMail } 3: SuckInfo; { Mailing List } end until done end. { Mofo } (C:\TURBO) Mofo Machine:type disp.pas { This program should search down the tree structure } { of the MOFO BBS and display all the files } { August 12, 1987 : Guess Who } program DisplayAll; const coolName = 'c:\mofo\cool.mnu'; maxOptions = 15; type maxLine = string[255]; natural = 0..Maxint; procedure Strip (var s: maxLine); begin while ((length(s)>0) and (s[1]=' ')) do delete (s,1,1); while ((length(s)>0) and (s[length(s)]=' ')) do delete (s,length(s),1) end; { Strip } procedure Caps (var s: maxLine); var i: natural; begin for i := 1 to ord(s[0]) do s[i] := upCase (s[i]) end; { Caps } procedure ProcessFile (current,called: maxLine); var disp: text; temp: maxLine; other: array[1..MaxOptions] of maxLine; count: natural; begin count := 0; writeln (lst); writeln (lst); writeln (lst,'File: ',current,' called by ',called); writeln (lst); Caps (current); Strip (current); assign (disp,current); {$I-} reset (disp); {$I+} if IOResult<>0 then begin writeln (lst,'Couldn''t open: ',current); Halt end; repeat readln (disp,temp); if pos ('|',temp)>0 then begin count := count + 1; other[count] := copy (temp,pos('|',temp)+1,MaxInt) end; writeln (lst,temp) until EOF(disp); close (disp); write (lst,#12); while count>0 do begin ProcessFile (other[count],current); count := count - 1 end end; { ProcessFile } begin ProcessFile (coolName,'Main program') end. { DisplayAll } (C:\TURBO) Mofo Machine:type legend.pas program legend; const taleFile = 'c: emote\legend.the'; most = 40; margin = 75; short = 29; del = #8#32#8; tab = ' '; cr = #13#10; type natural = 0..maxInt; shortLine = string[short]; maxLine = string[255]; lineRec = record who: shortLine; sent: maxLine end; var total: natural; line: array[1..most] of lineRec; tale: file of lineRec; fini: boolean; procedure readFile; {C-} begin total := 0; assign(tale,taleFile); {$I-} reset(tale); {$I+} if IOResult = 0 then begin while not EOF(tale) do begin total := total + 1; read(tale,line[total]); end; {while} close(tale); erase(tale) end {if} end; {readFile} procedure writeFile; var i: natural; c: char; begin rewrite(tale); for i := 1 to total do write(tale,line[i]); close(tale) end; {writefile} procedure checkDone; begin if total >= most then begin writeln; writeln; writeln('Sorry. The tale is told. Go read it.'); writeFile; halt end end; {checkDone} function lineIn: shortLine; const marg = short; var temp: shortLine; c: char; begin temp := ''; repeat read(kbd,c); if (c = #8) and (length(temp) > 0) then begin delete(temp,length(temp),1); write(del) end; if c in [#32..#126] then begin write(c); temp := temp + c end until (c = #13) or (length(temp) >= marg); lineIn := temp; writeln end; {lineIn} procedure checkAuthor; var i: natural; name: shortLine; begin write('What''s your name, Babe? '); name := lineIn; for i := 1 to length(name) do name[i] := upCase(name[i]); if total > 0 then if name = line[total].who then begin writeln; writeln; writeln('Give someone else a chance. Blabbermouth.'); writeFile; halt end; {if name} line[total + 1].who := name end; {checkAuthor} procedure checkClose; var i,close: natural; begin close := most - 7; writeln; writeln; if total = most - 1 then begin write(#7); writeln('This is the clincher!') end; if total > close then begin write('Wrap it up'); for i := 1 to total - close do write('!'); writeln end {if} end; {checkClose} procedure wipe(n: natural); var i: natural; begin for i := 1 to n do write(del); end; {wipe} procedure wordWrap(n: natural); var k: natural; space: boolean; wrap: shortLine; begin space := false; wrap := ''; k := n + 1; with line[total] do repeat k := k - 1; if (k = 0) or (sent[k] = ' ') or (sent[k] = '-') then begin space := true; wrap := copy(sent,k + 1,n - k); wipe(n - k); writeln; write(wrap) end until space end; {wordWrap} procedure showLine; var i: natural; begin writeln; if total > 0 then with line[total] do begin for i := 1 to length(sent) do begin write(sent[i]); if whereX - 1 >= margin then wordWrap(i) end; {for} write(' ') end {if-total} else writeln('The Legend begins...') end; {showLine} procedure readLine; var c: char; k: natural; done: boolean; begin total := total + 1; with line[total] do begin done := false; sent := ''; repeat read(kbd,c); case c of #8: if (length(sent) > 0) and (whereX > 1) then begin write(del); delete(sent,length(sent),1) end; #9: if length(sent) < 250 then begin write(tab); sent := sent + tab end; #13: if length(sent) < 255 then begin write(cr); sent := sent + cr end; #32..#126: if length(sent) < 255 then begin write(c); sent := sent + c end end; {case} if whereX >= margin then wordWrap(length(sent)); done := (c in ['!','?','.']) or (length(sent) = 255) until done; fini := true; if length(sent) < 3 then begin writeln; writeln; write('C''mon, what is this? Type in a REAL sentence!'); total := total - 1; fini := false end; if (length(sent) = 255) and not (c in ['!','?','.']) then begin writeln; writeln; writeln('Yo! No more than 255 characters, okay? Start again,'); writeln('and this time, get to the point.'); total := total - 1; fini := false end; writeln end {with} end; {readLine} begin {legend} readFile; checkDone; checkAuthor; checkClose; repeat showLine; readLine until fini; writeFile end. {legend} (C:\TURBO) Mofo Machine:

Intro
Ailanthus Tree: Login | Users | Commands | Messages | Chat | Hang
Magpie BBS: Messages | Users | Commands
Misc BBSes: Aerogram | Bonsai Tree | Mofo | NYCENET | Riverdale | Misc Messages
ASCII Art: Nude | Jane | Femme | Spock | Kirk | Nixon
Game Docs: Archon II | Breakdance | Bruce Lee | Cutthroats | Dallas Quest | Deadline | Flight Sim 2
Hitchhikers Guide | Incredible Hulk | Infidel | Kennedy Approach | Mask of the Sun | M.U.L.E.
Pastfinder | Pinball Construction Set | Raid on Bungeling Bay | Raid over Moscow | Rescue on Fractalus
Seven Cities of Gold | Sonar Search | Spy vs Spy | Whistler's Brother
Util Docs: Blitz Compiler | Designer's Pencil | Easy Script | Kwik-Write | Micromon
Movie Maker | Paperclip | Perspectives | Wordpro 3 Plus/64 | Wolfenstein
Philes: 1541 Alignment | 976 Numbers | Mainframes | Sysops' Bible
Drugs | Knock-Out Drops | Lock Picking | Radar Jamming | Thermite


Return to Kim Moser's Generic Home Page.
Copyright © 2017 by Kim Moser (email)
Last modified: Mon 26 February 2007 03:11:21