[comp.sys.handhelds] Protect for HP48

akcs.falco@hpcvbbs.UUCP (Andrey Dolgachev) (02/12/91)

To Bill Wickes or anybody else who has or would like to take apart the
IFERR library posted by Mr. Wickes a few days ago:  I wrote a password
protect program for the 48 , using the IFERR library, but it is still
possible to kick out of the program by pressing ON repeatedlyery fast,
for about 3 or 4 times.  It would be a lot easier if somebody coudl
please post a message about how to disable the ON key (which is done in
the IFERR library) and/or how to disable the ON-C sequence.  In case
anyone is interested, the program which I made is pretty simple, and
takes up about 1.5 k or so (but only 700 bytes is really needed, if you
have intelligence).  There are four programs, TNOFF, whcih turns off the
calculator, and upon the subsequent  turning on, it asks for the
password.  The password can be up to 8 letters long, and the keys echo
PASSWORD, not the actual passowrd, aka bbs'.  If the right one is
entered, then the calculator is left free to use, otherwise, it beeps and
turns off.   The other three programs are NMESS, which creates a new
message to display (like name and phone number ) upon startup, above the
passowrd entry prompt, NPASS, which creates a new password, and INSTALL
which assigns TNOFF to the USERKEY OFF key.  The password and message are
stored in the hidden directory. As mentioned, it is possible, if you know
that you have to, to press ON a lot of times and kick out of the program.
 However, most casual users who cch your 48 unawares, will not be able to
use it.  If anybody knows how to disable the ON key, please respond.
           ----Falco

P.S.  Then again, who would leave a $250 calculator,especially iwht $60+
cards in it, lying around so people could try playing with it.  
P.P.S.:  Of course, how many people would even be able to use the 48 in
the first place, w/ or w/o passowrod protection.
P.P.P.S.:  Then again, Password protection on a calculator is neat.
P.P.P.P. S. Well, kinda'

akcs.xymox@hpcvbbs.UUCP (Kelvin Chang) (04/06/91)

Excuse me, but I've been trying to find out more about the 'hidden'
directory, but have been unsuccessful.  Could you possible tell me more
about this interesting subject?  I have some private stuff on my 48sx
that I would like to keep private, and this would be a great way to do
that. Right now, I just have 'protection' programs that purges the stuff
right out of the memory if you press the wrong key to get to the
variable...and I don't really like that.  
Also, I don't know how to make the on-c buttons functionless, but I do
know how to keep your calculator off so that the on key can't abort the
program.  Just have a long list of OFF commands, and have some main
program access this list and evaluate it.  It will repeatedly turn the
calculator off, regardless of whether you push the on key or not.  When
the program gets to the end of the list and goes back to the beginning of
the list, however, a press of the on button during the 'interval' WILL
abort the program, which is why I recommend a LONG list of OFFs, or find
some way to keep that from happening.  Anyway, hope you find this useful,
at least amusing.

Sincerely,

Kelvin
University of Arizona

akcs.falco@hpcvbbs.UUCP (Andrey Dolgachev) (04/06/91)

The hidden directory is imply another directory or even a variable with a
null name for its label which means that it does not appear on the menu. 
To get a unquoted null name, which means that you would go to the hidden
directory (if there is one on that level) simply type in #15781h SYSEVAL.
 To get the quoted null name, which looks like '', but is notjust '' with
nothing in the middle, type in #15777h SYSEVAL.  Now just use this null
name, like a normal name, you can STO programs in or use CRDIR on it.  At
the top level, there is already a null directory, this is used to store
the alarms and userkey assignments.  However, you can not edit anything
with a null name in it.  Another interesting ide is that if you have a
null directory or null variable, it also hides everything after it in the
order of the menu.  Play aroudn with it, you can store things in a null
name, you can use ORDER (use LIST-> and PRG-> to put some thing into a
list or a program, or call a list containing a null name from a program
if you don't have PRG->) to hide your variables, whatever.
        Enjoy,
The problem with putting a large number of OFFS in a program, which is
also possible, is that you dcan't have a password prtection, and it also
works against the owner.
            --Falco

akcs.xymox@hpcvbbs.UUCP (Kelvin Chang) (04/09/91)

If you want a way to disable the on function on a program, maybe you
could take a look at the 'brix' program I uploaded in 'user.programs'.
Once you start playing it, the only way to get out of it is to push on-c.
And it's impossible (for me)
to edit the program as I don't know how to edit a program with a null
character in it.  If you can figure it out, please leave a note telling
me how you did it and how the program works.  I would really like to
program more complex programs on the 48sx.

Thanks,

Kelvin
P.S.  How do you integrate the #15777h SYSEVAL null character in a
program so that it can't be edited?  It's a great way to hide files, but
I found that you can't hide the home directory variables... if you push
'home' the variables will be displayed.  So I assume it is only good for
hiding variables in subdirectories?

akcs.scotty@hpcvbbs.UUCP (SCOTTY THOMPSON) (04/14/91)

I, too, used Bill's IFERR library to try a password-protection scheme. 
In fact, the first program I tried to write when I unpacked my first rev.
"a" machine was a protection program.  I believe the first call I made to
tech support was "how to disable the ON key?"  All they said was to keep
watching the BBS and someone would post something.  Well, personally, I
think that all of this IFERR^n THEN^n ELSE^n END^n stuff is ridiculous
(how many nests should we make to be sure?  It's really getting insane to
have an IFERR around an IFERR because when the inner IFERR gets aborted,
the second has to take over...).  Anyway, following is a short password
entry program that is very safe if aborted (no abort code, just
keycodes/flags on the stack).  Also, upon successful entry of a password
(any length), it generates a CRC-length list (from BYTES) and this list
can be used to test the password.  Thus, you can keep your password
anywhere in memory and no-one will know what it is because they'll see a
binary number and a real number in a list.  With the right abort code
preventing anyone from putting this list on the stack for testing, it
should provide excellent protection from prying eyes.  Also, I would
recommend using the CRC code and/or bytes (or some crypt algorithm) to
encode any data that is THAT vulnerable...

The following program is the password entry program.  Nothing is
displayed on the display, to allow you to put your own message (like
"Enter password").  Complete the password with ENTER PROPER.  All
characters are allowed except ON and ENTER PROPER.  Passwords can be any
length, because the length is calculated.  I would like to know the CRC
algorithm, though, HP, so that I could calculate the odds of two pw'ds
(not identical) being compared as identical.  I think including the
length in bytes in the list (with the CRC) should raise the odds
considerably.

------------cut-----------------
\<< RCLF 64 STWS MEM DROP DEPTH \-> dp
  \<< DO
        -1 WAIT
      UNTIL
        DUP 51.1 ==
      END
    DROP DEPTH dp - \->LIST
    BYTES 2 \->LIST
    SWAP STOF
  \>>
\>>
-----------cut-------------------

Short and sweet!  Happy hacking!

<< Hmmm, I feel like a intuitive phrase >>

talaga@oxy.edu (04/14/91)

In article <28073ba1:2013.4comp.sys.handhelds;1@hpcvbbs.UUCP>
On the subject of password protection...
>Also, I would
>recommend using the CRC code and/or bytes (or some crypt algorithm) to
>encode any data that is THAT vulnerable...

I would recommend simple backups for data that is THAT valuable.

If you're worried about prying eyes, don't keep it on your calculator.
If you're worried about someone destroying your data. The purge key
combination will kill it no matter WHAT security program you use...


"There was this paperboy, and he kept crossing through my yard.  Well, I didn't
like that, so I went and put up a fence. And well, I'll be if that paper boy
didn't just climb right over that fence."


I guess I'm just naive...


-dst