home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 26 / CD_ASCQ_26_1295.iso / vrac / sentry25.zip / README.TXT < prev    next >
Text File  |  1995-10-06  |  80KB  |  1,811 lines

  1.                              ╓────────────╖
  2.                              ║ Sentry 2.5 ║
  3.                              ╙────────────╜
  4.                             Michael A. Bobbitt
  5.                           Mike.Bobbitt@AcadiaU.Ca
  6.                http://dragon.acadiau.ca/~910318b/Sentry.html
  7.  
  8.         TABLE OF CONTENTS
  9.  
  10.         1.0 Introduction
  11.             1.1  Purpose of Sentry
  12.                  1.1.1 In the Home
  13.                  1.1.2 In the Business Environment
  14.             1.2  Features of Sentry
  15.                  1.2.1 General
  16.                  1.2.2 Expiry Dates
  17.             1.3  Distribution of Sentry
  18.  
  19.         2.0 Setup
  20.             2.1  General Setup Issues
  21.             2.2  The Initial Login
  22.             2.3  First Priorities
  23.             2.4  Using the Sentry.ini file
  24.             2.5  Modifying Your AUTOEXEC.BAT
  25.  
  26.         3.0 Securing Your Computer
  27.             3.1  BIOS Password
  28.             3.2  Boot Sequence
  29.             3.3  Switches in CONFIG.SYS
  30.             3.4  Passwords
  31.             3.5  The Password File
  32.             3.6  Placement in AUTOEXEC.BAT
  33.             3.7  Keep a Backup
  34.  
  35.         4.0 Logging In
  36.             4.1  The Login Procedure
  37.             4.2  Changing Passwords
  38.  
  39.         5.0 The SuperUser Menu
  40.             5.1  Create User
  41.             5.2  Delete User
  42.             5.3  View Users
  43.             5.4  Toggle SuperUser Status
  44.             5.5  Change Account Exipry Date
  45.             5.6  Change Password Expiry Date
  46.             5.7  View Log File
  47.             5.8  Change Account Password
  48.             5.9  Assign Max Invalid Logins
  49.             5.10 Edit Initialization Settings
  50.             5.11 Exit
  51.  
  52.         6.0 Using Sentry With Windows
  53.             6.1  General
  54.             6.2  Installation Procedure
  55.             6.3  Additional Windows Security
  56.             6.4  Windows 95
  57.  
  58.         7.0 Securing Other Programs
  59.             7.1  General
  60.             7.2  Setup
  61.  
  62.         8.0 Creating a new Instance of Sentry
  63.  
  64.         9.0 Registration
  65.  
  66.         10.0 Revision History
  67.              10.1  Pre-Release Notes
  68.              10.2  Sentry V1.0
  69.              10.3  Sentry V1.1
  70.              10.4  Sentry V1.2
  71.              10.5  Sentry V1.3
  72.              10.6  Sentry V1.4
  73.              10.7  Sentry V2.0
  74.              10.8  Sentry V2.1
  75.              10.9  Sentry V2.2
  76.              10.10 Sentry V2.3
  77.              10.11 Sentry V2.4
  78.  
  79.         11.0 Technical Notes
  80.              11.1  Encoding Algorithm
  81.              11.2  Time Stamps
  82.              11.3  Files
  83.              11.4  File_id.diz
  84.              11.5  General
  85.  
  86.         12.0 Potential Threats To Security
  87.              12.1  The Password File
  88.              12.2  Hardware Loopholes
  89.  
  90.         13.0 Troubleshooting
  91.              13.1  Error messages
  92.                    13.1.1  Error opening password file!
  93.                    13.1.2  Error opening temp file!
  94.                    13.1.3  Error in creating log file!
  95.                    13.1.4  Error opening log file!
  96.                    13.1.5  Error opening Sentry.ini file!
  97.                    13.1.6  Error in Sentry.ini file! [XXXXXXXX]
  98.                    13.1.7  Registration Error - Program Aborted!
  99.                    13.1.8  Error in time stamps.
  100.                    13.1.9  Out of memory!
  101.                    13.1.10 This account has expired.
  102.              13.2  Other problems
  103.  
  104.         15.0 Standard Disclaimer
  105.  
  106.         16.0 Credits
  107.  
  108.                            ========================
  109.  
  110.  
  111.         1.0 Introduction
  112.         ================
  113.  
  114.         Currently, almost all fields of computer security are growing
  115.         and advancing, with a few notable exceptions. Networks, servers
  116.         and public access systems are all tightening their access to
  117.         avoid potential problems. But what of the single-user PC? Is the
  118.         information contained on these any less valuable? Often times
  119.         not, yet adequate security programs do not exist for PC's. In my
  120.         search for security, I discovered that PC's were virtually
  121.         ignored, and those programs that did exist were weak and faulty.
  122.         Faced with this situation, I decided to write my own security
  123.         program from scratch, incorporating the tightest security
  124.         measures possible, while allowing flexible, easy use.
  125.  
  126.  
  127.         1.1 Purpose of Sentry
  128.  
  129.         Sentry is meant for one basic purpose only: to keep unwanted
  130.         people off your PC. It is flexible enough that this single
  131.         purpose can be used in many different ways, for many different
  132.         reasons. Here are just a few.
  133.  
  134.         1.1.1 In the Home
  135.  
  136.         Most people have something on their home PC that they don't want
  137.         others to see. Maybe it's a sensitive document, maybe it's
  138.         copies of e-mail, or maybe you just want to keep track of who is
  139.         using your system. Sentry has the solution for all of these
  140.         problems, by restricting access and logging all attempts to use
  141.         the system.
  142.  
  143.         Alternatively, sometimes you just want to keep people out,
  144.         period. It could be your nosy room mate, your little brother, or
  145.         your boss at work. In any case, Sentry will keep them out, while
  146.         letting a select group of people in.
  147.  
  148.         1.1.2 In the Business Environment
  149.  
  150.         Businesses will find Sentry valuable to guard against
  151.         unauthorized entry into PC's. With Sentry, you can leave your
  152.         terminals unattended while knowing that nobody can access the
  153.         information held on them, unless you want them to. Many
  154.         businesses have cleaners or other independant contractors come
  155.         in during silent hours. A lot of businesses have PC's in open
  156.         areas where a "passer-by" could use them. There's no guarantee
  157.         that these people won't attempt to use your PC's when your're
  158.         not around.
  159.  
  160.         For businesses that work in groups, Sentry is useful for keeping
  161.         track of who used the PC's and when. Supervisors could have
  162.         SuperUser access on all PC's in their group, allowing them to
  163.         manage and control access as required. Also, the log that Sentry
  164.         keeps could be a valuable tool in determining who was doing
  165.         what, and when.
  166.  
  167.         You may not need to use Sentry on your system. You might never
  168.         have a security problem to worry about. But the truth is that
  169.         Security isn't something to take a chance on. It is a serious
  170.         problem in today's computing society, and many legitimate users
  171.         find themselves helpless or confused about the real issues. It
  172.         is a shame that the immoral few have ruined it for the rest, but
  173.         we cannot let them get in the way of our daily business. With
  174.         the proper tools and knowledge, we can fight back by closing up
  175.         the common loopholes that attackers use.
  176.  
  177.  
  178.         1.2 Features of Sentry
  179.  
  180.         1.2.1 General
  181.  
  182.         Sentry will allow you to set up accounts on your computer, one
  183.         account for each person you want to have access. If someone
  184.         doesn't have an account, they don't get in. It's that simple.
  185.         Each person has their own account, with their own password,
  186.         making it easy to track who logs in and when. Since Sentry
  187.         doesn't use a "master access" password, you can wipe a single
  188.         users account without affecting any other users.
  189.  
  190.         Sentry records each login attempt in a log file which can be
  191.         viewed by a SuperUser at any time.
  192.  
  193.         1.2.2 Expiry Dates
  194.  
  195.         You can set accounts to expire on a certain date, effectively
  196.         barring access to the specified user after that. For example, if
  197.         you know that Joe will be leaving on April 14th, you can set his
  198.         account to expire on April 15th. That means you don't have to
  199.         remember to delete his account on the 15th... It will expire on
  200.         it's own, and you can delete it whenever you remember.
  201.  
  202.         You can also set expiry dates for passwords, meaning that a user
  203.         will have to enter a new password once his old one has expired.
  204.         In addition, you can set the period of time that new passwords
  205.         are good for.
  206.  
  207.         Sentry can be used to restrict access when you first turn on
  208.         your PC, to block DOS access from within Windows, to secure a
  209.         single program from general use, or any combination of the
  210.         above.
  211.  
  212.  
  213.         1.3 Distribution of Sentry
  214.  
  215.         Sentry is a copywritten piece of work, however distribution of
  216.         the ShareWare version is allowed and encouraged. The only
  217.         stipulation is that it must be unmodified, and must contain all
  218.         of the original files (and no others). Essentially, the .zip
  219.         file you initially recieved is the only format that Sentry is
  220.         distributable in.
  221.  
  222.         DO NOT distribute any registered versions whatsoever. (By
  223.         distributing a registered version, you are giving out copies of
  224.         a specific encoding scheme, which can be used against the
  225.         registered user).
  226.  
  227.  
  228.         2.0 Setup
  229.         =========
  230.  
  231.         Since you are reading this, I can safely assume you have
  232.         unzipped Sentry. Along with that, I will also assume that you
  233.         have created a directory for Sentry, and that all Sentry files
  234.         are currently in it. (If this is not true, do it now). You may
  235.         want to read the section entitled "Creating a new Instance of
  236.         Sentry" below.
  237.  
  238.  
  239.         2.1 General Setup Issues
  240.  
  241.         The very first thing you should do is make sure you keep a copy
  242.         of all the Sentry files somewhere safe. Copying them to a floppy
  243.         disk and storing it is a good idea.
  244.  
  245.         The second thing you have to do is to set up the Sentry.ini file
  246.         for your system. You should load the file into a text editor
  247.         (like MS-DOS's edit) and make the changes from there. There are
  248.         instructions and tips provided for each item. Make sure you read
  249.         and understand these instructions before making any changes, as
  250.         an improperly set up Sentry.ini file can cause errors and
  251.         security loopholes.
  252.  
  253.  
  254.         2.2 The Initial Login
  255.  
  256.         Now the next thing you must do is to change the password and
  257.         login provided with the initial copy of Sentry. To do this, you
  258.         must run the Sentry.exe program. If it displays an error
  259.         message, check the troubleshooting section at the end of this
  260.         file.
  261.  
  262.         When it asks for a login, use "Sentry", with the password
  263.         "Sentry". You can turn case sensitivity off in the Sentry.ini
  264.         file, but for logins only. The password must be entered exactly
  265.         as shown (sentry or SENTRY will not work). The Sentry account
  266.         has SuperUser access, meaning you can create and delete accounts
  267.         while logged in as Sentry. To log in as a SuperUser, enter
  268.         Sentry for a login, and instead of pressing enter, hold down the
  269.         CONTROL key and press enter. This tells the Sentry program that
  270.         you want to log in as a SuperUser. Then enter your password
  271.         normally, and instead of dropping to DOS, you will go to the
  272.         SuperUser menu. (See the section below on "The SuperUser Menu"
  273.         for more information).
  274.  
  275.         From here, you should create a new user (you) and grant yourself
  276.         SuperUser access. You can do this during creation by holding the
  277.         CTRL key while pressing enter after typing your login name. You
  278.         can also do this by using the "Create User" option normally and
  279.         then using the "Toggle SuperUser Access" menu option to give
  280.         yourself SuperUser privileges.
  281.  
  282.  
  283.         2.3 First Priorities
  284.  
  285.         Once you have your account set up, you should delete the Sentry
  286.         account, so nobody else can use it. This is very important as a
  287.         potential intruder will probably try to enter through the
  288.         default Sentry account first. (If you delete it, that closes the
  289.         loophole).
  290.  
  291.         Sentry will not let you delete the last SuperUser, so you must
  292.         create a new user with SuperUser access before deleting the
  293.         Sentry account.
  294.  
  295.         From here, you can create the other users of your system, and
  296.         define their starting passwords, expiry dates and access rights.
  297.         See the section below on "The SuperUser Menu" for more
  298.         information.
  299.  
  300.  
  301.         2.4 Using the Sentry.ini file
  302.  
  303.         Sentry can be configured to your needs by way of the Sentry.ini
  304.         file. This file contains information that you may wish to
  305.         change, allowing Sentry to adapt to many different situations.
  306.  
  307.         The Sentry.ini file follows a very specific format, and if you
  308.         deviate from it, Sentry will not work! Comments are allowed, as
  309.         long as the comment line begins with a * character. Blank lines
  310.         are also permitted. The order of the items in the Sentry.ini
  311.         file is critical. Do not move items around. The comments
  312.         provided with the Sentry.ini file will guide you through this
  313.         stage. Feel free to add your own comment lines as you see fit.
  314.  
  315.         If this is too much for you, then you can edit the Sentry.ini
  316.         file from the SuperUser menu. You can do this by selecting the
  317.         "Edit Initialization Settings" option (see section 5.10). Many
  318.         people find this easier than editing the actual file. Any
  319.         changes you make will not take effect until the next time you
  320.         use Sentry.
  321.  
  322.  
  323.         2.5 Modifying Your AUTOEXEC.BAT
  324.  
  325.         Simply add the following line to the top of your AUTOEXEC.BAT
  326.         file:
  327.  
  328.         ----------------- CUT ----------------
  329.         \Sentry\Sentry
  330.         ----------------- CUT ----------------
  331.  
  332.         The above example assumes you have installed Sentry on
  333.         c:\Sentry, which may not be true. Adjust the path in the first
  334.         line to reflect the location of Sentry on your system.
  335.  
  336.         NOTE: These lines MUST be the first lines in your autoexec.bat
  337.         file. If not, the user may be given a chance to bypass Sentry by
  338.         pressing CTRL-C or CTRL-BREAK.
  339.  
  340.         If Sentry is installed on a drive other than the one you boot
  341.         from (drive D in the example below), then add these lines
  342.         instead:
  343.  
  344.         ----------------- CUT ----------------
  345.         d:
  346.         \Sentry\Sentry
  347.         c:
  348.         ----------------- CUT ----------------
  349.  
  350.  
  351.         3.0 Securing Your Computer
  352.         ==========================
  353.  
  354.         Sentry is essentially useless unless you take the appropriate
  355.         additional security measures for your machine. Below I have
  356.         outlined some of the things you can do to increase the security
  357.         of your system.
  358.  
  359.  
  360.         3.1 BIOS Password
  361.  
  362.         Protect your BIOS! It has a built in password, so set it!
  363.         Without the password, any user can get into your BIOS and change
  364.         your critical system settings. I have seen several different
  365.         types of BIOS setups, but generally, you use the CHANGE PASSWORD
  366.         command (Sometimes also listed as SUPERVISOR PASSWORD) from the
  367.         main menu and set the SECURITY OPTION to setup (as opposed to
  368.         system) in the BIOS FEATURES SETUP screen. Depending on the
  369.         layout of your BIOS, you may have a CHANGE SETUP PASSWORD option
  370.         right on the main menu.
  371.  
  372.  
  373.         3.2 Boot Sequence
  374.  
  375.         Change your boot sequence. Again, in your BIOS, under the BIOS
  376.         FEATURES SETUP screen, set your BOOT SEQUENCE to boot from your
  377.         hard drive first. (This usually means set it to C,A as opposed
  378.         to A,C). This will ensure that no-one can bypass Sentry by means
  379.         of a boot disk.
  380.  
  381.  
  382.         3.3 Switches in CONFIG.SYS
  383.  
  384.         Add "switches /n/f" as the first line of your CONFIG.SYS file.
  385.         The /n will dis-allow pressing F8 to step through the CONFIG.SYS
  386.         and AUTOEXEC.BAT files. This means that users cannot bypass
  387.         Sentry by this method. The /f switch is optional, it simply
  388.         speeds up your boot-up time (by about 2 seconds).
  389.  
  390.  
  391.         3.4 Passwords
  392.  
  393.         Pick a good password. Short passwords are a bad idea, as well as
  394.         birthdays, girlfriends names, etc. Anything that is easy to
  395.         guess should be avoided. Good passwords are not words at all,
  396.         but made up from a "mnemonic" sentence. For example, the
  397.         sentence "I'll wait for you" turns into "Illw84u" (trust me).
  398.         Mixing lower case letters, upper case letters, and numbers
  399.         increases the security of a password, and passwords of this type
  400.         are near impossible to guess or crack. Do not write your
  401.         password down, especially near your computer. Try to memorize it
  402.         if possible. Change your password, but not too often. People who
  403.         change their passwords too often (less than 6 months or so) tend
  404.         to write them down, which is a bigger risk. Don't enter your
  405.         password with someone looking over your shoulder. If someone is
  406.         in the room, block their view, or wait until they leave.
  407.  
  408.  
  409.         3.5 The Password File
  410.  
  411.         Put your password file in a safe place. Although passwords are
  412.         encoded, usernames and time stamps are not. Also remember, the
  413.         encoding scheme is one way only, so if I encode login names, you
  414.         will never be able to view who is in your password file (IE: you
  415.         would have to "guess" which person to delete). Users can change
  416.         time stamps in the password file, and this can cause serious
  417.         problems, so KEEP IT SAFE!
  418.  
  419.         NOTE: Sentry automatically hides your password file for you.
  420.         After you have run Sentry once, your password file (and log
  421.         file) will not appear in directory listings. This will help your
  422.         security, but is not a fool-proof method.
  423.  
  424.  
  425.         3.6 Placement in AUTOEXEC.BAT
  426.  
  427.         When you are installing Sentry, make sure it is the FIRST file
  428.         in your AUTOEXEC.BAT! Otherwise, the user may be able to exit
  429.         when another program is running and avoid Sentry all together!
  430.  
  431.  
  432.         3.7 Keep a Backup
  433.  
  434.         Keep a backup copy of all your Sentry files! Especially your
  435.         password file! If something happens to these files, you may be
  436.         locked out your computer if you don't have a backup.
  437.  
  438.  
  439.         4.0 Logging In
  440.         ==============
  441.  
  442.         4.1 The Login Procedure
  443.  
  444.         When you first run Sentry, you should see the standard startup
  445.         screen. Your registration information is contained here. (The
  446.         shareware release simply says it is registered to Shareware).
  447.         You should also see a prompt asking you to enter your login (or
  448.         user name). If instead you see an error message, check at the
  449.         end of this file for help.
  450.  
  451.         While entering your user name, if you have SuperUser access, you
  452.         can log in as such. You can do this by holding down the CTRL key
  453.         while pressing enter. If you do not have SuperUser access, or do
  454.         not wish to log in as such, simply press enter. In either case,
  455.         this will send you to the password prompt.
  456.  
  457.         Once you have reached the password prompt, you simply enter your
  458.         password, and hit enter when you are finished. Your password is
  459.         not echoed to the screen. At this time, the date and time of
  460.         your last login will be displayed.
  461.  
  462.         The minimum and maximum length of both the login and password
  463.         are set by the "MinPasswordLen" and "MaxPasswordLen" attributes
  464.         in the Sentry.ini file respectively.
  465.  
  466.         If there have been any invalid login attempts made against your
  467.         account since the last valid login, you will be told so, and how
  468.         many. If the number of invalid login attempts against your
  469.         account has exceeded the maximum allowed, your account will be
  470.         locked out until the SuperUser resets it.
  471.  
  472.         If your account has expired, it will say so, and subsequently
  473.         lock you out. If your password has expired, it will also say so,
  474.         but will then prompt you to enter a new password. You may not
  475.         re-use your old password, and you must pick a password that
  476.         corresponds to the length limits set out in the Sentry.ini file.
  477.         Once you have entered and verified your new password, it is
  478.         given a new expiry date according to the "PasswordExpiresIn"
  479.         value in the Sentry.ini file.
  480.  
  481.         If you have logged in as a SuperUser, and have SuperUser access,
  482.         you will now be in the SuperUser menu (see the section below).
  483.         If not, you will simply be dropped to DOS, and the login
  484.         procedure is complete.
  485.  
  486.  
  487.         4.2 Changing Passwords
  488.  
  489.         If you wish to change your password at any time, you can do so
  490.         by entering the pass key. The pass key is defined in the
  491.         Sentry.ini file, and is displayed when Sentry starts up. To
  492.         change your password, simply enter your user name as usual, and
  493.         when prompted for your password, enter the pass key. You will
  494.         then be prompted for your old  password (to make sure it is
  495.         really you), and then you will be asked for your new password,
  496.         which will be verified and saved to disk. Your new password will
  497.         expire in the number of days designated by "PasswordExpiresIn"
  498.         in the Sentry.ini file.
  499.  
  500.         Changing your password has no effect on SuperUser access.
  501.  
  502.  
  503.         5.0 The SuperUser Menu
  504.         ======================
  505.  
  506.         5.1 Create User
  507.  
  508.         This option allows you to create users on your system. First of
  509.         all, you must enter the username (or login) you wish to assign
  510.         to that user. If you wish to create a user with SuperUser
  511.         status, type in the username and hold down the CONTROL key when
  512.         pressing enter. Otherwise, just press enter when you're finished
  513.         at the login prompt. Once that is complete, Sentry asks for the
  514.         password. The password is not echoed to the screen. The user
  515.         should choose and enter their own password. SuperUsers need not
  516.         know what the passwords are since they can still manage the
  517.         accounts without knowing them. The password is entered twice to
  518.         ensure no typos were made, and then saved to the password file
  519.         in encoded form. The ESCAPE key will abort this operation at any
  520.         time.
  521.  
  522.         Note: There is currently a maximum of 100 users allowed. This
  523.         limit can be bypassed if required (contact me for a larger
  524.         capacity version).
  525.  
  526.  
  527.         5.2 Delete User
  528.  
  529.         The delete option is very simple. It brings up a list of all
  530.         users, and you simply use the cursor keys to highlight the user
  531.         you wish to delete. SuperUsers are denoted by a * to the right
  532.         of their username. Press enter to select the appropriate user.
  533.         If the selected user is a SuperUser, Sentry will give a warning.
  534.         SuperUser or not, Sentry will then ask if you are sure you want
  535.         to delete them. Any input other than a 'y' will not perform the
  536.         delete. The ESCAPE key will abort this option at any time.
  537.  
  538.  
  539.         5.3 View Users
  540.  
  541.         This option allows you to view all users who currently have
  542.         accounts on your system. SuperUsers are again denoted by a * to
  543.         the right of their login name. The last login date/time, account
  544.         expiry date and password expiry date are also shown to the right
  545.         of the user's login name. In addition, the number of invalid
  546.         logins since the users last valid login are shown with the
  547.         number of invalid logins allowed before an account is locked up.
  548.         An "X" in the "Max Inv Log" (Maximum Number of Invalid Logins
  549.         Allowed) column means there is no limit. You can use the PAGE UP
  550.         and PAGE DOWN keys to scroll forward and back if there are
  551.         multiple pages of users. Arrows ( and ) will be present if
  552.         there are additional pages above and/or below. The ESCAPE key
  553.         will exit back to the main menu.
  554.  
  555.  
  556.         5.4 Toggle SuperUser Status
  557.  
  558.         When this option is selected, it first brings up a list of all
  559.         users on the system. Again, SuperUsers are denoted by a *. Once
  560.         you have selected a user, Sentry will ask you if you want to
  561.         grant/revoke SuperUser access to/from the appropriate user. Any
  562.         input other than a 'y' will not change that users status. Now
  563.         the user must enter a password. (Since the SuperUser status is
  564.         encoded in the password, and the password can never be decoded,
  565.         I can't change SuperUser access without resetting the password).
  566.         The user can re-enter their old password, or enter a new one
  567.         (the old one will be over-written). In a worst case scenario,
  568.         the SuperUser can re-assign a new password to the user if he is
  569.         unavailable to enter a new password himself. (A hostile user can
  570.         have SuperUser access revoked without having to enter a new
  571.         password; you can do it for him).
  572.  
  573.  
  574.         5.5 Change Account Expiry Date
  575.  
  576.         This option lets you define when an account will expire on your
  577.         system. Expired accounts no longer have access. This option is
  578.         useful if a user will be leaving. Then you don't have to
  579.         remember to delete their account on the day they leave. You can
  580.         set it to expire, and delete it when you remember.
  581.  
  582.         This option also works in conjunction with the "Assign Max
  583.         Invalid Logins" option. Once an account reaches it's maximum
  584.         number of sequential invalid logins, it expires. The only way to
  585.         re-activate the account is to change the expiry date with this
  586.         option.
  587.  
  588.         Once you select this option, some information about the account
  589.         will be displayed. If it is a SuperUser account, Sentry will
  590.         tell you so. It will then display the account's current expiry
  591.         date. You will be asked if you are sure you want to change that
  592.         user's expiry date. Any input other than a 'y' will abort the
  593.         process, otherwise you will be prompted for the year the account
  594.         will expire. The year must be entered as 4 digits (IE: 1997). If
  595.         you enter 'N' at the year prompt, no expiry date is assigned to
  596.         that account (it is valid forever). If you enter a valid year,
  597.         you will then be prompted for the expiry month, which is entered
  598.         as 2 digits (IE: 06 for June) followed by the expiry day, which
  599.         is also entered as 2 digits. Accounts expire at one second past
  600.         midnight on the date of expiry.
  601.  
  602.  
  603.         5.6 Change Password Expiry Date
  604.  
  605.         This option lets you define when a users password will expire.
  606.         Once the password has expired, the user must enter a new one.
  607.         This forces the user to change their password. Once a password
  608.         has expired, the next time the user logs in he will be forced to
  609.         enter a new password. The new password is valid for the number
  610.         of days set in the "PasswordExpiresIn" option in the Sentry.ini
  611.         file. Once a password has expired, the user cannot re-enter it.
  612.         He must select a new password. (NOTE: Sentry does not keep
  613.         historical records on passwords, so a user may alternate back
  614.         and forth between 2 passwords. This is not a secure practice and
  615.         should be avoided).
  616.  
  617.         Once you select this option, some information about the account
  618.         will be displayed. If it is a SuperUser account, Sentry will
  619.         tell you so. It will then display the current expiry date for
  620.         the password. You will be asked if you are sure you want to
  621.         change that user's expiry date. Any input other than a 'y' will
  622.         abort the process, otherwise you will be prompted for the year
  623.         the password will expire. The year must be entered as 4 digits
  624.         (IE: 1997). If you enter 'N' at the year prompt, no expiry date
  625.         is assigned to that password (it is valid forever). If you enter
  626.         a valid year, you will then be prompted for the expiry month,
  627.         which is entered as 2 digits (IE: 06 for June) followed by the
  628.         expiry day, which is also entered as 2 digits. Passwords expire
  629.         at one second past midnight on the date of expiry.
  630.  
  631.  
  632.         5.7 View Log File
  633.  
  634.         Every time a user logs in, a record is kept on disk. If you want
  635.         to view that online record, select this option. The log file
  636.         will be displayed, one screen at a time. Once the entire log
  637.         file has been displayed, Sentry will ask you if you want to
  638.         clear the log file. Any input other than 'y' will exit, leaving
  639.         the log file in tact. If you answer with a 'y', Sentry will
  640.         clear out the old entries. This should be done fairly
  641.         frequently, depending on how busy your system is. Large log
  642.         files take up more disk space.
  643.  
  644.         You should always keep a close eye on the log file as this will
  645.         often tell you when something is wrong on your system. All error
  646.         messages are saved to the log file, so you can see if Sentry has
  647.         run into any problems. Also, it records the current time, and
  648.         the username of the user attempting to log in. This will help
  649.         you to identify any potential attacks on your system. The log
  650.         file is hidden by Sentry, but you should also place it somewhere
  651.         safe so that users cannot tamper with it. You can set the
  652.         location of the log file with the Sentry.ini file.
  653.  
  654.  
  655.         5.8 Change Account Password
  656.  
  657.         This option allows the SuperUser to change an account's
  658.         password, in case the user forgot it, or some other strange
  659.         disaster has occurred. When assigning a new password to an
  660.         account, you should set the expiry date to be immediatly, so the
  661.         user is forced to choose a new one. If the previous password had
  662.         no expiry date, none is assigned to the new password. Otherwise
  663.         the password expires in the number of days assigned to
  664.         "PasswordExpiresIn" in the Sentry.ini file. You can abort at any
  665.         time by pressing the ESCAPE key.
  666.  
  667.  
  668.         5.9 Assign Max Invalid Logins
  669.  
  670.         This allows you to set the maximum number of invalid logins
  671.         allowed before an account is disabled. The default number is
  672.         defined in the Sentry.ini file ("InvalidLogins") and is assigned
  673.         to all accounts when they are first used.
  674.  
  675.         To assign a new maximum, simply select the "Assign Max Invalid
  676.         Logins" option from the SuperUser menu. From here you will be
  677.         shown the complete user list, and asked to select the user you
  678.         wish to change. Pressing the ESCAPE key will abort the operation
  679.         here.
  680.  
  681.         Once you have selected the user, you will be informed if that
  682.         user is a SuperUser. NOTE: You should not assign a maximum
  683.         number of invalid logins to your last SuperUser account. If you
  684.         do, and someone attempts to break in to that account, you could
  685.         be locked out of the SuperUser menu!
  686.  
  687.         Next you will be told what the user's current max invalid login
  688.         setting is, and asked if you want to change it. Any input other
  689.         than a 'Y' will abort the operation. Now you will be asked to
  690.         enter the number of invalid login attempts before an account is
  691.         disabled. Entering 'N' or a 0 will mean that there can be
  692.         unlimited invalid login attempts made.
  693.  
  694.         Please note that a value of less than 10 may cause you more
  695.         trouble than good. You may be spending a lot of time re-setting
  696.         accounts if you pick too low a value, so consider this
  697.         carefully. Also note that when an account is locked up, it is
  698.         actually set to expire immediately. As a result, if you wish to
  699.         re-activate an account, you must change the account's expiry
  700.         date (see above). This is also handy for determining when the
  701.         account was actually de-activated. The expiry date for that
  702.         account it set the the day it was locked out.
  703.  
  704.         Every time a successful login is made to an account, the invalid
  705.         login counter is reset. This means that an account will not be
  706.         locked out if it has a valid login before the maximum is
  707.         reached. (For example, say an account has a maximum of 10
  708.         invalid logins. If there are 7 invalid logins before a
  709.         successful login, and then 5 more invalid logins, the account
  710.         will not be locked up. There must be 10 sequential invalid
  711.         logins for the account to be disabled.)
  712.  
  713.         Once you have finished making the change, you can view the user
  714.         list to make sure it is acceptable.
  715.  
  716.  
  717.         5.10 Edit Initialization Settings
  718.  
  719.         This option allows you to edit the Sentry.ini file from within
  720.         Sentry. Once this option is selected, all of the attributes from
  721.         the Sentry.ini file are displayed. Simply select the attribute
  722.         you wish to modify, and you will be given the following
  723.         information:
  724.  
  725.                 - A one line description of the attribute.
  726.  
  727.                 - The name of the attribute as it appears in the
  728.                   Sentry.ini file. This will appear in brackets under
  729.                   the one-line description.
  730.  
  731.                 - A brief description of the attribute and it's uses.
  732.  
  733.                 - Valid settings for the attribute, if applicable.
  734.  
  735.                 - Any security notes, if applicable.
  736.  
  737.                 - The default value for the attribute.
  738.  
  739.                 - The current value for the attribute.
  740.  
  741.         At this time, you will be prompted to enter a new value for the
  742.         attribute. Pressing ENTER on a blank line, or pressing the ESC
  743.         key abort any changes the current value.
  744.  
  745.         Sentry performs strict checking on the values you enter, and
  746.         will not save an invalid value. For this reason, you should
  747.         change your Sentry.ini settings from the SuperUser menu whenever
  748.         possible.
  749.  
  750.  
  751.         5.11 Exit
  752.  
  753.         This simply returns you to the DOS prompt. It is the same as
  754.         pressing the ESCAPE key.
  755.  
  756.  
  757.         6.0 Using Sentry With Windows
  758.         =============================
  759.  
  760.         6.1 General
  761.  
  762.         Sentry is also adaptable to Windows, allowing you to keep users
  763.         away from DOS. This may be desirable if you enter Windows
  764.         immediatly upon startup (I.E.: your autoexec.bat contains "win"
  765.         as a command). If you want to limit access to your system as a
  766.         whole, you could install Sentry in the usual way. This would
  767.         keep out unwanted users all together. If you want to also limit
  768.         access to the DOS prompt from Windows, you can do that too. All
  769.         you must do is create a new instance of Sentry (see below), and
  770.         then simply set up your windows to run Sentry when you drop to
  771.         DOS. The example setup below assumes you have installed an
  772.         instance of Sentry in c:\Sentry\Inst1, but you can substitute
  773.         your actual directory names in where applicable.
  774.  
  775.  
  776.         6.2 Installation Procedure
  777.  
  778.         Installing Sentry in the Windows environment is simple. Included
  779.         in the Sentry zip file are 2 files:
  780.  
  781.         Sentry.grp
  782.         Sentry.pif
  783.  
  784.         Copy both of these files into your windows directory. Now, enter
  785.         Windows and from the Program Manager, select [F]ile, then [N]ew.
  786.         Next select Program Group. When prompted, enter "Sentry" for
  787.         both description and file name. Now you should see a new program
  788.         group called Sentry. The Sentry program group should contain a
  789.         single icon, labelled MS-DOS. This icon actually points to
  790.         sentry.pif, which contains specific information about running
  791.         Sentry.
  792.  
  793.         You can edit the new icon (highlight it and press ALT-ENTER) and
  794.         change the working directory to point to your Sentry files.
  795.  
  796.         IE: c:\Sentry, or c:\Sentry\Inst1, etc.
  797.  
  798.         From here, run the Pif Editor program (the icon is a little
  799.         tag), and open Sentry.pif. Now change the "Program Filename" to
  800.         point to your Sentry.exe file.
  801.  
  802.         IE: c:\Sentry\Sentry.exe, or c:\Sentry\Inst1\Sentry.exe, etc.
  803.  
  804.         In Addition, change the "Working Directory" to be the same as
  805.         the working directory for the icon (see above). Once you save
  806.         the .pif file, you are all set.
  807.  
  808.         At this point you should test out the new Sentry icon to make
  809.         sure it works ok. When you double click on the new icon, it
  810.         shoould take you directly to Sentry. Once you have entered a
  811.         correct username and password, it will then drop you to a
  812.         regular DOS shell. You can type "EXIT" to return to Windows at
  813.         any time.
  814.  
  815.         Once you are sure it works, remove your old MS-DOS icon, so that
  816.         users cannot use it to drop straight to DOS. You can drag your
  817.         new icon into the same location as your old MS-DOS icon, so
  818.         everything will look the same.
  819.  
  820.         Now there is one last step. If a user were to exit Windows, they
  821.         would be at the DOS level, which is not what we want. Since your
  822.         autoexec.bat file is running windows on startup, you can block
  823.         people from exiting by forcing them to go through Sentry. You
  824.         can do this by adding a call to Sentry after the win command in
  825.         your autoexec.bat.
  826.  
  827.         For example, the last few lines of your autoexec.bat might look
  828.         like this:
  829.  
  830.         ----------------- CUT ----------------
  831.         win
  832.         \Sentry\Inst1\Sentry
  833.         ----------------- CUT ----------------
  834.  
  835.         Alternatively, you can add the security measures described in
  836.         section 6.3 below.
  837.  
  838.         And that's it. If it seems like a complicated process, just try
  839.         the steps one at a time, and make sure everything works ok. The
  840.         end result is that when you click on the MS-DOS icon, it will
  841.         run Sentry before dropping you to the DOS shell. That means that
  842.         you can limit access to the operating system, without pulling
  843.         any fancy tricks in Windows. Since you have made a new instance
  844.         of Sentry, you could have one instance run when you boot up
  845.         (giving access to windows), and have another instance run when
  846.         you click on the DOS icon (giving access to the operating
  847.         system). That way, a user that has access to windows may not be
  848.         able to drop to DOS.
  849.  
  850.         Be warned however that Sentry will still lock up your system
  851.         when a user fails to log in. This may cause you to lose any
  852.         information you have not saved in your Windows session, if
  853.         Windows becomes unstable.
  854.  
  855.         If Sentry does lock up your system, you may be able to recover
  856.         back to Windows by pressing CTRL-ALT-DELETE and closing the DOS
  857.         prompt. This will still not allow access to DOS, but you will
  858.         not lose anything you were working on.
  859.  
  860.  
  861.         6.3 Additional Windows Security
  862.  
  863.         There are additional security measures built into Windows that
  864.         should be considered when using Sentry. After all, securing the
  865.         MS-DOS icon won't do any good if someone can edit it back to the
  866.         way it was.
  867.  
  868.         To add more security to your Windows system, just add this
  869.         Restriction section to your progman.ini file:
  870.  
  871.         ----------------- CUT ----------------
  872.         [Restrictions]
  873.  
  874.         EditLevel=4
  875.         rem Stops the creation, movement, copying, deletion, or
  876.         rem modification of ANY groups or icons.
  877.  
  878.         Noclose=1
  879.         rem Prevents a user from exiting windows.
  880.  
  881.         NoRun=1
  882.         rem Disables the run command selection from the file menu.
  883.  
  884.         NoSave=1
  885.         rem Stops the selection of save settings on exit from program
  886.         rem manager.
  887.  
  888.         NoSaveSettings=1
  889.         rem Disables the save settings on exit command, so any changes
  890.         rem made to the your program manager group icons and windows
  891.         rem cannot be saved upon exiting windows.
  892.         ----------------- CUT ----------------
  893.  
  894.         To nulify any of these entries, remove it or change the value
  895.         from 1 to 0.  You can delete the file manager Icon as an
  896.         additonal security precation.
  897.  
  898.  
  899.         6.4 Windows 95
  900.  
  901.         Sentry is easily adaptable to use in a Windows 95 environment.
  902.         In most respects, the setup is the same as in a DOS/Windows
  903.         environment.
  904.  
  905.         As before, ensure that the call to Sentry is at the beginning of
  906.         your AUTOEXEC.BAT file. The Sentry.pif file and Sentry.grp file
  907.         will still work with Windows 95, although at this time I have
  908.         not drawn up specific instructions for installation.
  909.  
  910.         I have not yet conducted thorough tests in a Windows 95
  911.         environment, however documentation for this should be
  912.         forthcoming in a future revision.
  913.  
  914.  
  915.         7.0 Securing Other Programs
  916.         ===========================
  917.  
  918.         7.1 General
  919.  
  920.         In some cases, it might be beneficial to secure a single
  921.         program. It might be a word-processor, a mail program, or even
  922.         Windows. In any case, you can secure it with Sentry, even if you
  923.         don't use Sentry during boot-up. You will probably want to
  924.         create a new instance of Sentry (see below) for each program you
  925.         want to secure. That will allow you to have different accounts
  926.         and passwords for each program.
  927.  
  928.  
  929.         7.2 Setup
  930.  
  931.         To set this up, all you have to do is write a batch file of the
  932.         following format, and stick it in a directory in your path.
  933.         (C:\DOS is almost always in your path, so you could stick these
  934.         batch files there). In this example, we will secure the program
  935.         called RUNME (loacted at C:\prog\runme.exe):
  936.  
  937.         ----------BEGIN RUNME.BAT-----------------
  938.         @echo off
  939.         c:
  940.         \Sentry\Inst2\Sentry
  941.         cd \prog
  942.         runme
  943.         cd \
  944.         -----------END RUNME.BAT------------------
  945.  
  946.         The program as shown above will run Sentry before it runs
  947.         RUNME.EXE. As long at the batch file is in your path ahead of
  948.         RUNME.EXE, RUNME.BAT will execute first, barring the user from
  949.         running RUNME.EXE without running Sentry first. C:\DOS is almost
  950.         always first in your path, so this will work for everything but
  951.         DOS programs. You can add a new directory to you path by editing
  952.         your AUTOEXEC.BAT. If you add it to the beginning, and place all
  953.         your batch files there, they will run first. The only exception
  954.         to this rule is that if the user is in the directory containing
  955.         RUNME.EXE they will not execute RUNME.BAT first.
  956.  
  957.         This is not by any means a perfect method of securing a program.
  958.         It will work in most cases, but with the proper knowledge and
  959.         patience, this method can be defeated. If your users are
  960.         skilled, don't rely on this method to be "bullet-proof." (Sentry
  961.         was not designed for this purpose, it is merely an additional
  962.         use).
  963.  
  964.         Future versions of Sentry may have an "automated" method for
  965.         doing this if the need exists.
  966.  
  967.  
  968.         8.0 Creating a new Instance of Sentry
  969.         =====================================
  970.  
  971.         In some of the scenarios listed above, you may be required to
  972.         create a new "instance" of Sentry. That is to say, a completely
  973.         new copy of Sentry, that works independantly of all other
  974.         copies. This is a fairly simple process, that you can perform as
  975.         many times as required.
  976.  
  977.         The first thing you must do when creating a new instance is to
  978.         create the directory you wish to place it under. If you plan to
  979.         have several instances, you may want to create a Sentry main
  980.         directory, with your instances branching off of that. For
  981.         example:
  982.  
  983.         c:\Sentry
  984.              |
  985.              +----+------- Inst1
  986.                   |
  987.                   +------- Inst2
  988.  
  989.         This will allow you to keep all your Sentry files well
  990.         organized, and seperate from your other programs. Create a
  991.         directory for each instance you anticipate you will need. From
  992.         there, simply copy ALL of the Sentry files into each directory.
  993.         The final step is to set up the accounts of each instance
  994.         according to your needs. To do this, you must go into each
  995.         directory individually and run Sentry. Now log in as a SuperUser
  996.         and set up all the required accounts. Remember that each
  997.         instance is independant of the others. Your password file should
  998.         not be the same for any 2 instances (otherwise there is no
  999.         advantage to having 2 instances). That means that the PassFile
  1000.         setting in each Sentry.ini must be different, and your password
  1001.         files must be in different locations. For simplicity's sake, you
  1002.         may want to keep your password file for each instance in the
  1003.         same directory as the other related Sentry files. (The password
  1004.         file for Instance 1 goes into c:\Sentry\Inst1, and so on).
  1005.  
  1006.         You should always test out each instance and make sure it works
  1007.         before using it.
  1008.  
  1009.  
  1010.         9.0 Registration
  1011.         ================
  1012.  
  1013.         If you use Sentry on your machine(s), I urge you to register. I
  1014.         have put a lot of time and effort into making Sentry a viable
  1015.         security program, and I would appreciate the effort very much.
  1016.  
  1017.         On the other hand, I realize that not everyone can afford to
  1018.         register. In that case, please feel free to continue to use the
  1019.         ShareWare version. There are no limitations on how long or how
  1020.         many times it can be used. My intention with Sentry was to make
  1021.         a contribution to PC security, and to make it available to
  1022.         everyone. All I ask is that if you use Sentry, and are able,
  1023.         please register.
  1024.  
  1025.         The shareware version of Sentry has all the functionality of the
  1026.         registered version, with one exception: it does not encode
  1027.         passwords. This will allow you to test out all the functions of
  1028.         Sentry before you commit to purchasing it. The ShareWare version
  1029.         in itself is a very secure program as is, however if you are
  1030.         serious about Security, plaintext passwords are not a viable
  1031.         option.
  1032.  
  1033.         To order, simply fill out the order form provided (Order.frm)
  1034.         and e-mail or snail-mail a copy to me.
  1035.  
  1036.         As a registered user, you will receive:
  1037.  
  1038.               - The full Sentry program (with password encryption) and
  1039.                 related files on 3.5" disk.
  1040.  
  1041.               - A laser printed user's manual (essentially this file,
  1042.                 with a few changes in format and content).
  1043.  
  1044.               - Online internet support via e-mail.
  1045.  
  1046.               - Free upgrades as soon as they are available.
  1047.  
  1048.               - Notices about any potential security risks, and
  1049.                 instructions on how to protect yourself.
  1050.  
  1051.               - The ability to request specific features in future
  1052.                 versions of Sentry.
  1053.  
  1054.         NOTE: Registered versions are not inter-compatible. That is,
  1055.         user X's password file is encrypted differently than user Y's
  1056.         password file. The version of Sentry that you recieve is good
  1057.         only for you and your files. (Likewise, nobody else can use
  1058.         their copy of Sentry with your password file). See the order
  1059.         form for information on obtaining compatible versions of Sentry.
  1060.  
  1061.  
  1062.         10.0 Revision History
  1063.         =====================
  1064.  
  1065.         10.1 Pre-Release Notes
  1066.  
  1067.         March 95   - My search for DOS security programs is
  1068.                      unsuccessful. The general idea for Sentry is
  1069.                      formed.
  1070.  
  1071.         April 95   - Coding for Sentry begins.
  1072.  
  1073.         May 95     - Still coding...
  1074.  
  1075.         June 95    - Sentry is now a complete program.
  1076.  
  1077.         July 95    - Beta testing. Many updates made.
  1078.  
  1079.  
  1080.         10.2 Sentry V1.0
  1081.  
  1082.         Release Date: 20 July 95
  1083.  
  1084.  
  1085.         - Sentry V1.0 (Shareware) is released. Contains basic
  1086.           functionality. At this point, Sentry is approximately 1700
  1087.           lines of code.
  1088.  
  1089.  
  1090.         10.3 Sentry V1.1
  1091.  
  1092.         Release Date: 27 July 95
  1093.  
  1094.         - Sentry V1.1 Released. V1.1 fixes some serious bugs in V1.0,
  1095.           and has these additions:
  1096.  
  1097.                      * Date format is selectable.
  1098.  
  1099.                      * Users with no password expiration are not
  1100.                        assigned an expiry date on entering a new
  1101.                        password.
  1102.  
  1103.                      * Incorrect password verification displayed
  1104.                        immediately when creating a new user, or toggling
  1105.                        SuperUser status.
  1106.  
  1107.  
  1108.         10.4 Sentry V1.2
  1109.  
  1110.         Release Date: 29 July 95
  1111.  
  1112.         - Sentry V1.2 Released. Some more minor bugs are repaired and
  1113.           several areas are updated. Additions are:
  1114.  
  1115.                      * Memory management improved.
  1116.  
  1117.                      * All user stats now shown instead of just login
  1118.                        name.
  1119.  
  1120.                      * The keyboard buffer is flushed after an invalid
  1121.                        login attempt.
  1122.  
  1123.  
  1124.         10.5 Sentry V1.3
  1125.  
  1126.         Release Date: 01 Aug 95
  1127.  
  1128.         - Sentry V1.3 Released. Again, more bugs were fixed in this
  1129.           version. Additions are:
  1130.  
  1131.                      * The log file is now much more detailed than
  1132.                        before, and includes a time stamp on every
  1133.                        action.
  1134.  
  1135.                      * A bug with deleting a user listed as 15th or
  1136.                        later in the password file has been fixed.
  1137.                        (Regardless of what page the user you selected to
  1138.                        delete was on, a user from the first page was
  1139.                        always deleted).
  1140.  
  1141.                      * A bug in the multi-user display was fixed. (If
  1142.                        the last page contained one user, you could not
  1143.                        page down to see him).
  1144.  
  1145.  
  1146.         10.6 Sentry V1.4
  1147.  
  1148.         Release Date: 08 Aug 95
  1149.  
  1150.         - Sentry V1.4 Released. Some minor changes have been made,
  1151.           mostly for the sake of appearance. Additions are:
  1152.  
  1153.                      * The Sentry.ini file now allows the user to select
  1154.                        the colours to be used for normal and highlighted
  1155.                        text.
  1156.  
  1157.                      * Input routines have been improved and simplified.
  1158.                        Inapropriate characters have been stripped from
  1159.                        the input stream.
  1160.  
  1161.  
  1162.         10.7 Sentry V2.0
  1163.  
  1164.         Releaase Date: 11 Aug 95
  1165.  
  1166.         - Sentry V2.0 Released. Many revisions, fixes and additions have
  1167.           been made to the program for this release. Most of the update
  1168.           ideas came from Bret Jacobsen. Additions include:
  1169.  
  1170.                      * Invalid login/password length messages (both to
  1171.                        the screen and log file) are user-definable in
  1172.                        the Sentry.ini file.
  1173.  
  1174.                      * If a normal user attempts to log in as a
  1175.                        SuperUser, it is recorded in the log file.
  1176.  
  1177.                      * The SuperUser Login flag is cleared after an
  1178.                        invalid login. (This is a bug fix: previously if
  1179.                        CTRL-ENTER was pressed during an invalid login
  1180.                        attempt, the next successful login attempt would
  1181.                        be as a SuperUser, as long as the user had
  1182.                        access).
  1183.  
  1184.                      * A bug with the Toggle SuperUser Access option
  1185.                        corrupting the time stamps has been fixed.
  1186.  
  1187.                      * The log file is again re-organized to be more
  1188.                        "readable."
  1189.  
  1190.                      * You can no longer delete the last SuperUser on
  1191.                        your system (thereby locking yourself out).
  1192.                        Sentry performs a check previous to deletion and
  1193.                        will abort if you are deleting the last
  1194.                        SuperUser.
  1195.  
  1196.                      * A bug with the input skipping characters was
  1197.                        fixed.
  1198.  
  1199.                      * After a successful login, the number of invalid
  1200.                        login attempts since your last successful login
  1201.                        is now shown.
  1202.  
  1203.                      * The user can now abort a password change, unless
  1204.                        the password has expired.
  1205.  
  1206.                      * The option to reset an account's password has
  1207.                        been added to the SuperUser menu.
  1208.  
  1209.                      * You can now define the number of invalid logins
  1210.                        permissible before an account expires (locks up).
  1211.                        The default setting is defined in the Sentry.ini
  1212.                        file, and the settings for individual accounts
  1213.                        can be modified from the SuperUser menu.
  1214.  
  1215.  
  1216.         10.8 Sentry V2.1
  1217.  
  1218.         Releaase Date: 20 Aug 95
  1219.  
  1220.         - Sentry V2.1 Released. Changes include:
  1221.  
  1222.                      * Input no longer automatically ends after
  1223.                        "MaxPasswordLen" characters have been entered at
  1224.                        the login or password prompts. Input continues as
  1225.                        required, however only "MaxPasswordLen"
  1226.                        characters are used. Any extra characters are
  1227.                        discarded.
  1228.  
  1229.                      * Case sensitivity for logins can now be turned on
  1230.                        and off via the Sentry.ini file. This is
  1231.                        applicable to logins only, passwords are still
  1232.                        case sensitive.
  1233.  
  1234.  
  1235.         10.9 Sentry V2.2
  1236.  
  1237.         Releaase Date: 10 Sep 95
  1238.  
  1239.         - Sentry V2.2 Released. Changes include:
  1240.  
  1241.                      * Sentry now uses windowed screens for all output,
  1242.                        as opposed to simply directing output to the
  1243.                        entire screen.
  1244.  
  1245.                      * When entering dates, the year is now checked. If
  1246.                        it is not 4 characters, the user is forced to
  1247.                        re-enter it. This was causing problems with
  1248.                        Sentry accepting '96' as a valid year, and
  1249.                        subsequently not translating correctly.
  1250.  
  1251.                      * A bug with the password encoding scheme has been
  1252.                        fixed. The encryption used to truncate passwords
  1253.                        at length 8, causing only the first 8 characters
  1254.                        to be recognized. For SuperUsers, this meant that
  1255.                        passwords over 8 would not contain the SuperUser
  1256.                        stamp (it was truncated). This problem has now
  1257.                        been rectified, and passwords are significant for
  1258.                        MaxPasswordLen characters. All in all, this
  1259.                        seriously increases the amount of security
  1260.                        available from Sentry.
  1261.  
  1262.                        NOTE: Because of the above modification, older
  1263.                        versions of Sentry cannot use password files from
  1264.                        V2.2 and up. The reverse is not true however, as
  1265.                        Sentry V2.2 can use password files all the way
  1266.                        back to V1.0.
  1267.  
  1268.                        Also note that to use passwords over 8
  1269.                        characters, you must re-create the old passwords.
  1270.                        This can be easily done by selecting the "Change
  1271.                        Account Password" option from the SuperUser menu.
  1272.  
  1273.  
  1274.         10.10 Sentry V2.3
  1275.  
  1276.         Releaase Date: 24 Sep 95
  1277.  
  1278.         - Sentry V2.3 Released. Changes include:
  1279.  
  1280.                      * Small bugs with windowed mode have been fixed.
  1281.  
  1282.                      * Windowed mode is now optional. For those that
  1283.                        prefer "normal" operation, you can set that in
  1284.                        the Sentry.ini file.
  1285.  
  1286.                      * Log file viewing can now handle long lines, and
  1287.                        you can skip to the end of the file by pressing
  1288.                        the ESC key once.
  1289.  
  1290.                      * Quickstart instructions are now included in the
  1291.                        Qstart.txt file.
  1292.  
  1293.  
  1294.         10.11 Sentry V2.4
  1295.  
  1296.         Releaase Date: 06 Oct 95
  1297.  
  1298.         - Sentry V2.4 Released. Changes include:
  1299.  
  1300.                      * The Sentry.ini file can now be edited from the
  1301.                        SuperUser menu. The user can get information on
  1302.                        each attribute, including a brief description,
  1303.                        security notes, default setting, and the current
  1304.                        setting just by selecting which attribute they
  1305.                        wish to change.
  1306.  
  1307.  
  1308.  
  1309.         10.12 Sentry V2.5
  1310.  
  1311.         Releaase Date: 10 Oct 95
  1312.  
  1313.         - Sentry V2.5 Released. Changes include:
  1314.  
  1315.                      * Sentry can now be run from any location. The user
  1316.                        does not have to be in the Sentry home directory
  1317.                        for it to work properly.
  1318.  
  1319.         11.0 Technical Notes
  1320.         ====================
  1321.  
  1322.         11.1 Encoding Algorithm
  1323.  
  1324.         The encoding algorithm used is the standard UNIX crypt()
  1325.         algorithm. It is a one-way encoding algorithm that incorporates
  1326.         the Data Encryption Standard (DES) and RSA technology. It is
  1327.         used on UNIX systems to secure passwords. (As a note, the
  1328.         encryption code is not included with the ShareWare version, so
  1329.         no amount of examining the code will reveal the algorithm).
  1330.  
  1331.         The users' passwords are never decoded. They are stored on disk
  1332.         and in memory in an encoded format. The entered passwords are
  1333.         encoded using the same algorithm and matched in an encoded form.
  1334.         This prevents disk or memory scans from revealing the password
  1335.         to prying eyes.
  1336.  
  1337.         I have begun running some tests on cracking the passwords, and I
  1338.         will include my results. So far, this is what I have found:
  1339.  
  1340.         Password Length          Maximum Time to Break
  1341.         ------------------------------------------------
  1342.         4                        22 days
  1343.         5                        1368 days or 3.75 years
  1344.         6                        232.4 years
  1345.         7                        14409 years
  1346.         8                        893357 years
  1347.  
  1348.         All times listed are approximated as using a Pentium 90MHz CPU
  1349.         and an alpha-numeric password.
  1350.  
  1351.         These figures may be adjusted as my testing becomes more
  1352.         accurate. The above figures also assume you know the length of
  1353.         the password, which cannot be determined by looking at the
  1354.         encrypted version. As a result, the search time may be much
  1355.         greater.
  1356.  
  1357.         SuperUser access is also encoded in the password. I tried many
  1358.         different ways before finally settling on this. It is the most
  1359.         secure method. Actually, SuperUser access is stored on the
  1360.         password (which is then encoded), and then stored again on the
  1361.         encoded password. That looks like:
  1362.  
  1363.         password                      <-- Password as entered.
  1364.  
  1365.         super(password)               <-- Password with SuperUser stamp.
  1366.                                           * This is the stamp that is
  1367.                                           used to determine access.
  1368.  
  1369.         crypt(super(password))        <-- Encoded password password with
  1370.                                           SuperUser stamp.
  1371.  
  1372.         super(crypt(super(password))) <-- SuperUser stamped encoded
  1373.                                            password with SuperUser
  1374.                                            stamp.
  1375.                                            * This is the stamp that is
  1376.                                            used to "see" who has
  1377.                                            SuperUser access.
  1378.  
  1379.         That way when you use the "View Users" command, you can see
  1380.         which ones are SuperUsers. However, since the non-encoded
  1381.         SuperUser stamp can be edited, it is only used for viewing. The
  1382.         encoded SuperUser stamp is used for access. If anyone attempts
  1383.         to alter the non-encoded stamp, a warning will be displayed in
  1384.         the log file each time that user logs in.
  1385.  
  1386.  
  1387.         11.2 Time Stamps
  1388.  
  1389.         The time stamps used in Sentry are in the standard UNIX format.
  1390.         That is, the number of seconds since 01 Jan 1970 00:00:00.
  1391.  
  1392.         NOTE: I have found one date which always seems to cause an
  1393.         error. 01/01/1997 translates to 01/15/1995 (1st day of the 15th
  1394.         month of 1997). This is obviously incorrect. I have determined
  1395.         it is a bug in Borland's date conversion routines. It is the
  1396.         ONLY date that causes problems, to my knowledge, all others
  1397.         translate fine. I advise against using 01/01/1997 for any expiry
  1398.         dates.
  1399.  
  1400.  
  1401.         11.3 Files
  1402.  
  1403.         The following files are included with this release of Sentry:
  1404.  
  1405.         Sentry.exe      This is the executable program.
  1406.         Sentry.ini      The initialization file.
  1407.         Sentry.pwd      The password file.
  1408.         Sentry.pif      The Sentry .pif file for Windows.
  1409.         Sentry.grp      The Sentry Group file for Windows.
  1410.         File_id.diz     Short description file.
  1411.         Order.frm       The order form.
  1412.         Readme.com      Displays this file.
  1413.         Readme.txt      This file.
  1414.         Qstart.txt      Quickstart instructions.
  1415.         Whatsnew.txt    A short description of modifications to the
  1416.                         latest version.
  1417.  
  1418.         If you do not have all of these files, Sentry will probably not
  1419.         work for you. You can pick up a complete copy of Sentry (and
  1420.         updates as they become available) at:
  1421.  
  1422.               http://dragon.acadiau.ca/~910318b/Sentry.html
  1423.  
  1424.  
  1425.         11.4 File_id.diz
  1426.  
  1427.         The actual contents of the file_id.diz file are shown below. If
  1428.         any modification has been made to the original file, please
  1429.         re-create it from the following section.
  1430.  
  1431.         NOTE: this is primarily for SysOps of BBS's. Single users can
  1432.         delete the file_id.diz if they wish. (However, please make sure
  1433.         that all files are present if you distribute the program.)
  1434.  
  1435.         -------------------CUT----------------------
  1436.         (V2.5) Sentry - Security for DOS/Windows
  1437.         Sentry is a DOS based security program that
  1438.         allows you to control and monitor access to
  1439.         your PC. It can support up to 100 users and
  1440.         has normal and "SuperUser" access. It can
  1441.         also be used in Windows to secure the MS-DOS
  1442.         icon. Installed correctly, Sentry can be an
  1443.         extremely powerful security tool for your PC.
  1444.         http://dragon.acadiau.ca/~910318b/Sentry.html
  1445.         Mike Bobbitt [Mike.Bobbitt@AcadiaU.Ca]
  1446.         -------------------CUT----------------------
  1447.  
  1448.  
  1449.         11.5 General
  1450.  
  1451.         Sentry is written entirely in Borland C for DOS. As of version
  1452.         2.5, Sentry contains over 2600 lines of code. Portability
  1453.         between machines is not an issue, since Sentry has been designed
  1454.         and tested on standard MS-DOS machines.
  1455.  
  1456.         Sentry is verified to be compatible with Windows 3.x and Windows
  1457.         95.
  1458.  
  1459.  
  1460.         12.0 Potential Threats To Security
  1461.         ==================================
  1462.  
  1463.         Never underestimate your users. And never be satisfied that your
  1464.         system is completely "air-tight". Users are incredibly apt at
  1465.         finding loopholes in security, and once found, these holes can
  1466.         be expoited. Because of this, I am listing below all of the
  1467.         security loopholes that I am aware of at this time.
  1468.  
  1469.  
  1470.         12.1 The Password File
  1471.  
  1472.         Let me once again stress again that the time stamps and user
  1473.         names are not encoded in the password file. This means that if a
  1474.         malicious user found the password file, he could edit it, and
  1475.         effectively wreak havoc on your system. Bear in mind that the
  1476.         password file is automatically hidden by Sentry, so finding it
  1477.         is not always easy. Also, most of these methods require a
  1478.         working knowledge of how Sentry operates, and that is not
  1479.         commonly available. The best source for that information would
  1480.         be from this file, which is deliberately missing some key pieces
  1481.         of "technical" information.
  1482.  
  1483.         If a user did manage to find the password file however, he could
  1484.         do any of the following:
  1485.  
  1486.         - Add/Remove an expiry date (account or password)
  1487.               This is not a serious issue for passwords, as the user
  1488.               would still have to enter their old one before being
  1489.               notified that their password has expired. An attacker
  1490.               cannot expire a password and then log in to that account.
  1491.  
  1492.         - Edit a username
  1493.               This would effectively lock out that user, unless they
  1494.               could guess their new user name.
  1495.  
  1496.         - Delete a user
  1497.               Users can be deleted, but not created.
  1498.  
  1499.         - Destroy a password
  1500.               Since passwords are encoded, there is no way to change a
  1501.               password to something usable. An edited password will
  1502.               likely lock that user out of their account, until the
  1503.               password is reset.
  1504.  
  1505.         - Change "last login" information
  1506.               Not critical, but could be used to cover an attackers
  1507.               tracks.
  1508.  
  1509.         - Change "number of invalid logins since last login" information
  1510.               Same as above.
  1511.  
  1512.         - Add/Remove restrictions on the number of invalid login attempts
  1513.               Could allow a "brute force" technique to work on an
  1514.               account password if the restriction was lifted. Also, if
  1515.               an attacker set this restriction to 1 invalid login, that
  1516.               account would be disabled if a single failed login attempt
  1517.               was made.
  1518.  
  1519.         It is important to know however, that a renegade user can never
  1520.         grant himself SuperUser privileges, nor can he ever view any
  1521.         users password, or attempt to effectively modify one. To perform
  1522.         any of these functions, he must be logged in as a SuperUser. In
  1523.         fact, not even SuperUsers can view passwords. Nobody can. (They
  1524.         can never be decrypted, remember?)
  1525.  
  1526.         In essence: KEEP YOUR PASSWORD FILE SOMEWHERE SAFE, AND
  1527.                     GUARD YOUR SUPERUSER PASSWORDS!
  1528.  
  1529.  
  1530.         12.2 Hardware Loopholes
  1531.  
  1532.         Although it is unlikely that a user will do this, there is a
  1533.         potential security risk to Sentry. Fortunately, this method can
  1534.         only be implemented by technical users. If a user really wants
  1535.         to get into your system, he can disassemble it, and take the
  1536.         battery out of your BIOS. This will reset your BIOS to the
  1537.         standard setup, which does not include password protection. From
  1538.         there, the user can enter your BIOS, and change the boot
  1539.         sequence from C,A to A,C. This means that your computer will
  1540.         search for a boot disk before booting from your hard drive.
  1541.         Therefore, the user can get in if he has a pre-made boot disk.
  1542.         Like I said, it's unlikely, but possible. If you want to fix up
  1543.         this back door, you can re-wire your floppy disk drive so that
  1544.         it is never used on boot up. I do not have instructions for that
  1545.         at this time, however I am looking, and will include them in
  1546.         future.
  1547.  
  1548.         Along the same lines, a user could replace your hard drive (the
  1549.         one containing Sentry)  with another hard-drive. This way he
  1550.         could then boot up using the new hard drive, and never have to
  1551.         worry about Sentry. Also, if he kept your hard drive on the
  1552.         system (as drive D for example), he could still access your
  1553.         data. This kind of trickery is highly improbable, but not
  1554.         impossible.
  1555.  
  1556.         The above two methods take more technical skill than the average
  1557.         user posesses, and should not be considered a serious threat. I
  1558.         include them simply so you can be aware such things exist. If
  1559.         you are concerned about attacks of this nature, you should
  1560.         secure your system's case to the frame (IE: make it impossible
  1561.         to open the case with a screwdriver).
  1562.  
  1563.         It is critical to realize that it is EXTREMELY difficult to
  1564.         repel a determined and well-organized attack. Using Sentry does
  1565.         not guarentee your computer's safety. It does however greatly
  1566.         reduce the threat of a successful attack, and more importantly,
  1567.         it can alert you to potential threats before they become a
  1568.         serious problem. Your ability to defend is much greater once you
  1569.         know you are under attack. Sentry can assist in keeping you
  1570.         informed of suspicious actions on your PC, and it is a powerful
  1571.         tool in defeating most threats.
  1572.  
  1573.  
  1574.         13.0 Troubleshooting
  1575.         ====================
  1576.  
  1577.         13.1 Error messages
  1578.  
  1579.         Below are listed all possible error messages you can get while
  1580.         running Sentry. With each is a brief description of what it
  1581.         means, probable causes, and how to fix it.
  1582.  
  1583.         Please be aware that ALL of these errors cause Sentry to
  1584.         lock-up. This may be an inconvenience at times, but it is done
  1585.         for security reasons (that way an attacker can't "induce" an
  1586.         error and get into the system).
  1587.  
  1588.  
  1589.         13.1.1 Error opening password file!
  1590.  
  1591.         This means your password file cannot be found or opened. Make
  1592.         sure your password file is at the location specified by
  1593.         "PassFile" in your Sentry.ini file. As long as it's there, you
  1594.         should have no problems.
  1595.  
  1596.  
  1597.         13.1.2 Error opening temp file!
  1598.  
  1599.         A temporary storage file cannot be opened. Make sure you have at
  1600.         least a little disk space left when you run Sentry.
  1601.  
  1602.  
  1603.         13.1.3 Error in creating log file!
  1604.  
  1605.         The file that logs all transactions to your computer cannot be
  1606.         created. Make sure you have specified a valid pathname for
  1607.         "LogFile" in the Sentry.ini file, and make sure you have some
  1608.         free space on your drive. If a log file already exists, it will
  1609.         be appended to. Otherwise it will be created.
  1610.  
  1611.  
  1612.         13.1.4 Error opening log file!
  1613.  
  1614.         There is a problem with the log file. Make sure that the log
  1615.         file pointed to by "LogFile" in the Sentry.ini file is not
  1616.         write-protected.
  1617.  
  1618.  
  1619.         13.1.5 Error opening Sentry.ini file!
  1620.  
  1621.         This means that your Sentry.ini file cannot be found. Make sure
  1622.         the Sentry.ini file is in the same directory as your Sentry.exe
  1623.         file, and that it is named correctly.
  1624.  
  1625.  
  1626.         13.1.6 Error in Sentry.ini file! [XXXXXXXX]
  1627.  
  1628.         Your Sentry.ini file does not follow the correct format. The
  1629.         error message should have a word in square brackets after it
  1630.         (IE: [PassFile], [PasswordExpiresIn], etc). This is the
  1631.         attribute in the Sentry.ini file that is causing the problems.
  1632.         (Sentry expects to find that attribute but doesn't). Use an
  1633.         editor to set the attribute correctly. If you are completely
  1634.         lost, restore the Sentry.ini file from you backup, or use the
  1635.         default attribute setting listed in the comments of the
  1636.         Sentry.ini file.
  1637.  
  1638.  
  1639.         13.1.7 Registration Error - Program Aborted!
  1640.  
  1641.         Someone (probably you) has tried unsuccessfully to change the
  1642.         registration information. Very naughty, but if you want to fix
  1643.         it, simply restore Sentry.exe from your original copy.
  1644.  
  1645.  
  1646.         13.1.8 Error in time stamps.
  1647.  
  1648.         This means there is a problem with the time stamps on a user's
  1649.         account. You can attempt to manually edit a user's record in the
  1650.         Sentry.pwd file, but I don't recommend this. If you don't know
  1651.         what you're doing you are more likely to cause additional
  1652.         problems than to fix the user. Otherwise, you can try restoring
  1653.         your password file from backup. If you continue to use a
  1654.         password file that is corrupt, you will probably find you are
  1655.         locked out quite frequently. It should be a top priority to fix
  1656.         the password file.
  1657.  
  1658.  
  1659.         13.1.9 Out of memory!
  1660.  
  1661.         When this error appears, it means that for some reason, Sentry
  1662.         didn't have enough memory to run. This is extremely rare, since
  1663.         Sentry requires very little memory. If this error occurs, try
  1664.         freeing up some memory by unloading some un-needed programs, or
  1665.         rebooting.
  1666.  
  1667.  
  1668.         13.1.10 This account has expired.
  1669.  
  1670.         Sorry, you're out of luck. The SuperUser(s) have set your
  1671.         account to expire, and so it has. If you ARE the SuperUser,
  1672.         silly you (you shouldn't let your own account expire!). In that
  1673.         case, you will have to restore your password file from a backup,
  1674.         and make the necessary changes to get your system running.
  1675.  
  1676.  
  1677.         13.2 Other problems
  1678.  
  1679.         When I run Sentry, is displays a warning saying I am using a
  1680.         newer/older version of the Sentry.ini file.
  1681.  
  1682.         A: You should probably get the latest version of Sentry (see
  1683.         section 11.3 for info on obtaining the latest version). Replace
  1684.         all your current files with the files you retrieve. This warning
  1685.         may not be a problem in itself, however it is not a good idea to
  1686.         use a Sentry.ini file from a different version.
  1687.  
  1688.  
  1689.         I get a warning about users being tampered with in the log file.
  1690.  
  1691.         A: Someone has been tampering with your users (obviously). They
  1692.         thought they could change the SuperUser access on your system,
  1693.         but really couldn't. The only side effect of this is that some
  1694.         users may appear to have SuperUser access when they don't (and
  1695.         vice-versa) when you view them from the SuperUser menu. The
  1696.         users' actual access has not changed. To remedy this situation,
  1697.         you can get the user to enter another password (this can easily
  1698.         be done by expiring their current password). As soon as the new
  1699.         password is entered, the problem will disappear.
  1700.  
  1701.  
  1702.         I can't log in at all.
  1703.  
  1704.         A: Make sure you are a user on the system. Make sure your
  1705.         Sentry.ini file has been set up correctly. Make sure your
  1706.         password file is in the right location.
  1707.  
  1708.  
  1709.         I can't log in as a SuperUser.
  1710.  
  1711.         A: Did you give yourself SuperUser access? Are you remembering
  1712.         to hold down CTRL when you hit enter?
  1713.  
  1714.  
  1715.         My password file is corrupt or deleted.
  1716.  
  1717.         A: Pray you kept a backup somewhere. At the very least, you
  1718.         should have the password file sent with Sentry. In that case,
  1719.         re-install, and log in as Sentry. Since Sentry is initially a
  1720.         SuperUser, you can re-create your users (don't forget to delete
  1721.         the Sentry user when you are finished!).
  1722.  
  1723.  
  1724.         I can't create a c:\Sentry directory on my drive.
  1725.  
  1726.         A: If you are using MS-DOS's Undelete program, it may create a
  1727.         directory called "Sentry" off of your root directory. This
  1728.         directory is hidden, and can only be seen with the "dir /a"
  1729.         command. (This only occurs if you are using the "delete sentry"
  1730.         mode). Possible fixes are to stop using "delete sentry" mode, or
  1731.         to create your Sentry directory as something else (eg:
  1732.         c:\Sentry2, c:\Secur\Sentry, etc etc).
  1733.  
  1734.  
  1735.         My password file disappeared, but Sentry still works fine!
  1736.  
  1737.         A: Your password file is still there, but Sentry has hidden it
  1738.         from normal view. When you type "dir" your password file will no
  1739.         longer show up. This is done to confuse and mislead any
  1740.         potential attackers. If you want to check to make sure it is
  1741.         really there, type "dir /a" and it should show up. The log file
  1742.         is protected with the same measures.
  1743.  
  1744.  
  1745.         I copied my Sentry files to another drive/directory, and now it
  1746.         says my password file is not found!
  1747.  
  1748.         A: This is (once again) because the password file is hidden.
  1749.         When the copy operation was performed, it didn't "find" the
  1750.         hidden file and therefore was not copied with the other files.
  1751.         Older versions of the DOS copy command can copy hidden files,
  1752.         but that function has been removed in later versions. The best
  1753.         bet to avoiding this is to re-install Sentry on the destination
  1754.         drive/directory and create your accounts from scratch. (There
  1755.         are ways to move the password file, but I won't discuss them
  1756.         here).
  1757.  
  1758.  
  1759.         15.0 Standard Disclaimer
  1760.         ========================
  1761.  
  1762.         Inexperienced users should take care this program, as you may
  1763.         lock yourself out of your computer!
  1764.  
  1765.         If you feel you want to use it, but don't feel completely
  1766.         confident, leave a "back door" for you to use. (IE: don't
  1767.         implement all of the security measures listed in "Securing Your
  1768.         Computer"), so that if you DO get locked out, you can still get
  1769.         in somehow.
  1770.  
  1771.         I have not included a nice simple install program on purpose. If
  1772.         you aren't familiar with the basics of DOS, then you probably
  1773.         shouldn't be installing Sentry anyway. If there is a need for an
  1774.         install program, I may include it in a future release.
  1775.  
  1776.         I take no responsibility for how you use this program, or any
  1777.         effects it may have on your system.
  1778.  
  1779.         Having said that, I would greatly appreciate any comments you
  1780.         might have about my program (either positive or negative). If
  1781.         you find any problems, or have a suggestion for making Sentry
  1782.         better, please let me know, and I'll try to put it in a future
  1783.         release. I look forward to hearing from you.
  1784.  
  1785.         You can contact me via e-mail at Mike.Bobbitt@AcadiaU.Ca and I
  1786.         will reply as quickly as I can. If you do not have internet
  1787.         access, you can contact me via surface mail at:
  1788.  
  1789.         Michael A. Bobbitt
  1790.         P.O. Box 1336
  1791.         Wolfville, NS
  1792.         B0P 1X0
  1793.  
  1794.  
  1795.         16.0 Credits
  1796.         ============
  1797.  
  1798.         My thanks go out to these people:
  1799.  
  1800.         Mark Saarinen for the encryption algorithm.
  1801.  
  1802.         D.J. Houghton, Rob Coombs and Jack Hill for testing and
  1803.         advising during the design phase.
  1804.  
  1805.         Bret Jacobsen for finding some serious errors in the first
  1806.         release, as well as continually making suggestions for
  1807.         improvement. Bret has given invaluable assistance in the
  1808.         development of Sentry.
  1809.  
  1810.         ...And my wife for listening to me talk incessantly about it.
  1811.