home *** CD-ROM | disk | FTP | other *** search
/ Big Blue Disk 27 / bbd27.zip / FSP.TXT < prev    next >
Text File  |  1988-10-24  |  74KB  |  2,047 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.                              FLU_SHOT+, Version 1.4
  19.  
  20.                             A Form of Protection from
  21.                             Viral and Trojan Programs
  22.  
  23.  
  24.                                        by
  25.                                 Ross M. Greenberg
  26.                                        and
  27.                             Software Concepts Design
  28.                                 594 Third Avenue
  29.                             New York, New York 10016
  30.                        BBS:(212)-889-6438 1200|2400|N/8/1
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.               FLUSHOT+ is a trademark of Software Concepts Design.
  72.                 Copyright (C), 1988 by Software Concepts Design.
  73.                               All Rights Reserved.
  74.  
  75.  
  76.         Not for Commercial Distribution without written permission by the
  77.         copyright holder. Noncommercial copying of this software and this
  78.         documentation  is encouraged.   Commercial Distribution is easily
  79.         defined:  if  you  distribute  this  software,  or  the  enclosed
  80.         documentation, for more than your cost of such distribution, then
  81.         you're   a  Commercial  Distributor  and  require   our   written
  82.         permission.    Not-for-profit  organizations  and  computer  user
  83.         groups,   and   their   bulletin  board  systems  (if  any)   are
  84.         specifically *not* considered commercial distributors.
  85.  
  86.         By  your  using this software,  you agree to  the  terms  herein. 
  87.         Specifically,  that  you  do  not  have the right  to  copy  this
  88.         software  except as outlined above,  and that you are  granted  a
  89.         license to use this software only by registering this software as
  90.         mentioned elsewhere in this document.  (Legitimate subscribers to
  91.         the Big Blue Disk magazine may have a separate agreement allowing
  92.         them to use this code without registering, but the other terms of
  93.         this  agreement are still to be agreed to before you can use  the
  94.         program)
  95.  
  96.         You  also  agree,  and  signify  that  agreement  by  using  this
  97.         software,  that  Software Concepts Design and Ross  M.  Greenberg
  98.         will  not  be  held liable for any reason for any  cost  you  may
  99.         incur,  or  any  potential income you might lose as a  result  of
  100.         using this software.  Finally, this software is provided "AS IS",
  101.         meaning  that  what  you see is what you get.   If you  use  this
  102.         software  and a tree falls on your house,  or your spouse  leaves
  103.         you  for someone younger and more virile,  please do  not  bother
  104.         having your lawyer call -- it isn't the fault of the software, no
  105.         matter what the lawyer tries to convince you!
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.         Table of Contents
  138.  
  139.         I.   Introduction
  140.              a.   What is a Trojan.....................................1
  141.              b.   What is a Virus......................................4
  142.              c.   The Challenge to the Worm............................6
  143.  
  144.         II.  About the FLUSHOT Series
  145.              a.   A Brief History......................................8
  146.              b.   FLU_SHOT+ Features and Enhancements..................9
  147.              c.   Registering FLU_SHOT+................................10
  148.              d.   Site Licensing of FLU_SHOT+..........................10
  149.  
  150.         III. Using FLU_SHOT+
  151.  
  152.              a.   The FLUSHOT.DAT file.................................11
  153.                   1.   Protecting files from Write Access..............12
  154.                   2.   Protecting files from Read Access...............12
  155.                   3.   Excluding files.................................12
  156.                   4.   Checksumming files..............................13
  157.                   5.   Registering a TSR program.......................14
  158.                   6.   Protecting the FLUSHOT.DAT file.................14
  159.                   7.   Protection Recommendations......................15
  160.                   8.   Allowing "dangerous" programs to run............15
  161.  
  162.              b.   Running FLU_SHOT+....................................16
  163.                   1.   Checking CMOS - How often?......................16
  164.                   2.   Checksumming the in-memory table................16
  165.                   3.   Intercepting Direct Disk Writes Through INT13...17
  166.                   4.   What about INT26................................17
  167.                   5.   Turning off the header message..................17
  168.                   6.   Allowing trusted TSR's to work..................17
  169.                   7.   Disabling FLU_SHOT+.............................17
  170.                   8.   Disabling FLU_SHOT+ Toggle Display..............18
  171.                   9.   Forcing FLU_SHOT+ to only use the BIOS..........18
  172.                  10.   Putting FLU_SHOT+ to sleep when run.............18
  173.  
  174.         IV.  Interpreting a FLU_SHOT+ Trigger..........................19
  175.  
  176.         V.   How Good is FLUSHOT+, Really?.............................24
  177.  
  178.         VI.  Reward Offered............................................26
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   Introduction
  203.  
  204.         What is a Trojan?
  205.         =================
  206.  
  207.         Back  in the good old days (before there were  computers),  there
  208.         was  this  bunch  of  soldiers who had no  chance  of  beating  a
  209.         superior  force or of even making it into their  fortress.   They
  210.         had this nifty idea:   present the other side with a gift.   Once
  211.         the gift had been accepted, soldiers hiding within the gift would
  212.         sneak out and overtake the enemy from within.
  213.  
  214.         We can only think of the intellectual giants of the day who would
  215.         accept  a  gift  large enough to  house  enemy  soldiers  without
  216.         checking its contents.  Obviously, they had little opportunity to
  217.         watch  old WWII movies to see the same device used over and  over
  218.         again.   They  probably wouldn't have appreciated Hogan's  Heroes
  219.         anyway.   No  color  TV's -- or at least not ones  with  reliable
  220.         reception.
  221.  
  222.         Consider the types of people who would be thrilled at the concept
  223.         of owning their own rough hewn, large wooden horse!  Perhaps they
  224.         wanted  to  be the first one on their block,  or something  silly
  225.         like that.
  226.  
  227.         Anyway, you're all aware of the story of The Trojan Horse.
  228.  
  229.         Bringing ourselves a bit closer to the reality we've all grown to
  230.         know and love,  there's a modern day equivalent:   getting a gift
  231.         from  your  BBS or user group which contains a little  gem  which
  232.         will attack your hard disk, destroying whatever data it contains.
  233.  
  234.         In order to understand how a potentially useful program can cause
  235.         such damage when corrupted by some misguided soul, it's useful to
  236.         understand  how your disk works,  and how absurdly easy it is  to
  237.         cause  damage  to  the  data  contained  thereon.   So,  a  brief
  238.         technical  discussion of the operation of your disk is in  order. 
  239.         For those who aren't concerned, turn the page or something.
  240.  
  241.         Data  is preserved on a disk in a variety of  different  physical
  242.         ways  having  to do with how the data is encoding in  the  actual
  243.         recording  of  that data.  The actual *structure* of  that  data,
  244.         however,  is  the same between MS-DOS machines.   Other operating
  245.         systems have a different structure,  but that doesn't concern  us
  246.         now.
  247.  
  248.         Each  disk has a number of "tracks".  These are sometimes  called
  249.         cylinders from the old type IBMer's.   These are the same  people
  250.         who call hard disks DASDs (Direct Access Storage Devices),  so we
  251.         can safely ignore their techno-speak,  and just call them tracks. 
  252.         Tracks  can be thought of as the individual little grooves on  an
  253.         audio record, sort of.
  254.  
  255.         Anyway,  each track is subdivided into a number of sectors.  Each
  256.         track  has the same number of sectors.   Tracks are numbered,  as
  257.  
  258.  
  259.                                         1
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.         are  sectors.   Any given area on the disk can be accessed  if  a
  269.         request  is  made to read or write data into or out  of  Track-X,
  270.         Sector  Y.   The  read  or  write command is given  to  the  disk
  271.         controller, which is an interface between the computer itself and
  272.         the hard disk.   The controller figures out what commands to send
  273.         to the hard disk,  the hard disk responds and the data is read or
  274.         written as directed.
  275.  
  276.         The  first track on the hard disk typically will contain a  small
  277.         program  which  is read from the hard disk and executed when  you
  278.         first  power up your machine.   The power up sequence  is  called
  279.         "booting" your machine,  and therefore the first track is typical
  280.         known as the "boot track".
  281.  
  282.         In  order  to  read  information  from your  disk  in  a  logical
  283.         sequence,  there has to be some sort of index.   An unusual index
  284.         method was selected for MS-DOS.   Imagine going to the card index
  285.         in  a library,  looking up the title you desire,  and  getting  a
  286.         place  in another index which tells you where on the racks  where
  287.         the book is stored.   Now,  when you read the book,  you discover
  288.         that  only the first chapter of the book is there.   In order  to
  289.         find  the next chapter of the book,  you have to go back to  that
  290.         middle  index,  which tells you where the next chapter is stored. 
  291.         This  process  continues until you get to the end  of  the  book. 
  292.  
  293.         Sounds  pretty convoluted,  right?   You bet!   However,  this is
  294.         pretty much how MS-DOS does its "cataloguing" of files.
  295.  
  296.         The  directory structure of MS-DOS allows for you to look  up  an
  297.         item  called the "first cluster".   A cluster represents a set of
  298.         contiguous  ("touching or in contact" according to Random  House)
  299.         tracks  and sectors.   It is the smallest amount  of  information
  300.         which the file structure of MS-DOS knows how to read or write.
  301.  
  302.         Based on the first cluster number as stored in the directory, the
  303.         first  portion  of  a file can be  read.   When  the  information
  304.         contained  therein is exhausted,  MS-DOS goes to  that  secondary
  305.         index  for a pointer to the next cluster.   That index is  called
  306.         the  File Allocation Table,  commonly abbreviated to "FAT".   The
  307.         FAT contains an entry for each cluster on the disk.  An FAT entry
  308.         can  have a few values:  ones which indicate that the cluster  is
  309.         unused,  another which indicates that the associated cluster  has
  310.         been  damaged  somehow  and that it should be marked  as  a  "bad
  311.         cluster",  and  a  pointer to the next cluster for a given  file. 
  312.         This  allows for what is called a linked list:   once  you  start
  313.         looking up clusters associated with a given file,  each FAT entry
  314.         tells  you  what the next cluster is.   At the end of the  linked
  315.         list  is  a special indicator which indicates that there  are  no
  316.         more clusters associated with the file.
  317.  
  318.         There are actually two copies of the FAT stored on your disk, but
  319.         no  one  really  knows  what the second copy  was  intended  for. 
  320.         Often, if the first copy of the FAT is corrupted for some reason,
  321.         a  clever  programmer could recover information from  the  second
  322.         copy to restore to the primary FAT.  These clever programmers can
  323.  
  324.  
  325.                                         2
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.         be called "hackers",  and should not be confused with the thieves
  335.         who break into computer systems and steal things,  or the "worms"
  336.         [Joanne Dow gets credit for *that* phrase!] who would get joy out
  337.         of causing you heartache!
  338.  
  339.         But  that  heartache is exactly what can happen if the  directory
  340.         (which  contains the pointer to the first cluster a  file  uses),
  341.         the  FAT  (which contains that linked list to other areas on  the
  342.         disk  which  the  file uses),  or other areas  of  the  disk  get
  343.         corrupted.
  344.  
  345.         And  that's what the little worms who create Trojan programs  do: 
  346.         they  cause  what  at  first appears to be a  useful  program  to
  347.         eventually corrupt the important parts of your disk.  This can be
  348.         as simple as changing a few bytes of data,  or can include wiping
  349.         entire tracks clean.
  350.  
  351.         Not  all  programs  which write to your hard disk are  bad  ones,
  352.         obviously.    Your  word  processor,  spreadsheet,  database  and
  353.         utility programs have to write to the hard disk.  Some of the DOS
  354.         programs  (such as FORMAT),  if used improperly,  can also  erase
  355.         portions of your hard disk causing you massive amounts of  grief. 
  356.         You'd  be  surprised what damage the simple "DEL" command can  do
  357.         with just a simple typo.
  358.  
  359.         But, what defines a Trojan program is its delivery mechanism: the
  360.         fact  that you're running something you didn't  expect.   Typical
  361.         Trojan programs cause damage to your data,  and were designed  to
  362.         do  so by the worms who writhe in delight at causing this damage. 
  363.         May they rot in hell -- a mind is a terrible thing to waste!
  364.  
  365.         Considering  the personality required to cause such  damage,  you
  366.         can  rest  assured  that they have few friends,  and  even  their
  367.         mother doesn't like to be in the same room with them.   They  sit
  368.         back  and chortle about the damage they do with a few other lowly
  369.         worms.   This  is their entire social universe.  You should  pity
  370.         them.  I know that I do.
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.                                         3
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   Introduction
  401.  
  402.         What is a Virus?
  403.         ================
  404.  
  405.         Trojan  programs are but a delivery mechanism,  as stated  above. 
  406.         They  can  be implemented in a clever manner,  so that they  only
  407.         trigger  the  malicious part on a certain date,  when  your  disk
  408.         contains certain information or whatever.  However they're coded,
  409.         though,  they  typically  affect the disk only in  a  destructive
  410.         manner once triggered.
  411.  
  412.         A new breed of programs has the capability of not only  reserving
  413.         malicious  damage  for a given event's occurrence,  but  of  also
  414.         replicating itself as well.
  415.  
  416.         This  is what people refer to when they mention the  term  "Virus
  417.         Program".
  418.  
  419.         Typically, a virus will spread itself by replicating a portion of
  420.         itself  onto another program.   Later,  when that  normally  safe
  421.         program  is run it will,  in part,  execute a set of instructions
  422.         which  will infect other programs and then  potentially,  trigger
  423.         the Trojan portion of the program contained within the virus.
  424.  
  425.         The danger of the virus program is twofold.  First, it contains a
  426.         Trojan  which will cause damage to your hard  disk.   The  second
  427.         danger is the reason why everyone is busy building bomb shelters. 
  428.         This danger is that the virus program will infect other  programs
  429.         and  they  in  turn  will infect other  programs  and  so  forth. 
  430.         Since it can also infect programs on your floppy disks, you could
  431.         unknowingly  infect  other  machines!   Pretty  dangerous  stuff,
  432.         alright!
  433.  
  434.         Kenneth  van  Wyck,  one  of the computer folks  over  at  Lehigh
  435.         University,  first brought a particular virus to the attention of
  436.         the  computer  community.   This virus infects a  program,  which
  437.         every MS-DOS computer must have, called COMMAND.COM.  This is the
  438.         Command  Line  Interpreter  and is  the  interface  between  your
  439.         keyboard  and the MS-DOS operating system itself.   Whatever  you
  440.         type at the C> prompt will be interpreted by it.
  441.  
  442.         Well,  the  virus  subverts this intended function,  causing  the
  443.         infection  of  neighboring COMMAND.COMs  before  continuing  with
  444.         normal  functionality of the command you typed.   After a certain
  445.         number  of "infections",  the Trojan aspect of the  program  goes
  446.         off, causing you to lose data.
  447.  
  448.         The  programmer  was  clever.   But  still  a  worm.   And  still
  449.         deserving  of contempt instead of respect.   Think of  what  good
  450.         purposes  the  programmer  could have put his or her  talents  to
  451.         instead  of  creating  this  damage.    And  consider  what  this
  452.         programmer  must  do,  in covering up what  they've  done.   They
  453.         certainly   can't   tell  anyone   what   they've   accomplished. 
  454.         Justifiable homicide comes to mind, but since the worms they must
  455.  
  456.  
  457.                                         4
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.         hang  around are probably as disreputable as they are,  they must
  467.         hold their little creation a secret.
  468.  
  469.         A pity.   Hopefully, the worm is losing sleep.  Or getting a sore
  470.         neck  looking behind them wondering which of their "friends"  are
  471.         gonna turn them in for the reward I list towards the end of  this
  472.         document.
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.                                         5
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   Introduction
  533.  
  534.         The Challenge to the Worm
  535.         =========================
  536.  
  537.         When  I first released a program to try to thwart their  demented
  538.         little efforts,  I published this letter in the archive (still in
  539.         the FLU_SHOT+ archive of which this is a part of).  What I say in
  540.         it still holds:
  541.         
  542.                  As for the designer of the virus program: most
  543.                  likely  an impotent adolescent,  incapable  of
  544.                  normal social relationships, and attempting to
  545.                  prove  their  own worth to themselves  through
  546.                  these type of terrorist attacks.
  547.  
  548.                  Never  succeeding  in  that task  (or  in  any
  549.                  other),  since they have no worth,  they  will
  550.                  one  day  take a look at themselves  and  what
  551.                  they've   done   in  their  past,   and   kill
  552.                  themselves in disgust.   This is a Good Thing,
  553.                  since  it  saves the  taxpayers'  money  which
  554.                  normally   would  be  wasted  on  therapy  and
  555.                  treatment of this miscreant.
  556.  
  557.                  If they *really* want a challenge, they'll try
  558.                  to destroy *my* hard disk on my  BBS,  instead
  559.                  of  the  disk  of  some  innocent  person.   I
  560.                  challenge  them  to  upload a virus  or  other
  561.                  Trojan  horse to my BBS that I  can't  disarm. 
  562.                  It  is  doubtful the challenge will be  taken:
  563.                  the  profile of such a person  prohibits  them
  564.                  from  attacking  those  who  can  fight  back. 
  565.                  Alas,  having a go with this  lowlife would be
  566.                  amusing  for  the  five minutes  it  takes  to
  567.                  disarm whatever they invent.
  568.  
  569.                  Go   ahead,    you   good-for-nothing   little
  570.                  slimebucket:  make *my* day!
  571.  
  572.  
  573.         Alas,  somebody  out there opted to do the cowardly thing and  to
  574.         use  the  FLUSHOT programs as a vehicle for wrecking  still  more
  575.         destruction  on  people  like  you.   The  FLUSHOT3  program  was
  576.         redistributed  along  with  a  companion program to  aid  you  in
  577.         reading  the documentation.   It was renamed FLUSHOT4.   And  the
  578.         reader program was turned into a Trojan itself.
  579.  
  580.         I guess the programmer involved was too cowardly to take me up on
  581.         my offer and prefers to hurt people not capable of fighting back. 
  582.         I should have known that,  I suppose,  but I don't normally think
  583.         of people who attack innocents.  Normally,  I think of people  to
  584.         respect,  not people to pity, certainly not people who must cause
  585.         such damage in order to "get off".
  586.  
  587.  
  588.  
  589.                                         6
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.         They  are below contempt,  obviously,  and can do little to help
  599.         themselves out of the mire they live in.
  600.  
  601.         Still, a worm is a worm.
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.                                         7
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   About FLUSHOT
  665.  
  666.         A Brief History
  667.         ===============
  668.  
  669.         The  original incarnation of FLU_SHOT was a quick hack done in my
  670.         spare  time.   It had a couple of bugs in it which caused  it  to
  671.         trigger  when it shouldn't,  and a few conditions which I had  to
  672.         fix.    A   strangeness  in  how  COMMAND.COM  processed  certain
  673.         conditions  when  I "failed" an operation caused people  to  lose
  674.         more data than they had intended -- certainly not my intent!
  675.  
  676.         FLU_SHOT  was  modified and became FLUSHOT2.   It  included  some
  677.         additional  protections,  protecting some other important  system
  678.         files,  and  protecting  against direct disk writes which can  be
  679.         used to circumvent FLUSHOT's protection mechanisms.
  680.  
  681.         Additionally,  FLUSHOT2  forced an exit of the program  currently
  682.         running  instead of a fail condition when you indicated  that  an
  683.         operation should not be carried out.
  684.  
  685.         FLUSHOT2  was also now distributed in the popular archive  format
  686.         (have  you remembered to send your shareware check into Phil Katz
  687.         for his efforts?  You really should.  It ain't that much money!).
  688.  
  689.         Next  came  FLUSHOT3.  A  bug was fixed which could  have  caused
  690.         certain  weird things when you denied direct disk I/O to  certain
  691.         portions of DOS 3.x.
  692.  
  693.         The enhancements to FLUSHOT3 included the ability to enter a  'G'
  694.         when  FLUSHOT  was  triggered.   This allowed FLUSHOT  to  become
  695.         inactive  until an exit was called by the foreground  task.   So,
  696.         when you used some trustworthy program which did direct disk I/O,
  697.         you wouldn't be pestered with constant triggering after you enter
  698.         the 'G'.   Primarily this was a quick hack to allow programs such
  699.         as the FORMAT program to run without FLUSHOT being triggered each
  700.         time it tried to do any work it was supposed to.
  701.  
  702.         Additionally,  a  CMOS RAM check was installed.  If a  foreground
  703.         program attempted to change CMOS memory, you'd be advised.
  704.  
  705.         What  the  heck  is CMOS  memory,  you  might  be  asking.   Good
  706.         question.   In  AT class and better machines,  certain  important
  707.         parameters  (such as the type of hard disk you're using,  or  how
  708.         much  memory  there is in your machine) are stored up in  special
  709.         non-volatile memory, called CMOS.
  710.  
  711.         If  this gets changed,  you might have a problem when you reboot.
  712.         FLUSHOT3  sends  at  least one little  slimebucket  back  to  the
  713.         drawing board,  because it will restore the CMOS and prevent this
  714.         hassle from occurring.
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.                                         8
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   About FLUSHOT
  731.  
  732.         FLU_SHOT+ Features and Enhancements
  733.         ===================================
  734.  
  735.         This  release of FLU_SHOT has a  new  name:  FLU_SHOT+.   Because
  736.         FLUSHOT4  was  a Trojan,  I opted to change the  name.   Besides,
  737.         FLU_SHOT+ is the result of some real effort on my  part,  instead
  738.         of being a part-time quick hack.  I hope the effort shows.
  739.  
  740.         FLUSHOT  is  now table driven.   That table is in a file which  I
  741.         call  FLUSHOT.DAT.   It  exists in the root directory on your  C:
  742.         drive.   However,  I'll  advise  you later on how to  change  its
  743.         location  so  that a worm can't create a Trojan  to  modify  that
  744.         file.
  745.  
  746.         This  file  now allows you to write and/or  read  protect  entire
  747.         classes of programs.   This means that you can write protect from
  748.         damage all of your *.COM, *.EXE, *.BAT, and *.SYS files.  You can
  749.         read  protect all of your *.BAT files so that a nasty program can
  750.         not  even  determine what name you used for  FLU_SHOT+  when  you
  751.         invoked it!
  752.  
  753.         Additionally,  you  can now automatically check programs when you
  754.         first invoke FLU_SHOT+ to determine if they've changed since  you
  755.         last looked at them.   Called checksumming, it allows you to know
  756.         immediately  if  one of the protected programs has  been  changed
  757.         when  you're not looking.   Additionally,  this checksumming  can
  758.         even take place each time you load the program for execution.
  759.  
  760.         Also, FLU_SHOT+ will advise you when any program "goes TSR".  TSR
  761.         stands  for "Terminate and Stay Resident",  allowing pop-ups  and
  762.         other  useful  programs  to be created.   A worm could  create  a
  763.         program  which  leaves  a bit of  slime  behind.   Programs  like
  764.         Borland's SideKick program, a wonderful program and certainly not
  765.         a  Trojan or virus,  is probably the best known TSR.    FLU_SHOT+
  766.         will  advise  you  if any program attempts to go  TSR  which  you
  767.         haven't already registered in your FLUSHOT.DAT file.
  768.  
  769.         Finally,  FLU_SHOT+  will also now pop-up a little window in  the
  770.         middle of your screen when it gets triggered.   It also will more
  771.         fully explain why it was triggered.  The pop-up window means that
  772.         your  screen  won't get screwed up beyond  recognition  -- unless
  773.         you're  in  graphics mode when it  pops  up.   Sorry,  'dems  the
  774.         breaks!
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.                                         9
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   About FLUSHOT
  797.  
  798.         Registering FLU_SHOT+
  799.         =====================
  800.  
  801.         FLU_SHOT+ is not a free program.  You're encouraged to use it, to
  802.         distribute it to your friends and co-workers.   If you end up not
  803.         using  it for some reason,  let me know why and I'll see if I can
  804.         do something about it in the next release.
  805.  
  806.         But, the right to use FLU_SHOT+ is contingent upon you paying for
  807.         the  right to use it.   I ask for ten dollars as  a  registration
  808.         fee, plus a four dollar shipping and handling fee.  This entitles
  809.         you to get the next update shipped to when available.  And allows
  810.         you  to  pay me,  in part,  for my labor in creating  the  entire
  811.         FLU_SHOT series.  I don't expect to get my normal consulting rate
  812.         or  to  get a return equal to that of other programs  which  I've
  813.         developed and sell through more traditional channels.  That's not
  814.         my  intent,  or I would have made FLU_SHOT+ a commercial  program
  815.         and you'd be paying lots more money for it.
  816.  
  817.         Some  people  are uncomfortable with the  shareware  concept,  or
  818.         believe  that  there  ain't  no such thing  as  Trojan  or  Virus
  819.         programs,  and that a person who profits from the distribution of
  820.         a program such as FLU_SHOT must be in it for the money.
  821.  
  822.         I've  created  an  alternative for these  folks.   I'll  call  it
  823.         "charityware"  [first  called that,  to my  knowledge,  by  Roedy
  824.         Green].   You  can also register FLU_SHOT+ by sending me a  check
  825.         for $10 made out to your favorite charity.   Be sure to include a
  826.         stamped  and addressed envelope.   I'll forward the  monies  onto
  827.         them and register you fully.
  828.  
  829.         Of  course,  if you wish,  you can send me a check for more  than
  830.         $10.  I'll cash it gladly (I'm no fool!).
  831.  
  832.         [Subscribers  of  the  Big  Blue Disk  are  still  encouraged  to
  833.         register  this program,  although a special arrangement with  Big
  834.         Blue  allows  them to distribute this program  without  requiring
  835.         that  subscribers of the program register it.   However,  if  you
  836.         don't register it diorectly with us, you won't be entitled to any
  837.         technical  support  from us,  nor will you be advised  of  future
  838.         releases.  For  more  information,  contact  Big  Blue  directly. 
  839.         They're  pretty  reasonable folks and can provide you  with  very
  840.         good technical support.]
  841.  
  842.         Site Licensing of FLU_SHOT+
  843.         ===========================
  844.  
  845.         So, you run the computer department of a big corporation, you got
  846.         a  copy of FLU_SHOT+,  decided it was wonderful and that it   did
  847.         everything  you  wanted and sent in your  ten  bucks.   Then  you
  848.         distributed it to your 1000 users.
  849.  
  850.  
  851.  
  852.  
  853.                                        10
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.         Not what is intended by the shareware scheme.   *Each* site using
  864.         FLU_SHOT+  should  be registered.   That's ten bucks a  site,  me
  865.         bucko!    Again,   make  the  check  out  to  charity  if  you're
  866.         uncomfortable with the idea of a programmer actually deriving  an
  867.         income from their work.
  868.  
  869.         However,  if you've really got 1000 computers, you should give me
  870.         a  call.   As  much as I'd like to get $10 for  each  site,  that
  871.         wouldn't be fair to you.  So, quantity discounts are available.
  872.  
  873.         Shipping and Handling
  874.         =====================
  875.         Each  order  for  FLU_SHOT+ must also include a $4  shipping  and
  876.         handling charge.  Sorry, but the economics don't allow me not to.
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.                                        11
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                  Using FLU_SHOT+
  929.  
  930.         The FLUSHOT.DAT file
  931.         ====================
  932.  
  933.         FLU_SHOT+  is  table  driven by the contents of  the  FLUSHOT.DAT
  934.         file.  This file normally exists in the root directory of your C:
  935.         drive (C:\FLUSHOT.DAT).
  936.  
  937.         A  little  later in this document you'll see how to disguise  the
  938.         data file name, making life tougher for the worms out there.  But
  939.         for the purposes of this document,  we'll assume that the file is
  940.         called C:\FLUSHOT.DAT.
  941.  
  942.         The FLU_SHOT+ program will read this data file exactly  once.  It
  943.         reads the data from the data file into memory and overwrites  the
  944.         name of the data file in so doing.   A little extra protection in
  945.         hiding the name of the file.
  946.  
  947.         This data file contains a number of lines of text.   Each line of
  948.         text is of the form:
  949.  
  950.         <Command>=<filename><options>
  951.  
  952.         Command can be any one of the following characters:
  953.  
  954.              P    -    Write Protect the file named
  955.              R    -    Read Protect the file named
  956.              E    -    Exclude the file named from matching P or R lines
  957.              T    -    The named file is a legitimate TSR
  958.              C    -    Perform checksum operations on the file named
  959.  
  960.         The   filename  can  be an ambiguous file if  you  wish  for  all
  961.         commands except the 'T' and 'C' commands.  This means that:
  962.  
  963.              C:\level1\*.COM
  964.  
  965.         will  specify  all  COM  files on your C:  drive  in  the  level1
  966.         directory (or its sub-directories). Specifying:
  967.  
  968.              C:\level1\*\*.EXE
  969.  
  970.         would specify all EXE files in subdirectories under the C:\level1
  971.         directory, but would not include that directory itself.
  972.  
  973.         You can also use the '?' operator to specify ambiguous characters
  974.         as in:
  975.  
  976.              ?:\usr\bin\?.COM
  977.  
  978.         would  be  used  to specify files on any drive  in  the  \usr\bin
  979.         directory  on  that  drive.   The files would have to  be  single
  980.         letter filenames with the extension of 'COM'.
  981.  
  982.         Ambiguous file names are not allowed for the 'T' and 'C' options.
  983.  
  984.  
  985.                                        12
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                  Using FLU_SHOT+
  995.  
  996.         Protecting files from Write Access
  997.         ==================================
  998.  
  999.         Use  the  'P='  option to protect files from  write  access.   To
  1000.         disallow  writes to any of your COM,  EXE,  SYS,  and BAT  files,
  1001.         specify lines of the form:
  1002.  
  1003.              P=*.COM
  1004.              P=*.EXE
  1005.              P=*.SYS
  1006.              P=*.BAT
  1007.  
  1008.         which protects these files on any disk, in any directory.
  1009.  
  1010.         Protecting files from Read Access
  1011.         =================================
  1012.  
  1013.         Similarly,  you  can  use the 'R' command to protect  files  from
  1014.         being  read  by  a program (including the  ability  to  'TYPE'  a
  1015.         file!).   To prevent read access to all of your BAT files,  use a
  1016.         line such as:
  1017.  
  1018.              R=*.BAT
  1019.  
  1020.         Combinations of R and P lines are allowed,  so the combination of
  1021.         the  above lines would prevent read or write access to all  batch
  1022.         files.
  1023.  
  1024.         Excluding files
  1025.         ===============
  1026.  
  1027.         Programmers  in particular should find usage for the 'E' command. 
  1028.         This  allows  you to exclude matching filenames from other  match
  1029.         operations.    Assume  you're  doing  development  work  in   the
  1030.         C:\develop directory.
  1031.  
  1032.         You  could exclude FLU_SHOT+ from being triggered by including  a
  1033.         line such as:
  1034.  
  1035.              E=C:\develop\*.*
  1036.  
  1037.         Of course,  you might have development work on many disks under a
  1038.         directory  of that name.   If you do,  you might include  a  line
  1039.         which looks like:
  1040.  
  1041.              E=?:\develop\*.*
  1042.                   or
  1043.              E=*\develop*
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.                                        13
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.         Checksumming files
  1062.         ==================
  1063.  
  1064.         This  line is a little more complicated than others and  involves
  1065.         some setup work.  It's worth it though!
  1066.  
  1067.         A  checksum  is a method used to reduce a files validity  into  a
  1068.         single  number.   Adding up the values of the bytes which make up
  1069.         the file would be a simple checksum method.   Doing more  complex
  1070.         mathematics  allows for more and more checking information to  be
  1071.         included in a test.
  1072.  
  1073.         If you use a lie on the form:
  1074.  
  1075.              C=C:\COMMAND.COM[12345]
  1076.  
  1077.         then when FLU_SHOT+ first loads it will check the validity of the
  1078.         file against the number in the square brackets.   If the checksum
  1079.         calculated does not match the number presented, you'll be advised
  1080.         with  a  triggering  of  FLUSHOT,   which  presents  the  correct
  1081.         checksum.
  1082.  
  1083.         When  you first set up your FLUSHOT.DAT file,  use a dummy number
  1084.         such  as  '12345'  for each of the files you  wish  to  checksum. 
  1085.         Then,  when you run FLUSHOT, you should copy down the "erroneous"
  1086.         checksum presented.   Then, edit the FLUSHOT.DAT file and replace
  1087.         the  dummy number with the actual checksum value you  had  copied
  1088.         down.  Voila!  If  even  one byte in the is  changed,  you'll  be
  1089.         advised the next time you run FLU_SHOT+.
  1090.  
  1091.         But wait! There's more! Not available in stores!
  1092.  
  1093.         Sorry.  I got carried away.
  1094.  
  1095.         Seriously, there is more.  When a "checksummed" file is loaded by
  1096.         MS-DOS,  it will,  by default,  be checksummed again.  So, if you
  1097.         had a line such as:
  1098.  
  1099.              C=C:\usr\bin\WS.COM[12345]
  1100.  
  1101.         the venerable old WordStar program (still *my* editor of choice!)
  1102.         would be checksummed each time you went to edit a file.
  1103.  
  1104.         Of  course,  you might not want the overhead of that checksumming
  1105.         to  take place each time you load a program.   Therefore,  a  few
  1106.         switches  have been added.   The switches are  place  immediately
  1107.         after the ']' in the checksum line:
  1108.  
  1109.              C=C:\usr\bin\WS.COM[12345]<switch>
  1110.  
  1111.         These switches are:
  1112.  
  1113.              ,n   -    will  only checksum the file only 'n' times.  Only
  1114.                        one digit allowed.
  1115.  
  1116.  
  1117.                                        14
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.              -    -    Only  checksum  this  file  when  FLU_SHOT+  first
  1128.                        loads.  ',1' and '-' are equivalent.
  1129.  
  1130.              +    -    Only  checksum  this  file when it is  loaded  and
  1131.                        executed, not when FLU_SHOT+ first loads
  1132.  
  1133.         Therefore,  if you wished to only check your WS.COM file when you
  1134.         first loaded the FLU_SHOT+ program, you'd specify a line as:
  1135.  
  1136.              C=C:\usr\bin\ws.com[12345],1
  1137.                   or
  1138.              C=C:\usr\bin\ws.com[12345]-
  1139.  
  1140.         If  you wished to checksum your program called "MY_PROG.EXE" only
  1141.         when it was used, try:
  1142.  
  1143.              C=C:\path\MY_PROG.EXE+
  1144.  
  1145.  
  1146.         Registering a TSR program
  1147.         =========================
  1148.  
  1149.         Any  unregistered  TSR program which is run after FLU_SHOT+  will
  1150.         cause a trigger when they "go TSR".   You can register a  program
  1151.         so no trigger goes off by specifying it in a line such as:
  1152.  
  1153.              T=C:\usr\bin\tsr_s\sk.com
  1154.  
  1155.         which  will keep FLU_SHOT+ from complaining about  sk.com.   Make
  1156.         sure  to  take a look at the '-T' option,  specified in the  next
  1157.         section.
  1158.  
  1159.  
  1160.         Protecting the FLUSHOT.DAT file
  1161.         ===============================
  1162.  
  1163.         Obviously,  the  weak link in the chain of the  protection  which
  1164.         FLU_SHOT+ offers you is the FLUSHOT.DAT file.
  1165.  
  1166.         You  would think that you'd want to protect the FLUSHOT.DAT  file
  1167.         from  reads and writes as specified above.   However  this,  too,
  1168.         leaves  a gaping security hole:  memory could be searched for it,
  1169.         and it could be located that way.   A better alternative  exists. 
  1170.         In  the distribution package for FLUSHOT+ exists a program called
  1171.         FLU_POKE.COM.   This  program allows you to specify the new  name
  1172.         you wish to call the FLUSHOT.DAT file. Simply type:
  1173.  
  1174.              FLU_POKE <flushot_name>
  1175.  
  1176.         where  <flushot_name>  represents the full path filename of  your
  1177.         copy of FLU_SHOT+.
  1178.  
  1179.         You'll be prompted for the name of the FLUSHOT.DAT  file.   Enter
  1180.         the  name  you've  selected  (remember to specify  the  disk  and
  1181.  
  1182.  
  1183.                                        15
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.         directory as part of the name).  Voila!  Nothing could be easier.
  1193.  
  1194.         Protection Recommendations
  1195.         ==========================
  1196.  
  1197.         Here's a sample FLUSHOT.DAT file, basically the same one included
  1198.         in the archive.  Your actual checksums will differ, and you may
  1199.         want to modify what files and directories are protected.
  1200.         Obviously, your exact needs are different than mine, so consider
  1201.         this a generic FLUSHOT.DAT:
  1202.  
  1203.         P=*.bat
  1204.         P=*.sys
  1205.         P=*.exe
  1206.         P=*.com
  1207.         R=*AUTOEXEC.BAT
  1208.         R=*CONFIG.SYS
  1209.         E=?\dev\*
  1210.         C=C:\COMMAND.COM[12345]-
  1211.         C=C:\IBMBIO.COM[12345]-
  1212.         C=C:\IBMDOS.COM[12345]-
  1213.  
  1214.         Allowing "dangerous" programs to run
  1215.         ====================================
  1216.         In  some  cases,  though,  you'll still want the ability  to  ler
  1217.         "trusted"  programs  to  run  -- even  if  they  are  potentially
  1218.         dangerous.   A  good example of this is the DOS  FORMAT  program: 
  1219.         here  is a program specifically designed to overwrite the data on
  1220.         your disk in such a way that it would be difficult,  at best,  to
  1221.         recover.  Yet, the program is a necessary part of your day-to-day
  1222.         computer usage.
  1223.  
  1224.         Therefore,  the 'X=' switch has been added in to allow a  program
  1225.         such as FORMAT to run without interruption.   THIS IS A POTENTIAL
  1226.         SECURITY HOLE.   To prevent an 'X=' program from being corrupted,
  1227.         I suggest you also include any 'X=' program as both a 'C=' and  a
  1228.         'P='  program  as  well:  any  writes to  the  file  would  cause
  1229.         FLU_SHOT  to trigger,  and you wouldn't be able to run a modified
  1230.         program  without  first giving  FLU_SHOT  permission.   Use  'X='
  1231.         sparingly.  I'm rather uncomfortable with it myself.
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.                                        16
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                                Invoking FLU_SHOT+
  1259.  
  1260.         Running FLUSHOT+
  1261.         ================
  1262.  
  1263.         For  extra  protection,  after you've run  FLU_POKE,  you  should
  1264.         rename  the FLU_SHOT+ program is something unique and  meaningful
  1265.         to you, but not a worm.
  1266.  
  1267.         Assuming  you didn't rename it,  however,  you could  invoke  the
  1268.         program simply by typing:
  1269.  
  1270.              FSP
  1271.  
  1272.         when  at the prompt.   That's all there is to  it.   When  you're
  1273.         satisfied, you can add it to your AUTOEXEC.BAT file, after all of
  1274.         your trusted programs have run.
  1275.  
  1276.         But there are some options you should know about:
  1277.  
  1278.         Checking CMOS - How often?
  1279.         ==========================
  1280.  
  1281.         The  CMOS,  as  described  earlier in this document,  is  a  spot
  1282.         wherein a worm can just make things a bit miserable for you  when
  1283.         you  next  boot your system.   However,  FLU_SHOT+ allows you  to
  1284.         protect the contents of your CMOS against such a worm.
  1285.  
  1286.         *CMOS Only exists on AT class and better machines!!!*
  1287.  
  1288.         You  must specify the '-C' option when you invoke  the  FLU_SHOT+
  1289.         program in order to have your CMOS safeguarded.  There is a check
  1290.         done  whenever  DOS  is  accessed to determine if  the  CMOS  has
  1291.         changed.   This  causes  a slight performance penalty.   CMOS  is
  1292.         checked on a regular basis  -- a reasonable trade-off between the
  1293.         utility  of  the  CMOS  check  and  the  annoyance  of  a  slight
  1294.         performance degradation.   The default is set to one second.  You
  1295.         may modify that default,  if you wish, by using the '-In' option,
  1296.         where  the 'n' represents how frequently,  in seconds you wish to
  1297.         have CMOS checked.
  1298.  
  1299.         Checksumming the in-memory table
  1300.         ================================
  1301.         Since  the  wily  worm may well be able to  thwart  some  of  the
  1302.         efforts  of  FLU_SHOT+ by playing nasty games with the  in-memory
  1303.         copy  of  the FLUSHOT.DAT file,  FLU_SHOT+ will also  check  this
  1304.         table against a checksum it generates on a regular basis.  If the
  1305.         table  gets corrupted,  you'll be advised of it.   This table  is
  1306.         checked with the same frequency as the CMOS is checked,  and this
  1307.         frequency  can,  therefore,  be changed with the '-In' option  as
  1308.         well.
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.                                        17
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.         Intercepting Direct Disk Writes Through INT13
  1325.         =============================================
  1326.  
  1327.         The  default operation of FLU_SHOT+ is to intercept  and  examine
  1328.         every  call to the direct disk routines.   You can *disable* this
  1329.         by including the '-F' switch on your command line:
  1330.  
  1331.              FSP -F
  1332.  
  1333.         This is not recommended,  but exists primarily for developers who
  1334.         can't  use  the  constant triggering one of  their  programs  may
  1335.         cause.
  1336.  
  1337.  
  1338.         What about INT26
  1339.         ================
  1340.         Similarly,  the same exists for the direct writes which normally
  1341.         are  only  made by DOS through interrupt 26.   Again,  I  do  not
  1342.         recommend you disable the checking,  but if you desire to do  so,
  1343.         use the '-D' switch.
  1344.  
  1345.         Turning off the header message
  1346.         ==============================
  1347.         If  you've  no desire to see the rather lengthy  welcome  message 
  1348.         which  is  displayed when you first use FLU_SHOT+,  use the  '-h'
  1349.         switch.
  1350.  
  1351.  
  1352.         Allowing Trusted TSR's to Work
  1353.         ==============================
  1354.         Normally, you'd load all of your trusted TSR's before FLUSHOT+ is
  1355.         loaded from within your AUTOEXEC.BAT file.   However,  you  might
  1356.         want to use SideKick once in a while,  removing it from memory as
  1357.         you desire.   This could cause some problems, since SideKick, and
  1358.         programs  like it,  take over certain interrupts,  and  FLU_SHOT+
  1359.         could  get confused about whether this is a valid call or a  call
  1360.         that shouldn't be allowed.   Normally,  FLU_SHOT+ will trigger on
  1361.         these calls, which is safer, but can be annoying.  If you use the
  1362.         special  '-T'  switch upon program invocation,  then calls  which
  1363.         trusted  TSR's  (those specified with the 'T='  command  in  your
  1364.         FLUSHOT.DAT file) make will be allowed.  Understand, please, that
  1365.         this  basically means that calls made by a Trojan while a trusted
  1366.         TSR is loaded may not be caught.   Please,  use this switch  with
  1367.         caution!
  1368.  
  1369.         Disabling FLU_SHOT+
  1370.         ===================
  1371.         There  may  be times when you're about to do some work which  you
  1372.         know  will  trigger  FLU_SHOT+.   And you might not  want  to  be
  1373.         bothered with all of the triggering,  the pop-up windows and your
  1374.         need to respond to each trigger.   If you look in the upper right
  1375.         hand  corner  of  your screen,  you'll  see  a  '+'  sign.   This
  1376.         indicates  that FLU_SHOT+ is monitoring and attempting to protect
  1377.         your system.   Depress the ALT key three times.   Notice that the
  1378.         '+' sign' turned into a '-'?   Well,  FLU_SHOT+ is now  disabled,
  1379.  
  1380.  
  1381.                                        18
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.         and  will not trigger on any event.   If you depress the ALT  key
  1391.         three more times, you'll see the '-' turn back into a '+' -- each
  1392.         time  you depress the ALT key three times,  FLU_SHOT+ will toggle
  1393.         between being enabled and disabled.
  1394.  
  1395.         Disabling FLU_SHOT+ Toggle Display
  1396.         ==================================
  1397.         Alas, there are graphics applications which will be screwed up be
  1398.         the  '-'  or '+' in the upper right hand corner of your  display.
  1399.         Therefore,  if  you depress the CTRL key three times,  you'll  be
  1400.         able to toggle the display capability of FLU_SHOT+.   The default
  1401.         configuration  of FLU_SHOT+ is to "come up" with  display  turned
  1402.         on.  You can reverse this capability if you include the '-G' (for
  1403.         graphics) switch on your command line when you run FLU_SHOT+.
  1404.  
  1405.         Forcing FLU_SHOT+ to only use the BIOS
  1406.         ======================================
  1407.  
  1408.         Certain  machines  are not totally compatible with the IBM  BIOS,
  1409.         which  is  the BIOS for which  FLU_SHOT+  was  written.   Because
  1410.         FLU_SHOT  has  to be able to deal with the hardware in  a  pretty
  1411.         direct manner in order to "pop-up" a screen,  these machines were
  1412.         not able to use FLU_SHOT.  If you specify the '-B' switch in your
  1413.         command  line  when you first run FLU_SHOT+,  then only the  BIOS
  1414.         will  be used for screen output.   This is  *drastically*  slower
  1415.         than  direct  screen  memory writes (the method used  unless  you
  1416.         specify to use the BIOS), but at least it works.
  1417.  
  1418.         Putting FLU_SHOT+ to sleep when run
  1419.         ===================================
  1420.         One  of  the  idiosyncrasies  of  DOS is  how  a  batch  file  is
  1421.         processed.   Basically,  DOS opens the batch file, reads the next
  1422.         command,  closes the batch file,  executes the command,  and then
  1423.         starts over again until the batch file is exhausted of commands.
  1424.  
  1425.         This would,  normally,  not be a problem, but can become when you
  1426.         opt to place the FLU_SHOT command line in your AUTOEXEC.BAT  file
  1427.         *and*  you've  opted to Read Protect (with the 'R='  option)  the
  1428.         AUTOEXEC  file  itself:   you'll be advised that some program  is
  1429.         reading  this  protected file.   Not  a  big  deal,  really,  but
  1430.         certainly a hassle when you fist boot up your system.  Therefore,
  1431.         protections within FLU_SHOT are not turned on a certain amount of
  1432.         time.   The default is set to ten seconds,  or until you enter  a
  1433.         key.  You can modify the default "sleep" time by entering a '-Sn'
  1434.         option  on the command line,  where 'n' represents the number  of
  1435.         eighteenths  of a second (1/18) you wish to have FLU_SHOT+  sleep
  1436.         before  becoming  active.    Since  you  will  most  likely  have
  1437.         FLU_SHOT+ as one of the final commands in your AUTOEXEC.BAT,  you
  1438.         probably won't have to modify this parameter,  but the capability
  1439.         exists, nonetheless.
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.                                        19
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.         Interpreting a FLU_SHOT+ Trigger
  1457.         ================================
  1458.  
  1459.         So,  you've run FLU_SHOT+,  and you're at your C> prompt.  Great! 
  1460.         Now  stick  a blank disk which you don't care about into your  A:
  1461.         drive and try to format it.
  1462.  
  1463.         Surprise!   FLU_SHOT+ caught the attempt!  You have three choices
  1464.         now:   typing 'Y' allows the operation to continue,  but the next
  1465.         one  will be caught as well.   Typing a 'G' (for Go!) allows  the
  1466.         operation to continue, disabling FLU_SHOT+ until an exit from the
  1467.         program is made.  When FLU_SHOT+ is in the 'G' state,  a 'G' will
  1468.         appear in the upper right hand corner of your screen.
  1469.  
  1470.         Any other key will cause a failure of the operation to occur.
  1471.  
  1472.         When you've got FLU_SHOT+ running and you get signaled that there
  1473.         is  a problem,  you should think about what might have caused the
  1474.         problem.   Some programs, like FORMAT, or the Norton Utilities or
  1475.         PC-Tools,  or DREP have very good reasons for doing direct  reads
  1476.         and writes to your hard disk.  However, a public domain checkbook
  1477.         accounting program doesn't.   You'll have to be the judge of what
  1478.         are legitimate operations and which are questionable.
  1479.  
  1480.         There is no reason to write to IBMBIO or IBMDOS, right?
  1481.  
  1482.         Wrong!
  1483.  
  1484.         When  you  format a disk with the '/S' option,  those  files  are
  1485.         created on the target diskette.   The act of creating, opening up
  1486.         and  writing  those files will trigger FLU_SHOT+ as part  of  its
  1487.         expected  operation.  There are many other legitimate  operations
  1488.         which may cause FLU_SHOT+ to trigger.
  1489.  
  1490.         So  will  copying a COM or EXE file if you have  those  protected
  1491.         with a 'P=' command.   FLU_SHOT+ is not particularly  intelligent
  1492.         about  what  is allowed and what isn't.   That's where  you,  the
  1493.         pilot, get to decide.
  1494.  
  1495.         Here's a fuller listing of the messages which you might see  when
  1496.         you're using FLU_SHOT+:
  1497.  
  1498.  
  1499.         Checking ===><filename>
  1500.  
  1501.         This message is displayed as FLU_SHOT+ checks the checksum on all
  1502.         of  the  "C=" files when you first invoke FLU_SHOT+.   The  files
  1503.         must  be read in from disk,  their checksum calculated  and  then
  1504.         compared against the value you claim the checksum should equal.
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.                                        20
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.         If  the checksum does *not* equal what you claim it should (which
  1523.         means that the file may have been written to and might  therefore
  1524.         be suspect), a window will pop up in the middle of your screen:
  1525.  
  1526.         +===============================================================+
  1527.         |  Bad Checksum on <filename>                                   |
  1528.         |  Actual Checksum is: <checksum>                               |
  1529.         |Press "Y" to allow, "G" to go till exit, any other key to exit.|
  1530.         +===============================================================+
  1531.  
  1532.         This  message simultaneously advises you there is a problem  with
  1533.         the checksums not matching, shows you what the checksum should be
  1534.         and then awaits your response.
  1535.  
  1536.         Except  for the initial run of FLU_SHOT+,  if you type a 'Y' or a
  1537.         'G',  then the program will load and execute.   Typing any  other
  1538.         key will cause the program to abort and for you to be returned to
  1539.         the  C> prompt.   When FLU_SHOT+ is in the 'G' state,  a 'G' will
  1540.         appear in the upper right hand corner of your screen.
  1541.  
  1542.         If  this  is the initial run of  FLU_SHOT+,  however,  you'll  be
  1543.         advised  of  the program's actual checksum,  but  FLU_SHOT+  will
  1544.         continue  to  run,  checking  all  remaining "C="  files  in  the
  1545.         FLUSHOT.DAT file.
  1546.  
  1547.  
  1548.  
  1549.         If you're running a program and you see a screen like:
  1550.  
  1551.         +================================================================+
  1552.         |  ? WARNING! TSR Request from an unregistered program!          |
  1553.         |Number of paragraphs of memory requested (in decimal)  are:<cnt>|  
  1554.         |                   (Press any key to continue)                  |
  1555.         +================================================================+
  1556.  
  1557.         you're being advised that a program is about to go TSR.   If this
  1558.         is a program you trust (such as SideKick,  of KBHIT, or a host of
  1559.         other  TSR  programs you've grown to know  and  love),  then  you
  1560.         should considering installing a "T=" line in the FLUSHOT.DAT file
  1561.         so that future runs of this program will not trigger FLU_SHOT+.
  1562.  
  1563.         However, if you get this message when running a program you don't
  1564.         think  has  any need to go TSR (such as the proverbial  checkbook
  1565.         balancing program),  you should be a little suspicious.  Having a
  1566.         TSR  program  is  not,  in of and  of  itself,  something  to  be
  1567.         suspicious of.   But having one you don't expect --- well, that's
  1568.         a different story.
  1569.  
  1570.         Most  TSR's  "hook into" an interrupt vector before they go  TSR. 
  1571.         These hooks might intercept and process key strokes  ("hotkeys"),
  1572.         or  they might hook and intercept direct disk writes  themselves. 
  1573.         In  any  event,  FLU_SHOT+  (in this version!) doesn't  have  the
  1574.         smarts to do more than advise you of the TSR'ing of the  program. 
  1575.         If you're truly suspicious, reboot your machine immediately!
  1576.  
  1577.  
  1578.  
  1579.                                        21
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.         If  a program attempts to write directly to the interrupts  which
  1589.         are  reserved for disk writes,  FLU_SHOT+ will also be  triggered
  1590.         and you'll see something like:
  1591.  
  1592.         +===============================================================+
  1593.         |====>Direct Disk Write attempt by program other than DOS! <====|
  1594.         |                   (From Interrupt <xx>)                       |
  1595.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1596.         +===============================================================+
  1597.  
  1598.         where  the <xx> represents either a 13 (indicating a direct  BIOS
  1599.         write  to  the  disk) or a 26 (indicating a  direct  DOS  write). 
  1600.         Again,  pressing a 'Y' or a 'G' allows the operation to continue,
  1601.         pressing  any  other  key will cause the operation  to  return  a
  1602.         failed status to DOS, and the operation will not take place. When
  1603.         FLU_SHOT+  is in the 'G' state,  a 'G' will appear in  the  upper
  1604.         right hand corner of your screen.
  1605.  
  1606.         If  an  attempt  is made to format your  disk,  which  may  be  a
  1607.         legitimate operation made by the DOS FORMAT program, you'll see a
  1608.         message such as:
  1609.  
  1610.         +===============================================================+
  1611.         |          ====>Disk being formatted! Are You Sure?<====        |
  1612.         |                                                               |
  1613.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1614.         +===============================================================+
  1615.  
  1616.         which follows similarly to the direct disk write operations.  You
  1617.         should  question  whether the format operation is appropriate  at
  1618.         the time and take whatever action you think is best.
  1619.  
  1620.         If one of your protected files is about to be written to,  you'll
  1621.         see a message like:
  1622.  
  1623.         +===============================================================+
  1624.         |Write access being attempted on:                               |
  1625.         | <filename>                                                    |
  1626.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1627.         +===============================================================+
  1628.  
  1629.         where  <filename>  represents the file you're trying  to  protect
  1630.         from these write operations.   Your red flag should fly,  and you
  1631.         should  question why the program currently running  should  cause
  1632.         such an operation.
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.                                        22
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.         You may also see the same type of message when one of your "Read-
  1655.         Protected" files is being accessed:
  1656.  
  1657.         +===============================================================+
  1658.         |Read Access being attempted on:                                |
  1659.         | <filename>                                                    |
  1660.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1661.         +===============================================================+
  1662.  
  1663.         Again,  the  same red flag should fly,  but it doesn't mean  that
  1664.         you're  infected  with some nasty virus  program!   It  could  be
  1665.         something harmless or intended.  You'll have to be the judge.
  1666.  
  1667.         +===============================================================+
  1668.         |Open File with Write access being attempted on:                |
  1669.         | <filename>                                                    |
  1670.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1671.         +===============================================================+
  1672.  
  1673.         If you see the above message:  Don't Panic!  When a program opens
  1674.         a file,  it may open the file for different types of access.  One
  1675.         access method prohibits writing to the file.   Another allows you
  1676.         to write to the file.  However, lazy programmers (myself included
  1677.         in  this  category from time to time) will often open a file  for
  1678.         read  *and* write access,  even though they have no intention  of
  1679.         ever doing a write into the file.   FLU_SHOT+ isn;t smart  enough
  1680.         to be able to figure out what a program *might* do in the future,
  1681.         so  it  will  alert  you  to an attempt  to  open  the  indicated
  1682.         protected file with write access allowed.   Again, you'll have to
  1683.         consider  whether  the program opening the file  is  a  "trusted"
  1684.         program  or  not  and you'll have to then decide what  action  to
  1685.         take.
  1686.  
  1687.         There  are  three  separate  messages you'll  see  if  a  program
  1688.         attempts to rename a protected file (you'll only see one of these
  1689.         messages at a time, though):
  1690.  
  1691.  
  1692.         +===============================================================+
  1693.         |FCB Rename being attempted on source file:                     |
  1694.         |FCB Rename being attempted on target file:                     |
  1695.         |Handle Rename being attempted on:                              |
  1696.         | <filename>                                                    |
  1697.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1698.         +===============================================================+
  1699.  
  1700.         This  indicates what type of operation is attempting to rename  a
  1701.         protected file.   FCB's are a relic of the older CP/M  days,  and
  1702.         "handles"  are  a newer concept,  a little more modern.   In  any
  1703.         event,  this  tells  you that a file is  being  renamed.   It  is
  1704.         possible  that a trojan or virus writer will attempt to rename an
  1705.         existing  protected  file  to some  other  name,  then  rename  a
  1706.         trojaned or virused program in its stead.  FLU_SHOT will alert yu
  1707.         to this action:   again, though, you'll have to decide what to do
  1708.         about it.
  1709.  
  1710.  
  1711.                                        23
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.         +===============================================================+
  1722.         |Delete being attempted on:                                     |
  1723.         | <filename>                                                    |
  1724.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1725.         +===============================================================+
  1726.  
  1727.         Pretty  much self-evident as to what's happening here,  there are
  1728.         very  few  reasons why one of the files you've opted  to  protect
  1729.         should be deleted.
  1730.  
  1731.         Finally, you may see a message like:
  1732.  
  1733.         +===============================================================+
  1734.         |               ====>CMOS has been changed!<====                |
  1735.         |                                                               |
  1736.         |      Hit "Y" to continue, any other key to restore CMOS.      |
  1737.         +===============================================================+
  1738.  
  1739.         which indicates that your CMOS has been changed while you weren't
  1740.         looking.   Or maybe you were:   if you're running a setup program
  1741.         which changes the date or the time,  or the disk type attached to
  1742.         your AT class machine,  this message should pop up.   Losing your
  1743.         CMOS  is not fatal,  but can be an annoyance.   If you hit a 'Y',
  1744.         then  the  new setting of the CMOS will be stored and  you'll  be
  1745.         able  to continue,  with alerts to any other change to the  CMOS.
  1746.         Any  other  key will result in the original setting of  the  CMOS
  1747.         being restored.
  1748.         
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.                                        24
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.                           How Good is FLUSHOT+, Really?
  1787.  
  1788.         FLU_SHOT+  is  a  pretty handy piece  of  code.   But,  it  can't
  1789.         absolutely  protect you from a worm.   No software can  do  that. 
  1790.         Discussed  below are some hardware devices which no worm can  get
  1791.         through.
  1792.  
  1793.         There  are  ways  around  FLU_SHOT+.   I'm  of  two  minds  about
  1794.         discussing  them,  since the worms out there are reading it this,
  1795.         too.   So I'll only discuss them in passing.   And I'll tell  you
  1796.         what I use here to protect myself from worms.   First,  though, a
  1797.         little  story to tell you what it's like here,  and how I protect
  1798.         myself from getting wormed.
  1799.  
  1800.         The  RamNet Bulletin Board System site I run is open  access.  No
  1801.         need  to  register,  or to leave your phone  number  or  address,
  1802.         although  a  note  to  that effect  is  always  appreciated.   As
  1803.         mentioned  above,  I dare the worm to try to affect the  disk  of
  1804.         somebody who can fight back.  A couple of of worms have tried and
  1805.         I  have a nice collection of Trojans and viruses.   Obviously,  I
  1806.         run  FLU_SHOT+ on my board,  along with checking  incoming  files
  1807.         with CHK4BOMB.   My procedure for testing out newly uploaded code
  1808.         involves  me doing a backup,  installing all sorts of software to
  1809.         monitor  what is going on,  and doing a checksum on all files  on
  1810.         the  disk.   I then try out all of the code I get,  primarily  to
  1811.         determine  if  the code is of high enough quality to  be  posted. 
  1812.         After  testing out all of the weeks uploads,  I run the  checksum
  1813.         program  again  to determine of any of my files might  have  been
  1814.         modified by a worm's virus program.
  1815.  
  1816.         Recently,  what looked like a decent little directory lister  was
  1817.         posted  to  the  board.   For  some reason I've  yet  to  fathom,
  1818.         directory aid programs seem to be the ones which have the highest
  1819.         percentage of Trojans attached to them.
  1820.  
  1821.         This  directory aid program listed my directories in a  wonderful
  1822.         tree  structure,  using different colors for different  types  of
  1823.         files.   Nice program.   When it exited, however, it went out and
  1824.         looked for a directory with the word "FLU" in it.   Once it found
  1825.         a directory with a match in it,  it proceeded to try to erase all
  1826.         of the files in that directory.  An assault! No big deal.  That's
  1827.         what backups are for.
  1828.  
  1829.         But  it  brings  up an interesting point:   I was attacked  by  a
  1830.         clever  worm,  and it erased a bunch of files which  were  pretty
  1831.         valuable.  All of the protection I had would have been for naught
  1832.         if I didn't use the first line of defense from these worms:  full
  1833.         and adequate backup.
  1834.  
  1835.         I've  spent  three  years of my life  developing  one  particular
  1836.         software  package.   Imagine what would have happened if that had
  1837.         been erased by a worm!  Fortunately, I make backups at least once
  1838.         a day, and usually more frequently than that.  You should, too.
  1839.  
  1840.         Now,  I  quarantine that machine as well.   I spent a  couple  of
  1841.  
  1842.  
  1843.                                        25
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.         dollars and bought a bunch of bright red floppy disks.  The basic
  1853.         rule  around  here is that Red Disks are the only disks  that  go
  1854.         into the BBS machine, and the Red Disks go into no other machine. 
  1855.         You see,  I *know* that there is some worm out there who is gonna
  1856.         find  some  way  to infect my system.   No matter  what  software
  1857.         protection I use, there *is* a way around it.
  1858.  
  1859.         You  needn't  be concerned though -- you're making backups  on  a
  1860.         regular basis, right?  And, you aren't asking for trouble.  I am,
  1861.         I  expect to find it,  and it is sort of amusing to see what  the
  1862.         worms out there are wasting their efforts on.
  1863.  
  1864.         At this point,  Trojans and Viruses are becoming a hobby with me:
  1865.         watching what the worms try to do,  figuring out a way to  defend
  1866.         against it, and then updating the FLU_SHOT series.
  1867.  
  1868.         However, there is a possibility that the FLU_SHOT series (as well
  1869.         as  other  protection  programs which are just as  valuable)  are
  1870.         causing  an escalation of the terms of this war.   The worms  out
  1871.         there are sick individuals.   They must enjoy causing the  damage
  1872.         they  do.   But they haven't the guts to stand up and actually do
  1873.         something  in  person.   They  prefer to hide behind  a  mist  of
  1874.         anonymity.
  1875.  
  1876.         But  you  have  the ultimate  defense!   No,  not  the  FLU_SHOT+
  1877.         program.
  1878.  
  1879.         FULL AND ADEQUATE BACKUPS!
  1880.  
  1881.         There  are a variety of very good backup programs which can  save
  1882.         you more work than you can imagine.  I use the FASTBACK+ program,
  1883.         which  is  a great little program.   I backup 30Megs  once  in  a
  1884.         while,  and  do  an incremental backup on a very frequent  basis. 
  1885.         There are a variety of very good commercial,  public domain,  and
  1886.         shareware  backup programs out there.   Use  them!   Because,  no
  1887.         matter what software protection you use, somebody will find a way
  1888.         around  it  once  day.   But they can't find a  way  around  your
  1889.         backups.   And,  if  you (and everyone else) do regular  backups,
  1890.         you'll  remove  the only joy in life these worms  have.   They'll
  1891.         kill  themselves,  hopefully,  and an entire subspecies  will  be
  1892.         wiped out -- and you'll be partially responsible!
  1893.  
  1894.         My  advance  thanks  for  helping  to  exterminate  these  little
  1895.         slimebuckets.  But that brings me to something else.
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.                                        26
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.                                  Reward Offered
  1919.  
  1920.         Somebody out there knows who the worms are.   Even they must have
  1921.         someone  who  is a friend.  True,  I can't think  of  any  reason
  1922.         someone  would  befriend a worm.   But somebody who doesn't  know
  1923.         better has.
  1924.  
  1925.         Well,  I'm  offering a reward for the capture and  conviction  of
  1926.         these worms.
  1927.  
  1928.         Enough   already  with  software  protection  schemes,   hardware
  1929.         protection schemes,  or any protection at all.   It shouldn't  be
  1930.         required, dammit!
  1931.  
  1932.         Here's the deal:
  1933.  
  1934.         In  this  archive  is a form  called  REWARD.FRM.   If  you're  a
  1935.         software  or hardware manufacturer,  or you have some software or
  1936.         hardware  you don't need,  consider filling out  that  form,  and
  1937.         donating  it to a worthy cause.   I don't know what the legal and
  1938.         tax  ramifications of that donation would be.   I'm not a  lawyer
  1939.         and we can cross that bridge when we get to it.
  1940.  
  1941.         Anyway,  if you know one of these worms,  turn them in!   Call me
  1942.         up, send me a letter, a telegram, or leave a message for me on my
  1943.         BBS.   Indicate who you *know* is worming about.   I'll keep your
  1944.         name confidential.
  1945.  
  1946.         It  is  surprisingly easy to get the authorities in  on  this  --
  1947.         they're  as concerned about what is happening to our community as
  1948.         we are.   I'll presume that they'll end up putting a data tap  on
  1949.         the phone line of the accused worm.  Then, when he next uploads a
  1950.         Trojan  or a virus to a BBS,  he'll get nailed.   The authorities
  1951.         are pretty good about this stuff: they'll not tap a phone or take
  1952.         any action whatsoever without adequate proof.  Will your dropping
  1953.         a dime on this worm be adequate proof?   I don't know.   Again, a
  1954.         bridge to cross when we approach it.
  1955.  
  1956.         However, assuming that this slimeball gets nailed, you'll get all
  1957.         of the software and hardware which other people have donated. And
  1958.         the  satisfaction of knowing that you've done a Good Thing,  that
  1959.         you've  helped an industry and community continue to grow.   This
  1960.         *is*  your community,  and the vast majority of people in it  are
  1961.         good  people who shouldn't have to fear from your  friend.   Your
  1962.         friend  is  not really a friend:  he uses you to justify his  own
  1963.         existence.   When  someone  uses you like  that,  they're  not  a
  1964.         friend,  they're a leach.   And you've probably got better things
  1965.         to do then let somebody use you like that.
  1966.  
  1967.         Most  importantly,  the worm out there won't know if one  of  his
  1968.         friends has already turned him in.  So he won't know if his phone
  1969.         is  tapped.   If *I* were a worm,  and considering what  kind  of
  1970.         friends I would have, I'd be sure that somebody dropped a dime on
  1971.         me.   And  therefore an intelligent worm (perhaps I'm giving  the
  1972.         worm too much credit?) must presume that their line is tapped and
  1973.  
  1974.  
  1975.                                        27
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.         that  they're  gonna  go to jail if they  continue  what  they're
  1985.         doing.
  1986.  
  1987.         So just stop, you miserable little lowlife, huh?  You're going to
  1988.         be  arrested.  You're  going to have to put up  with  indignities
  1989.         which   even   you  don't  deserve!    Your  equipment  will   be
  1990.         confiscated.   You'll  never get a job in the  industry.   You're
  1991.         going to go to jail. 
  1992.  
  1993.         All  because  one of your friend's actually has a conscience  and
  1994.         knows what is right and what is wrong.   And what you're doing is
  1995.         wrong.
  1996.  
  1997.         So,  let  me  get  back to the kind of  programming  I  enjoy  --
  1998.         productive  programming.   And  turn your programming to  useful,
  1999.         interesting,  and productive programming.  You have the talent to
  2000.         do something useful and good with your life.   What you're  doing
  2001.         is  hurting  the industry and hurting the community  which  would
  2002.         welcome someone with your talents with open arms.
  2003.  
  2004.         And  the satisfaction of helping far surpasses  the  satisfaction
  2005.         you must get from hurting innocent people.
  2006.  
  2007.         So just stop.
  2008.  
  2009.  
  2010.         Sincerely, Ross M. Greenberg
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.                                        28
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.