CheckOut CheckOut Copyright(c) 1989-93 Saturn Software Copyright(c) 1989-93 Saturn Software //////////// /////// ////// //////// & John Bintz & John Bintz / //// ///// 1519 Redwood 1519 Redwood //// /////// Davis, CA 95616 Davis, CA 95616 ////// // ///// Results from Validate File Name: checkout.exe Size: 67,856 Date: 2-22-1993 File Authentication: Check Method 1 - 4F7E Check Method 2 - 004F CheckOut is a virus protection program which is intended for use in environments in which many program reside in archives such as ZIP or LZH. It breaks open each archive and calls ViruScan by McAfee Associates to check the components for viral problems. If desired, it can then repackage the archive in a different format (e.g. convert .zip to .arj). Both the filelists of opus/fido systems (files.bbs) as well as PCBoard systems (DIRN, DIRNG) are converted in the process. It will also work on a much simpler level where the user has an occasional file to be scanned or re-archived. FEATURES: - Handles nested files to any level. - Desqview compatibility - Optionally moves infected files or bad archives out of the way. - Each file process is logged and identified as ok or bad in some sense. - Control is passed to named batch files at two times so that comments can be added to the rearchived file, or files can be added to the package, etc. - Sensitive to read-only files. - Processed files can be identified so the same directory can be processed each night and only the new files treated. - Single files can be specified for scanning, conversion or both. - Can be operated either in an interactive mode with menus or from the command line, or batch - Menu mode can be used to write a batch file for subsequent use. - Can be stopped anytime and pick up where it left off. - Handles Opus and Fido files.bbs automatically - Handles PCBoard DIRn and DIRng files automatically. - Moves good files along a specified path - Pathnames are maintained on archievers that handle pathnames. The quality of the program as well as the feature set, has been enhanced considerably by the beta testers who did everything that could be expected and more. These include: Patricia M. Hoffman, 204/869, Robert Michal, 386/451, and John Alton, 141/250. Special thanks are due to Patricia Hoffman who independently tested CheckOut with live strains of Jerusalem-B, AIDS, Alabama, Dark Avenger, MIX!/Saratoga, Zero-Bug, 2930 (Traceback), Yankee Doodle, 3551/Syslock, and DataCrime II. LIMIT OF LIABILITY CheckOut is distributed as is. The author makes no representation with respect to the fitness of the software for any particular purpose and disclaims all warranties, expressed or implied. The author will assume no liability for damages either from the direct use of this product or as a consequence of the use of this software. SUPPORT There is no staff employed for support purposes. If you have a problem to report or features you would like to see implemented, use the comment field on the registration form. All suggestions will be evaluated for the next version. SHAREWARE CheckOut is distributed as shareware. This means you can evaluate the product before you decide to register it. If you are using it after a couple of weeks, you should register it. You can copy CheckOut or any shareware program and distributed to anyone else, provided that neither the program nor the documentation is altered and that you do not charge a fee. Because there is no advertising, distribution, or packaging cost, the price of a shareware program is often less than an equivalent package sold through retail channels. The registration form is provided in a separate file. INTRODUCTION INTRODUCTION //////////// ViruScan or SCAN has become one of the most popular methods of checking for various types of viruses. It will check boot sector and each file potentially a virus carrier on a disk for the identifying characteristics of hundreds of different virus types. For most users, this is exactly what is needed. However, for people that operate a BBS or make extensive use of BBS files, most executable files reside within compressed or archived files and these can't be processed by SCAN. CheckOut makes it possible for SCAN to check the files within archives. It operates by stepping through each file in a subdirectory, looking at the extension, spawning the appropriate unarchive program (I.e. LHARC, PAK, PKUNZIP, ZOO, PKUNPAK) and then spawning SCAN to test each of the components of the archived file. As CheckOut decompresses files and checks the components for viri, a log is being written stating that the file has been checked and whether or not it is found to be infected. Additionally, the file itself can be marked as having been checked. If there is a problem with the integrity of the archive, that fact is also noted in the log. CheckOut will cause each EXE, COM, OVL, BIN, PIF, and SYS file as well as each ARC, PAK, ZIP, LZH, ZOO, SDN, ARJ, in the specified subdirectory to be scanned. The files which are not processed include those with a different extension than those noted above. Most of these will be data files, and since they are not executed, they can't do any harm. However, self-extracting archives are potentially harmful and are missed by both SCAN and the current version of CheckOut. CheckOut sees the "EXE" and thinks SCAN will check it and SCAN thinks it did check (it did, but for the wrong strings). The code exists now to process self-extracting archives, but was not included in this version because it can be outwitted fairly easily. It may be more muscular by the time the next version is released. SETUP: Each program that is to be used must be located on the path. No check is made, so if you don't use a compression type, you don't need the uncompressor. In the case of SCAN, a check is first made of the directory that CheckOut was executed from. If SCAN is located there, that one is used in preference to a version somewhere else on the path. The filenames that CheckOut might look for include: LHA.EXE PKUNZIP.EXE PKZIP.EXE ZOO.EXE PKUNPAK.EXE PKPAK.EXE PAK.EXE SCAN.EXE ARJ.EXE These programs must exist on the path if they are to be used. They can not be renamed, and they must be recent enough to handle the files which will be processed. The version of SCAN must be 9.1V97 or greater (SCANV97) because CheckOut uses features introduced in that version. Attempts to use an earlier version will cause SCAN to display a help screen rather than actually scanning. OPERATION: OPERATION: ////////// A. Command Line Operation: CheckOut can be operated from the command line, from a menuing system, or from a batch file. Command line operation is intended for simple tasks like scanning or converting a single file or group of files. You can specify a single file for scanning, or group of files in the current subdirectory, just by naming it. If the files to be processed reside in a different directory, you must specify the path to be scanned with a -s command. CheckOut foo.arc Scan foo CheckOut foo.arc -rz -v Put foo into a zip archive CheckOut *.* Scan all files in current subdirectory CheckOut -sx:\test\*.zip Scan all zip files on path The parameters are defined below. For more complicated situations, it is suggested that you invoke CheckOut with no parameters. That will put you into a menuing system. B. Operation from Menu: If you invoke CheckOut with no parameters, the following menu will appear. Within the menuing system there are error checks that are resistant to mistakes and from the menuing system you can write a batch file for subsequent unattended use. Subdirectory to process -s K:\UPLOADS Logging active -L yes Log subdirectory -o K:\ Bad Files subdirectory -B K:\BADFILES Move bad Archives -A yes Move Infected files -I yes Re-archive files -R no Use Time stamp code -T :: PCB DIRnn Files -P no ViruScan active -V yes Move Good files -G Write Batch File W Do It now D The Options are explain below. The command beside the menu option is the command to be used (and preceded with either "/" or "-") in a batch file. That letter will be displayed in a different color or otherwise enhanced on the screen display for most monitor types. The screen you see may look different as a result of where you execute the program. The default subdirectory to process is your location at execution. The default log directory and badfiles directory are off the root of the drive (physical or logical) that you start from. Subdirectory to process -s[filemask] Subdirectory to process -s[filemask] This entry specifies the subdirectory and files to be processed. The default is *.* in the subdirectory you specify, and the current subdirectory if you don't specify any. However, you can include a filemask identical to those used in DOS to select a smaller subset of files. For example that mask can be a filename, *.arc, etc. Unless you specify differently, each file (EXE, COM, OVL, BIN, PIF, SYS, ARC, PAK, ZIP, LZH, ZOO, SDN) in the subdirectory specified will be processed. SDN files are treated as the equivalent of PAK files Logging active Logging active -L -L Log subdirectory Log subdirectory -o -o By default, CheckOut.LOG is left in the root directory of the boot drive and looks as shown below. Each compressed file is given just one log entry. If, for example, A.LZH had three executable files and four embedded archives, it would have just one log entry and an "infection message" would apply to any or all three files. --testing D:\FILE\UP--------10/07/89 ABCDEFGH.LZH ok 10/07/89 A.LZH Virus detected B.PAK Missing files on path C.ZIP Problem in Archive D.ZOO DOS Error E.ARC ok 10/07/89 The command -L in a batch file stops logging and the -O command provides a new path. On the menus, just hitting the carriage return will toggle the L-variable from yes to no. Bad Files subdirectory Bad Files subdirectory -B -B Move bad Archives Move bad Archives -A -A Move Infected files Move Infected files -I -I If a badfile is found, a subdirectory called badfiles is created and all infected files (as well as bad archive files) are relocated there. A note is also made in the log, of course. At any time, you can get rid of both the file and the subdirectory but there is no possibility of it causing a problem just sitting there. Another path is specified by the -B command. The -A and -I are yes/no switches. Re-archive files -RL, -RZ, -RA, -RP, -RO, -RJ If the archives are to be converted to something else, this switch is used to specify the target format as follows: -RL convert all files to Lharc -RZ convert all files to Zip -RA convert all files to Arc -RP convert all files to Pak -RO convert all files to Zoo -RJ convert all files to Arj If you specify the -r switch, CheckOut will re-archive all files in the specified format. Even if all files are already in the target format, there are some advantages to rearchiving. The advantages are all the files are put in the same archive format, you make sure that nested archives are consistent, that is that there are no "arc" files buried within a "zip" package; all comments advertising other boards are eliminated; all files are maximally compressed; your own comments can be added without negating the advantages of the time stamp and there are a number of operations that you can perform automatically as discussed below. Nesting is performed as deep as you will want to go. All archives within archives will be converted to the format specified. Since CheckOut processes each level of nesting by going one level deeper with subdirectories, the theoretical level is the length of the DOS command line (120 characters) which would allow for something more than 20 levels. It hasn't been tested that deeply, however, so there might be some other DOS limitation which I am not aware of. During conversion, a running total of starting size and finish size is kept which is printed to both the screen and to CheckOut.log. These totals should be accurate regardless of whether the conversion process is completed or you exit prematurely with ^x. Use Time stamp code -T