                        % = % = % = % = % = % = % = %
                        =                           =
                        %   P h r a c k   X V I I   %
                        =                           =
                        % = % = % = % = % = % = % = %

                              Phrack  Seventeen
                                07 April 1988

                     File 6 of 12 : How to Hack HP2000's



How to Hack an HP 2000

By: ** Grey Sorcerer

Okay, so you've read the HP-2000 basic guides, and know your way around.  I
will not repeat all that.

There's two or three things I've found that allow you through HP 2000
security.

1. When you log in, a file called HELLO on the user number Z999 is run.  A lot
of time this file is used to deny you access.  Want in?  Well, it's just a
BASIC program, and an be BREAKed.. but, usually the first thing they do in
that program is turn Breaks (interrupts) off by the BRK(0) function.  However,
if you log in like this:

HELLO-D345,PASS (return) (break)

With the break nearly instantly after the return, a lot of time, you'll abort
the HELLO program, and be home free.

2. If you can create a "bad file", which takes some doing, then anytime you
try to CSAVE this file (compile and save), the system will quickly fade into a
hard crash.

3. How to make a bad file and other goodies:

The most deadly hole in security in the HP2000 is the "two terminal" method.
You've got to understand buffers to see how it works.  When you OPEN a file,
or ASSIGN it (same thing), you get 256 bytes of the file -- the first 256.
When you need anymore, you get 256 more.  They are brought in off the disk in
discrete chunks.  They are stored in "buffers."

So.  Save a bunch of junk to disk -- programs, data, whatever.  Then once your
user number is full, delete all of it.  The effect is to leave the raw jumbled
data on disk.


Pick a time when the system is REAL busy, then:

1. Have terminal #1 running a program that looks for a file to exist (with the
ASSIGN) statement as quickly as it can loop.  If it finds the file there, it
goes to the very end of the file, and starts reading backwards, record by
record, looking for data.  If it finds data, it lets you know, and stops at an
input prompt.  It is now running.

2. Have terminal #2 create a really huge data file (OPEN-FILE, 3000) or
however it goes.

What happens is terminal #2's command starts zeroing all the sectors of the
file, starting at file start.  But it only gets so far before someone else
needs the processor, and kicks #2 out.  The zeroing stops for a sec.  Terminal
#1 gets in, finds the file there, and reads to the end.  What's there?  Old
trash on disk.  (Which can be mighty damned interesting by the way -- did you
know HP uses a discrete mark to indicate end-of-buffer?  You've just maybe got
yourself a buffer that is as deep as system memory, and if you're clever, you
can peek or poke anywhere in memory.  If so, keep it, it is pure gold).

But.  Back to the action.

3. Terminal #2 completes the OPEN.  He now deletes the file.  This leaves
Terminal #1 with a buffer full of data waiting to be dumped back to disk at
that file's old disk location.

4. Terminal #2 now saves a load of program files, as many as are required to
fill up the area that was taken up by the deleted big file.

5. You let Terminal #1 past the input prompt, and it writes its buffer to
disk.  This promptly overlays some program just stored there.  Result:  "bad
program."  HPs are designed with a syntax checker and store programs in token;
a "bad program" is one that the tokens are screwed up in.  Since HP assumes
that if a program is THERE, it passed the syntax check, it must be okay...
it's in for big problems.  For a quick thrill, just CSAVE it..  system tries
to semi-compile bad code, and drops.

Really, the classier thing to do with this is to use the "bottomless buffer"
to look through your system and change what you don't like.. maybe the
password to A000?  Write some HP code, look around memory, have a good time.
It can be done.

** Grey Sorcerer
