Telehack is a simulation of a stylized arpanet/usenet, circa 1985-1990.
    It is a full multi-user simulation, including 26,600+ simulated hosts
    from the early net, thousands of files from the era, a collection of
    adventure and IF games, a working BASIC interpreter with a library of
    programs to run, simulated historical users, and more.


On the web:

Telehack supports the telnet protocol on ports 23, 1337, 8080, and 31173.
Open a shell and type:


Telehack also supports the secure shell (SSH) protocol on port 2222:

    ssh -p 2222

HTTPS and SSH provide encryption, but telnet provides no encryption. After
creating a username, you can connect via SSH with your username instead of
guest. Also, you can optionally add a public key with the SET KEY command.


Non-sighted users: please type STTY /dumb after connecting to Telehack.
This will invoke plain terminal mode in the Z-code games and avoid using
ANSI cursor-addressing.

For users connecting with Teletypes or other Teleprinter Terminal setups
please type STTY /tty after connection to switch Telehack into a more Teletype
friendly mode.

About this Document

Telehack is case-insensitive.  Commands are often shown in uppercase to
distinguish them from surrounding text.  Note that you do not need to type
commands in all-caps.  For example:

    Type DIR for a list of files

You may type DIR or dir to obtain a list of files.

In help messages, <> signifies required arguments to commands, whereas
[] signifies optional arguments.  The pipe symbol | signifies "or" or an
alternative.  For example:

    send <user|port> [message]

means that a user or port must follow the send command, but that the
message argument is optional (send will prompt for messages lines if you
do not specify one on the command line).

    @ send forbin hello
    @ send 15 hello

    @ send forbin
    forbin> hello

Getting Help

You can type ? at any prompt to get a list of available commands:

    @ ?
    Command, one of the following:
      2048        ?           a2          ac          advent      aquarium
      basic       bf          c8          cal         calc        ching
      clear       clock       cowsay      date        ddate       echo
      eliza       factor      figlet      finger      fnord       geoip
      help        ipaddr      joke        login       mac         md5
      morse       newuser     notes       octopus     phoon       pig
      ping        pong        primes      privacy     qr          rain
      rand        rfc         rig         roll        rot13       sleep
      starwars    traceroute  typespeed   units       uptime      usenet
      users       uumap       uupath      uuplot      weather     when
      zc          zork        zrun

The HELP command provides one-line descriptions of command functions,
including any modifier arguments that may be available. Examples:

    @ help
    @ help telnet
    @ help ftp

Getting Unstuck

Any command may be terminated by typing ^C (control-C).  To log out of a
remote host or exit a subshell, type ^D (control-D), EXIT or QUIT.

Note: The Apple II interpreter requires typing ^C twice to exit.

Control Characters

A control key (CTRL) initiates a number of system functions when it is used
in conjunction with  another character.

To type a control character, hold down the control key, and at the same
time press the character you want.  For example:  to type a CTRL-C, hold
down the control key and  at  the  same  time  press the letter C.  In most
cases this prints (echoes) on your terminal as ^C.  In system documentation,
a control character such as control-C may also be described as CTRL-C or ^C.

Special control characters:

    ctrl-C         interrupt program
    ctrl-N         next line
    ctrl-P         previous line
    ctrl-R         quick relay (requires backgrounded relay)
    ctrl-T         print system status
    ctrl-W         delete word
    (up arrow)     previous line
    (next arrow)   next line
    (tab)          autocomplete next command/file/user/host

Quick Fun

Type STARWARS to view the pinnacle of ASCII-mation, a full-length rendition
of Star Wars in ASCII.

Typing JOKE will display a joke randomly selected from a massive unified
historical arpanet/caltech joke database.

Type Aquarium to watch an animated aquarium in ASCII art.

NLI Lobby

When you first connect to Telehack, you will be in the not-logged-in
lobby.  The NLI lobby is indicated by the '.' prompt:

    $ telnet Trying  Connected
    to  Escape character is '^]'.

    Connected to TELEHACK port 13

    It is 8:16 am on Saturday, April 30, 2011 in Mountain View, California, USA.
    There are 10 local users. There are 24139 hosts on the network.

      Type ? for a command list.
      Type HELP for a more detailed command listing.
      Press control-C to interrupt any command.

    May the command line live forever.

    Command, one of the following:
      2048        ?           a2          ac          advent      aquarium
      basic       bf          c8          cal         calc        ching
      clear       clock       cowsay      date        ddate       echo
      eliza       factor      figlet      finger      fnord       geoip
      help        ipaddr      joke        login       mac         md5
      morse       newuser     notes       octopus     phoon       pig
      ping        pong        primes      privacy     qr          rain
      rand        rfc         rig         roll        rot13       sleep
      starwars    traceroute  typespeed   units       uptime      usenet
      users       uumap       uupath      uuplot      weather     when
      zc          zork        zrun

A limited subset of commands are available in the lobby.

To login or create a new account, type LOGIN.

Pager Commands

When viewing any paginated output on Telehack, you may receive a --More--
prompt. This may be seen in the commands type, cat, more, less, as well as
any command which produces paginated output.

At the --More-- prompt, the following single-key commands may be typed:

    space   show next page
    b       back one page
    q       quit
    g       go to top
    G       go to bottom
    return  down one line
    j       down one line
    k       up one line
    ?       search up for a given string
    /       search down for a given string
    n       go to the next search match
    N       go to the previous search match

The pager also supports several pipes. These can be appended to commands that
produce paginated output:

    head -n <n>        only show the first <n> lines of output
    tail -n <n>        only show the last <n> lines of output
    uniq               strip repeated lines from output
    grep <pattern>     show lines matching pattern
    grep -c <pattern>  show number of lines matching
    grep -i <pattern>  case insensitive matching
    grep -v <pattern>  show lines NOT matching pattern
    sort [field]       sort output (field can be column header or number)
    sort -r [field]    reverse sorting
    wc -c              show number of characters
    wc -l              show number of lines (including header)
    wc -m              show maximum line length
    wc -w              show number of words
    cut -f <r>         extract fields in the range(s) <r>
    cut -c <r>         extract columns in the range(s) <r>
    cut -d <d>         specify field delimiter for extraction

For example:

    @users | grep New York, NY | sort username
    abcde758  Abcde758             1.1y  New York, NY
    achamian  Achamian             9.7y  New York, NY
    acidburn  hack the planet      51m   New York, NY
    alanpear  Alanpear             5.2y  New York, NY

    @finger | head -n 6
    TELEHACK SYSTEM STATUS  2023-Oct-20  21:44:47
    109 users  load 0.76  up 28d

     port username   status                last what      where
     ---- --------   ------                ---- ----      -----
     0    operator   System Operator       7m             console

    @dojo /list|cut -f1-2,5|head -n4
      challenge     verified
      ---------     --------
    * adler32       yes
    * anglesum      yes

    @cat cars
    alfa romeo:bentley:cadillac:daihatsu
    aston martin:bugatti:chevrolet:dodge

    @cat cars|cut -f 2 -d:

    @cat cars|cut -f 1-3 -d:
    alfa romeo:bentley:cadillac
    aston martin:bugatti:chevrolet

    @cat numbers

    @cat numbers|cut -c 1-5,2-9,5-7,8,15

Network Hosts

There are approximately 26,600 virtual hosts on the Telehack network.
These represent systems that were on the early Usenet/arpanet as well
as defunct BBS systems from the 80's and 90's.

Type HOSTS to see a partial list of network hosts.  Type HELP HOSTS for
more information on the hosts command.

A collection of retro files has been distributed across the hosts in the
network.  The files were sourced from the extensive archive assembled by
Jason Scott of as well as other sources.

Telnetting to Hosts

You may telnet to any host appearing in your netstat list:

    @ netstat
       host      organization                               location
       ----      ------------                               --------
       sunkist   Sun Microsystems Inc.                      Irvine, California
     ! mimsy     Computer Science Dept., Univ of Maryland   College Park, MD
       spgh01    Church of the Holy Sepulchre               Butler, PA
     * vitam6    Vitalink Communications                    Fremont, CA
       hell      Clinton Reilly Campaigns                   Alameda, CA
       accom     Axial Corp.                                Belmont, CA

    @ telnet mimsy
    Connected to MIMSY

    Computer Science Dept., University of Maryland, College Park
    DEC Vax-8600 4.3BSD

    login: guest

    Authentication successful.
    Last login: Thu May 5 16:32:51 2011

       WARNING:  You must have prior authorization to access this system.
                 All connections are logged and monitored. By connecting to
                 to this system you fully consent to all monitoring.
                 Unauthorized access or use will be prosecuted to the full
                 extent of the law.


If you have not yet hacked into a host, you can try to login as the guest
user.  The full set of commands on the host may not be available if you are
logged in as guest.

The * symbol in the netstat output denotes that you have a login account on
that host, and the ! symbol denotes that you have root there.  These symbols
also appear in the output of other commands, such as uuplot.

Dialing a host

You may connect to a host by using the DIAL command.

	@dial 3148372840
  dialing ATDT (314) 837-2840    CONNECT 9600

Connected to THEOASIS

Hacking a Host

    @ dir *.exe
      porthack.exe  wardial.exe
    @ porthack
    [run porthack.exe]
    host? mimsy
    probing MIMSY for open sockets...

Once a host has been successfully hacked, you should be able to log into it
using your Telehack username and password.

Note that hosts which have been hacked and which you can log in to with
your username/password are identified in the netstat list with a '*'.

Collecting and Moving Programs

DIR *.exe or ls *.exe. You will be able to transfer programs between hosts
using the FTP command. On each host, a dedicated part of the disk has been
made available to you, in which you can store these programs.

Be careful not to overfill it, check your disk usage with the DF command
before transferring a file.

Example of an FTP session:

is1$ ftp uunet
Connected to uunet.
220 uunet FTP server (Version 4.109 Wed Nov 19 21:52:18 CST 1986) ready.
Name (uunet:johndoe): johndoe
331 Password required for johndoe
Password: ********
230 User johndoe logged in
Remote system type is UNIX.
Using BIN mode to transfer files.
ftp> put porthack.exe
200 PORT command successful

Historical Users

The 26,600 virtual hosts within Telehack were real systems available via
modem dialup, fidonet, uucp/usenet, or on the arpanet in the 1980's and
90's.  Real people used these systems and could often be seen logged in
doing work, reading, socializing or playing games.

Data archaeology applied against the oldest available uucp archives, UUCP
network maps from the era, as well as other available electronic sources
has allowed Telehack to reconstruct the online occupants of these vanished
network hosts.

To see users logged into a Telehack host, use the FINGER @host command:

    @ finger @sgi
    Login      Name                Tty      Idle  Login Time   Office     Office Phone
    vjs        Vernon Schryver     pts/10   3h    Apr 29 06:34 (
    rpw3       Rob Warnock         pts/13   6h    Apr 25 10:31 (
    vic        Victor Mitnick      pts/6    1     Apr 28 23:33 (
    greg       Greg Chesson        pts/9    3     Apr 27 15:05 (
    davidf     David Fenstemaker   pts/8    2d    Apr 24 05:10 (
    cjohnson   Chris Johnson       pts/12   4h    Apr 29 12:21 (
    ian        Ian Clements        pts/4    6h    Apr 23 22:03 (
    baskett    Forest Baskett      pts/2    29    Apr 27 00:54 (
    pchin      Phil Chin           pts/7    2h    Apr 30 04:31 (
    root       Superuser           pts/3    1d    Apr 28 08:27 (
    artibee    Mary Artibee        pts/1    3h    Apr 23 09:19 (
    wen        Wen-ching Chow      pts/5    2d    Apr 29 04:36 (

    @ finger @chinet
    Login      Name                Tty      Idle  Login Time   Office     Office Phone
    schneier   Bruce Schneier      pts/20   3h    Apr 26 12:09 (
    randy      Randy Suess         pts/5    3h    Apr 27 17:37 (
    odesta     Odesta Corp.        pts/27   20    Apr 29 17:34 (
    ward       Ward Christensen    pts/0    7h    Apr 28 06:37 (
    saj        Stephen Jacobs      pts/8    1h    Apr 23 11:59 (

Guessing Passwords

Users in the past did not always choose strong passwords.  A common
hacking method was to try various common passwords such as "secret",
"love", "trustno1", etc. to find a way into a system.

As well, upon closer inspection of hosts, you might find
that you don't have to guess. . .

Z-Code Games

A collection of games written for the Z-Machine have been distributed
across the hosts in the Telehack network.  Z-Code games are identified by
the .GAM extension:

    @ ls *.gam
      advent.gam   lostpig.gam  zork.gam

    @ run advent.gam

    Welcome to Adventure

    At End Of Road
    You are standing at the end of a road before a small
    brick building. Around you is a forest. A small stream
    flows out of the building and down a gully.


    login and use the save command..

BASIC Interpreter

To enter the basic interpreter, type BASIC.

    @ basic
    Dartmouth DTSS TeleBASIC (c) 1964,1966,1969,1970,1971,1979

The basic interpreter subsystem has a number of historical programs
compiled from the SIMTEL archives as well as other sources. To see a full
list of available programs, type DIR within basic.  You can load a program
with LOAD or begin execution with RUN.

Basic commands are:

    > help
    delete                   delete a user program
    dir                      directory of basic programs
    help                     print this list
    list                     list the program in memory
    load <file>              load program from file
    quit                     exit the basic interpreter
    renumber [start[,inc]]   renumber the program in memory
    run                      run the program in memory
    run <program>            load and run the specified program file
    save <file>              save a user program

Example basic session:

    @ basic
    Dartmouth DTSS TeleBASIC (c) 1964,1966,1969,1970,1971,1979
    > ?
    Command, one of the following:
      delete  dir     help    list    load    quit    run     renumber
    > dir
      23matches.bas    3dplot.bas       aceyducey.bas    aceyducy.bas
      astrnmy2.bas     bar.bas          basketball.bas   basketbl.bas
      batnum.bas       baz.bas          bigcal2.bas      birthday.bas
      bobo.bas         bombsaway.bas    bombsawy.bas     boxing.bas
      budget.bas       bug.bas          bunny.bas        buzzword.bas
      calendar.bas     calendr5.bas     change.bas       chemist.bas
      chief.bas        combat.bas       command.bas      cpmprt51.bas
      craps.bas        cube.bas         deedyork.bas     delers.bas
      depthcharge.bas  depthchg.bas     diamond.bas      eddie.bas
      euphoria.bas     evenwin1.bas     evenwins.bas     fakephre.bas
      feesten.bas      finance.bas      godd.bas         gomoko.bas
      gunner.bas       hammurabi.bas    hamurabi.bas     hello.bas
      hi-lo.bas        hilo.bas         hurkle.bas       ic-timer.bas
      kalfeest.bas     kinema.bas       lander.bas       lem.bas
      letter.bas       life.bas         lifscore.bas     litquiz.bas
      loan2.bas        log10k.bas       lunar.bas        maptest.bas
      massa.bas        mathdice.bas     million.bas      nicoma.bas
      nicomachus.bas   nim.bas          number.bas       orbit.bas
      pirate.bas       pizza.bas        poetry.bas       qubit.bas
      queen.bas        rc5.bas          rocket.bas       rockscissor.bas
      rocksp.bas       rusrou.bas       satelite.bas     sceptre1.bas
      slalom.bas       slots.bas        snafufun.bas     sort.bas
      splat.bas        stars.bas        stock.bas        stockmarket.bas
      survival2.bas    target.bas       tem-ins.bas      test1.bas
      tictac1.bas      tictactoe1.bas   timer555.bas     trap.bas
      ttl-scrl.bas     ucase.bas        uitleg1.bas      uitleg2.bas
      unprotct.bas     war.bas          weekday.bas      windchil.bas
      xfertime.bas     xformer.bas      ykw1.bas         ykw2.bas
    > load hello.bas
    > list
        2  PRINT TAB(33); HELLO
        6  PRINT: PRINT: PRINT
       40  INPUT B$: PRINT
       50  IF B$= YES  THEN 70
       55  IF B$= NO  THEN 80
    > run



6502 System Monitor

To enter the system monitor, type:

    @ call -151
    1441102  96 14      STX      $14,X

Monitor commands are:

    d   dump memory
    l   disassemble cpu opcodes
    r   return to last jsr point
    g   execute address

The memory dump will show the octal address on the left column, the hex
values for the memory at that address, and an ASCII translation of the
memory values:

    2364636  60 01 2C 26 6C D1 68 C7 45 40 1A F9 39 66 23 21   `.,&l.h.E@..9f
    2364656  07 8D 39 0D 00 2C 1E F4 69 8D 64 07 19 10 00 35   ..9..,..i.d....5
    2364676  09 A1 2C 6E 2B B5 29 2E 65 D4 4F 01 04 3E 04 73   ..,n+.).e.O..>.s
    2364716  53 25 54 B9 14 E1 1D 9A 2B 19 60 13 51 20 52 E0   S%T.....+.`.Q R.
    2364736  4B 52 1E 2A 03 66 33 4A 47 C1 10 99 35 5E 00 54   KR.*.f3JG...5^.T
    2364756  32 26 4D 0A 03 34 70 D7 24 04 3C C8 40 21 09 CE   2&M..4p.$.<.@ ..
    2364776  2C 02 78 31 1A 60 51 6B 39 0E 1A 20 5D 58 56 93   ,.x1.`Qk9.. ]XV.
    2365016  61 45 C8 A5 BB AB 02 21 02 3A 01 08 AD A4 B2 01   aE..... .:......
    2365036  94 2B 00 52 61 84 A5 21 02 45 00 9D E0 1F 32 BF   .+.Ra.. .E....2.

To disassemble CPU instructions instead, use the l command:

    2366320  63         SUBD2
    2366321  04 25      TSB      $25
    2366323  64 9C      STZ      $9C
    2366325  2A         ROL
    2366326  31 04      AND      ($04),Y
    2366330  21 30      AND      ($30,X)
    2366332  31 09      AND      ($09),Y
    2366334  A3         MOVAB
    2366335  44         PUSHAW

If an entry point in the system monitor is known, you can execute it with
the g command:


To return to the Telehack command shell from the system monitor,
use the r command.

Remote Terminal Monitoring

The link command will connect a remote user's tty to your tty.  This will
let you assist the remote user by being able to view the remote output.

    @ link <user or port>

In this case, the other user would see something like

    %link from port 16 user forbin

And their session from that point would be mirrored on the linking
user's terminal.

There is also a separate facility within ptycon to allow simultaneous
monitoring of all connected ports.

Finger from Outside

Telehack also responds to finger requests from the outside Internet on port 79:

    $ finger
    TELEHACK SYSTEM STATUS  04-May-11  23:27:08
    4 users

      port  username   status               last  what     where
      ----  --------   ------               ----  ----     -----
      0     operator   System Operator      5m             console
      16    -                               3m    alice3   Lithuania
      17    forbin     Dr. Charles Forbin   13m            Provo, UT
      20    foo        Yoda Soda            19m   ptycon   Oakland, CA

    $ finger
    USER: forbin
       system level:          WIZARD
       account age:           95 days
       last login:            today
       system connects:       5
       commands executed:     143

       user status bits:
         HACK10      Hacked 10 network hosts          30-Jan-11  23:19:57
         HACK5       Hacked 5 network hosts           30-Jan-11  21:00:34
         HACKER      Hack the Planet                  29-Jan-11  22:31:48
         ACCT        Registered User                  29-Jan-11  22:23:17

Uploading and Downloading Files

Telehack supports the File Transfer Protocol (FTP) on port 21. Connect using a
FTP client and log in with your Telehack username and password. Note that only
passive mode (PASV) is supported.

Telehack also supports the Gopher protocol on port 70.

Usenet Archive

Type USENET to view the Usenet archive.

The archive was originally collected by Henry Spencer at the University of
Toronto beginning in 1981. Later it was rescued by David G. Wiseman from
the University of Western Ontario, who drove two hours in a pickup truck to
collect 141 magtapes and save them from destruction:

    If I recall correctly, the issue of Henry Spencer's (actually,
    the University of Toronto, Department of Zoology's) NetNews
    archive was raised at a Usenix conference in the early 90's.
    The question: can we get at them? Bruce Jones was especially
    interested in this. Henry's answer was that it really wasn't
    going to be easy because he had neither the disk space nor the
    tape drive to pull them all down to make them available.

    I, it turned out, did. So one bright winter day I drove from
    London (Ontario Canada) to Toronto (Ontario Canada) -- a two
    hour drive in my shiny new pickup truck and picked up 141
    magtapes from the Zoology department at UofT and brought them
    back to the Department of Computer Science at the University
    of Western Ontario. (A not unimpressive bandwidth, by the way,
    of some 18Mb/sec :-) never underestimate the bandwidth of a
    pickup truck on the highway )


Some additions have been made to the usenet archive available on
Telehack which have been provided from other sources.


Halting the CPU to enter the system monitor is not advised.  However, if
you do this, the operator will usually supply a monitor entry point to
enable CPU restart and re-entry into the Telehack exec.


    !!    repeat last command
    .     repeat last command
    w     systat
    w     finger
    l     dir
    ls    dir
    date  daytime
    cat   type
    cls   clear
    ?     command list

How to enable telnet in Windows 7, 10, and 11

Windows 7, 10 and 11 ship with a telnet client, but it is shut off by default.
To enable it, do the following:

    Control Panel
    Programs And Features
    Turn Windows features on or off
    Check Telnet Client
    Hit OK

After that, you can open a command prompt and type


Privacy Policy

See the PRIVACY command or privacy.txt, or visit the link below:

For some generally good advice, read the file becool.txt.

See Also

Movie/TV Show List

Colossus: The Forbin Project (1970)
Scanners (1981)
Tron (1982)
Blade Runner (1982)
WarGames (1983)
Brainstorm (1983)
Sneakers (1992)
Hackers (1995)
2001: A Space Odyssey (1968)
Demon Seed (1977)
Real Genius (1985)
Halt and Catch Fire (2014-2017)
Steve Jobs (2015)