*************************************


       Hacking Arpanet -- Part V

                by

             The Source


**************************************

PEEKING AND SPYING
------------------

    This article discusses the commands that "anonymous guest" can use to learn
what other people are doing on the system.

 .HELP PK
The PK program can be used to PeeK at the input and output buffers of any
terminal, and the line editor buffer of a display.  To run PK, give the monitor
command "R PK".  PK will ask for a terminal line number, and will display that
terminal's buffers plus the who line of the job, if any, using that terminal.
PK can also display the contents of some of the internal system variables
associated with the terminal (see + and - commands below; the default is not to
display this system data).
If the selected terminal is hidden (by ESC H), PK will so notify you.  You may
choose to override the hiding, but if so, the selected terminal is notified that
you are spying on it.
If you are using a SAIL display, the selected terminal's buffers will be
displayed on your screen about once per second, like a WHO display.
If you are using a non-display, the PK information will be typed once.
While PK is running on a display, you can give it any of the commands in the
table below to have it display different information (in the table,  means
carriage return).  Whenever PK exits on a DD or III, the last buffer display
will remain on your screen until you reset your display by BREAK P or by running
another program.

  Display buffers of the given terminal line.
+ Display given terminal line and enable data display.
- Display given terminal line and disable data display.
   Display buffers of the next higher numbered terminal.
   Display buffers of the next lower numbered terminal.
^B^C   Update the display NOW and every  seconds (1:9).
^B^C0   Update the display NOW, then only once for each command.
+   Enable display of system internal data at top of screen.
-   Disable display of system internal data at top of screen.
   Stop the displaying and exit to the monitor.
   Exit and execute the given monitor command.

 .HELP PPK
PPK allows you to peek at the screen of someone at a display terminal (a
DataDisc, III or Datamedia).  Say "R PPK", and give it the line number of the
terminal you want to observe.  (For DataDiscs, this is NOT the number reported
by FINGER; it's the number following the PPN in the person's wholine, and can be
found with the WHERE command.)
If you are on a display yourself and have your wholine turned on, PPK changes
your wholine to be that of the job at which you're peeking.  (Your original
wholine selection is restored when you exit.)
Once you have selected a lial "observe page printer" mode. (Do NOT follow the
E or N with a carriage return, or PPK will exit!)  Typing another line number
followed by a carriage return gets you another victim.  A raw carriage return
causes the program to exit.
If the selected terminal is hidden (by ESC H), PPK will so notify you. You may
choose to override the hiding, but if so, the selected terminal is notified
that you are spying on it.
The display is updated about once every two seconds.  You can force an
immediate update by typing ALTMODE.  You can also set the rate by typing
control-meta-digit, where 1-9 = 1-9 secs and 0 causes the display never to be
updated (except when you type ALTMODE).

 .HELP POLL
POLL accepts an audio channel number and lists those terminals which are
listening to it, and the PPN, if someone is logged in at that terminal.  An
argument of * will list all nonzero audio channels.
r poll
CHANNEL=10
TV-46: TTY53 JOB 41 [1,BH]
TV-47: TTY64
TV-51: TTY52 JOB 46 [1,CR]
TV-63: TTY33 JOB 7 [SF,SF]

 .HELP TALK
The command to communicate with another user is called TALK.  It makes
everything that either one of you types appear on both terminals.  (Note: If
you want to know about the TALK program on the Altos, READ DMCHAT, which
describes both Alto DMCHAT and Alto TALK. The writeup below is for the TALK
command on SAIL, which is completely different from Alto TALK.)  The argument
to TALK is either the programmer name of the person you want to talk to, the
device name of the terminal you want to talk to, or an ARPAnet address.  For
example:
 TALK MRC
 TALK TTY34
 TALK RMS@AI  (% is legal as a host name delimiter also).
The command may fail for any of the following reasons:
user not logged in (use MAIL)
user logged in more than once (use a terminal instead of a user spec)
user gagged or (for ARPAnet TALK) refusing links (use MAIL)
the ARPAnet site is unreachable or does not support network linking
When you are in a (local) talk ring, what you type goes only to the terminals
in the ring, not to the monitor or a user program.  To leave the talk ring,
type [CALL] (control-C from non-displays).
TALKing to local users does not run a program; hence the core image is
preserved.
TALKing to network users runs a program.  To leave network talk, type
[LF] (control-Z from monitor. It is considered antisocial to
use the TALK command to establish communication with strangers. A better way is
the SEND command, which will send a message to a user but does not interfere
with his work.  For this reason, the TALK command requires that you be logged
in.  If you don't have an account, you can use SEND to request the user TALK
to you.  Type "HELP SEND" for more info.

 .HELP WHEN
Typing WHEN prints out your most recent logout time, and the directory which
did the logging out.  The fact that you are currently logged in does not affect
this information. As with FINGER, system crashes are not considered to be
"loggig out".  Also, if your directory was deleted when you logged out, it will
not be included by WHEN.  The WHEN command also takes optional arguments.  If
only a single argument is given, it may be typed as:
 WHEN FOO
If more than one argument is used, separate them by semicolons, not commas.  The
various argument forms are:
 . Report only on current directory.
 * Give latest logouts for all of your directories.
       PRG Give latest logout from among PRG's directories.
      *,PRG Give logouts for all of PRG's directories.
      PRJ,* Give logouts for all directories with project PRJ.
     PRJ,PRG Give latest logout for the single directory [PRJ,PRG].
       *,* Give logout for every directory (not recommended).
Note that brackets are not included in any of the options.  If you are aliased,
the . and * options will use the aliased ppn.  For example:
 WHEN DON;*;S,SYS;ME
would tell you when DON last logged out (and from which of his directories),
list all directories for you (or for whomever you're aliased to) with logout
times, give the latest logout for [S,SYS], and finally tell you when ME last
logged out.
If one or more of the directories being listed happens to be logged in at the
moment, a note will be  printed to that effect.  If you have asked for the
latest from among all of someone's directories (including your own, which is
the default), then you will be told if that user is logged in on ANY of his
directories.  (In the other cases, such as "*,PRG" or "PRJ,PRG" or "." options,
you are told  only if the specific directory is logged in.)
Note that, even if you are not interested in the logout information, you can
use WHEN *,FOO to get a list of all of FOO's directories.      The other
command for doing this is DIR [*,FOO]/Q/F.   It turns out that WHEN is
significantly faster and uses fewer disk ops.  WHEN is also much faster than
FINGER for finding out logout times or for finding out whether a specific person
is currently logged in (though WHERE)

an
FINGER for finding out logout times or for finding out whether a specific person
is currently logged in (though WHERE)