home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / misc / vdata.doc < prev    next >
Text File  |  1994-10-15  |  14KB  |  493 lines

  1.  
  2.  
  3.  
  4.  
  5.     ╒═════════════════════════════════════════════════════════╕
  6.     │                                                         │
  7.     │             VIRUS COLLECTOR'S TOOLBOX  1.2              │
  8.     │                 (C) 1994 David Smith                    │
  9.     │                                                         │
  10.     ╘═════════════════════════════════════════════════════════╛
  11.  
  12.  
  13.  
  14.  
  15.     ■  Catalogs and sorts through your viruses, even ones inside
  16.        PKzip files WITHOUT UNZIPPING THEM.
  17.  
  18.     ■  Recurse subdirectories - hunt down your Data file/Config
  19.        file in your path
  20.  
  21.     ■  Extracts virus names from F-PROT/AVPRO reports and imports
  22.        them into the database, automatically!
  23.  
  24.     ■  Stores NAME, file size, file date, CRC, Virus name, plus
  25.        the PKZIP file containing the file (if any)
  26.        No more rediculous Crc-only databases
  27.  
  28.     ■  Catalogs .TD0 .ASM .A86 .C .OBJ .EXE .COM .VXE .VOM
  29.        .SYS .BOO .PAS  -  not just executable files
  30.  
  31.     ■  Allows comparing two virus collections and generating
  32.        a report on what you DO NOT have.
  33.  
  34.     ■  Checks duplicates before importing new viruses
  35.  
  36.     ■  Converts F-PROT or AVPRO report files into DESCRIPT.ION
  37.        for all you 4Dos users
  38.  
  39.     ■  Even finds duplicates INSIDE PKZIP files without uncompressing.
  40.        That means if you unzipped a file, TOOLBOX will recognize it's
  41.        already inside the .ZIP!
  42.  
  43.     ■  Exports into DBASE/PARADOX/EXCEL compatible comma-delimited files
  44.  
  45.     ■  Also prints Sorted reports based upon Name, Size, or CRC value
  46.  
  47.     ■  It's FREEWARE
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.     ============* INTRODUCTION *=====================================
  58.  
  59. Virus collecting is well and active around the world, and many people
  60. have several hundred, maybe even thousands on their computer.  The
  61. problem is that no real programs are available for virus collectors.
  62.  
  63. Sure, there is TBweeder (Frans Veldman) which is an "in house" sorter
  64. for ThunderByte Anti-Virus.  However, it only stores CRC values (and
  65. names, but in a separate file.. ICK!) and cannot do complex functions
  66. on your virus collection.  Wouldn't it be nice to "export" data concerning
  67. your virus files into a database program, sort/search for things based
  68. upon a user-definable field, compare YOUR database against other people's
  69. to see what you don't have, etc?
  70.  
  71.             Along comes VIRUS COLLECTOR'S TOOLBOX.
  72.  
  73. If you have more than 10 viruses, then you might have some duplicates.
  74. And finding them is a BIG chore, especially when you have more than 1,000
  75. in your collection.  I personally am a "collection" trader.
  76.  
  77. I give people my collection in trade for theirs (if they have anything
  78. interesting).  This allows a more rapid growth of my collection (rather
  79. than downloading every one from BBS's, etc...) and talking to interesting
  80. people along the way.
  81.  
  82. VIRUS COLLECTOR'S TOOLBOX is freeware and can be distributed without
  83. cost.  Please do not trojanize the program and spread it around.
  84. Virus collecting and being a decent human being are not mutually exclusive.
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.    ================* ETHICS *=====================================
  94.  
  95. I have a bachelor's degree in Psychology, am a professional programmer
  96. for a major Bank, rank a second-degree black belt in the martial arts,
  97. have a wife and kids, plus am an "authorized distributor" of
  98. ThunderByte Anti-Virus and run an Anti-Virus bulletin board.
  99.  
  100. Obviously, I am not a virus-writing jerk, out to destroy the world,
  101. nor do I have ANY PART in the rediculous political arena that currently
  102. clouds the Anti-Virus/Virus-writing field.  As a matter of fact, both
  103. parties probably dislike me  :-)
  104.  
  105. I *DO* have a large collection - over 3,400+ viruses and souce code
  106. that I *DO NOT* give out to anyone except other collectors.  After all,
  107. if some guy already has over 500+ viruses, what does sharing 200 more hurt?
  108.  
  109. I also DO NOT hand out viruses to kids, upload them to bulletin boards
  110. for fun, or trash my neighbor's computers with them.  That's just plain
  111. dumb (plus a federal offense).  I DO enjoy gathering a collection, and
  112. researching the various aspects of viruses from time to time.
  113.  
  114. (Similar to Baseball trading cards, comic books, coins, etc...)
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.                 USAGE:   VDATA [option] [filespec]
  125.  
  126.  
  127.  
  128.   Vdata does not accept pathnames.  Place it in your path, then change
  129.              to the directory containing your files!
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.   VDATA /ADD [filespec]            Adds files (including inside PKZIPs)
  138.                                    to VDATA.DAT file
  139.  
  140. To begin with, use this to add all your viruses into the database.
  141. Your *best bet* is to just leave the virus files inside PKZIPs, then
  142. let THE TOOLBOX catalog them.  Each one will be listed to the screen
  143. as its added, along with the file name/size/CRC.
  144.  
  145. Files within PKZIPs are only stored if they are: .TD0 .ASM .A86
  146.  .C* .OBJ .EXE .COM .VXE .VOM .SYS .BO? .BIN .PAS  however any file
  147. you specify on the command line will be added, no matter what
  148. the extension.
  149.  
  150. CAREFUL:  The first VDATA.DAT in your PATH is used.  If one already exists
  151.           in the current directory/your PATH, it is read into memory, and
  152.           will be added to.  Make sure that THIS one is the data file you want.
  153.  
  154.  
  155. A sample output looks like:
  156.  
  157.  
  158.  !HISTORY.COM    7764       272F05F1
  159.  ORDER.COM       2619       83E1B641
  160.  
  161. √  BASICSRC.ZIP
  162.  
  163.    Name      Fullsize    Method  Compressed    Date      Time     CRC
  164. ──────────── ────────── ──────── ────────── ────────── ──────── ────────
  165. BB_CAI10.BAS  11772     DeflateX  3423      08-04-1993 01:06:02 65C873BF
  166. MONEY.BAS     1285      DeflateX  487       08-04-1993 01:06:02 7F6A23F
  167. XB_SRC01.BAS  18479     DeflateX  5972      08-04-1993 01:06:02 92539214
  168. FILE_ID.DIZ   718       DeflateX  407       08-18-1994 13:16:46 40823B9A
  169. ──────────── ────────── ──────── ────────── ────────── ──────── ────────
  170.  
  171.  OLDROBO.C       4502       FF4E931B
  172.  BC_LAI10.C      7504       9DC27958
  173.  CRC.C           3918       CAFDC119
  174.  BULLET.TDO      8604       DA8B10C2
  175.  !   BB_LAI10.C      BC_LAI10.C    7504     9DC27958
  176.  AGAIN.COM       4490       332A7B5
  177.  IDEMO.EXE       24739      3978A24C
  178.  
  179.   └──────SUBDIR
  180.  MAINRUN.COM     345        28563623
  181.  VIRUS102.EXE   1593        8F2A7C19
  182.  
  183. I use my "own" internal PKZIP evaluating routine to peek inside PKZIP
  184. files (Pkzip version 1.1 or 2).
  185.  
  186. Note the '!' near the end?
  187. That meant the file was a duplicate.  You can look inside DUPLICAT.LOG
  188. for details.
  189.  
  190.    The format is:
  191.  
  192.    1. The symbol '!'
  193.    2. The old filename already in the database
  194.    3. The new filename that wasn't added because it duplicated the old one
  195.    4. The file's size
  196.    5. The file's 32-bit CRC
  197.    6. The PKZIP file containing the dupe (if applicable)
  198.  
  199. THE TOOLBOX also looks in the current directory for SCANNER.LOG, which
  200. can be F-PROT or AVPRO logs, and imports any virus descriptions.
  201. You can create a SCANNER.LOG with:
  202.  
  203.  
  204. 1) F-PROT ->    F-PROT.EXE  [directory]  /REPORT=SCANNER.LOG  /LIST
  205. 2) AVPRO  ->    -V.EXE      [directory]  /WA=SCANNER.LOG
  206.  
  207.  
  208. As a default, F-PROT descriptions are used.  If you don't want these
  209. imported (it does slow down the program a little), or you use AVPRO,
  210. change the value in VDATA.INI.
  211.  
  212. Also, see the └──────SUBDIR  ??  That means it changed into a
  213. subdirectory.
  214. As a default, THE TOOLBOX recurses subdirectories.  If you do NOT
  215. want recursion, change that value in your VDATA.INI.
  216.  
  217.  
  218.       For more information about VDATA.INI, see below...
  219.  
  220.  
  221. THE TOOLBOX does *NOT* evaluate Pkzip inside Pkzip files.  If your virus
  222. collection includes embedded PKzip files, just uncompress them before
  223. adding.
  224.  
  225.    VIRUS092.ZIP
  226.      │                        <--- This won't work.  Uncompress first
  227.      ├── oldvir.zip
  228.      ├── newvir.zip
  229.      └── smeg94.zip
  230.  
  231.    SMEG94.ZIP
  232.      │                        <--- Perfect.
  233.      ├── smeg.com
  234.      ├── smeg.asm
  235.      └── virus.bbs
  236.  
  237.  
  238. Once you have your database, you're all set to use the other great
  239. features!
  240.  
  241.  
  242.  
  243.  
  244.   VDATA /COMP [giver] [receiver]   Compares two bases and finds unique files
  245.                                    that the "receiver" does NOT have
  246.  
  247. Use this to find viruses someone else has that you DON'T have.  Merely
  248. make the two databases, then use this to compare.
  249.  
  250.   Example:     VDATA /COMP  fred.dat  vdata.dat
  251.  
  252. So in this example, you want to see which viruses FRED has that you
  253. don't.  Fred will be giving the viruses, and you will be receiving them...
  254.  
  255.   Example:     VDATA /COMP  biglist.dat  small.dat
  256.  
  257. BIGLIST has twice as many viruses, so he will be the "giver" and the
  258. smaller collection will be the "receiver".  You can reverse these
  259. and get what the smaller list may have that the "BIGLIST" doesn't.
  260.  
  261. Unique files are printed to the screen and to a file: YOUNEED.VTA
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.   VDATA /DESC                      Converts AVPRO/F-PROT log into a 4DOS
  269.                                    compatible DESCRIPT.ION file
  270.  
  271.  
  272. This imports a SCANNER.LOG file (F-PROT/AVPRO) and converts it to
  273. DESCRIPT.ION.  A great feature for all your 4DOS users.
  274.  
  275.  
  276.  
  277.  
  278.   VDATA /QSORT        Lists current VDATA.DAT to screen, sorted by
  279.                       Name, Size or CRC.  You can change how they
  280.                       are sorted by changing the value in your VDATA.INI
  281.  
  282. This lists the contents of your database file: VDATA.DAT to the screen
  283.  
  284.  
  285.  
  286.   VDATA /LIST         Lists current VDATA.DAT to screen
  287.  
  288. This lists the contents of your database file: VDATA.DAT to the screen
  289.  
  290.  
  291.  
  292.   VDATA /REPORT       Write current VDATA.DAT to report file: VDATA.RES
  293.  
  294. This writes the contents of your database file: VDATA.DAT to
  295. a report file: VDATA.RES
  296.  
  297.  
  298.  
  299.  
  300.   VDATA /DBASE        Write current VDATA.DAT to comma-delimited file
  301.                       (which can be imported into Dbase, Excel, Paradox, etc)
  302.  
  303. Same as above, but exports VDATA.RES as a comma-delimited file.
  304. Simply start up DBASE, PARADOX, etc... and import it.
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.    =================* VDATA.INI *=====================================
  318.  
  319. VDATA.INI is the configuration file for VIRUS COLLECTOR'S TOOLBOX
  320. If it's not in your path, defaults will be used.
  321.  
  322. The following fields are available:
  323.  
  324.  
  325.   ------------------------------------------------------------
  326.   Which scanner's log will you use?   F-PROT, AVPRO, NONE
  327.   The default is F-PROT
  328.  
  329.   Note: If you specify a scanner, make sure the output file
  330.         is SCANNER.LOG
  331.  
  332.  
  333.     SCANNER = F-PROT
  334.   ------------------------------------------------------------
  335.   If you press a key during processing, does that mean stop
  336.   the program?
  337.  
  338.   ANY KEY STOPS = YES
  339.   ------------------------------------------------------------
  340.   Print information to an output file?
  341.   NOTE: If you say "NO", then some reports don't print
  342.  
  343.   PRINT TO FILE = YES
  344.   ------------------------------------------------------------
  345.   Print information to the screen?  NOTE: I recommend leaving this on...
  346.  
  347.   PRINT TO SCREEN = YES
  348.   ------------------------------------------------------------
  349.   When doing a /QSORT printout to the screen, how should it
  350.   be sorted?    Default is NAME
  351.  
  352.   SORT BY = NAME
  353.   SORT BY = SIZE
  354.   SORT BY = CRC
  355.   ------------------------------------------------------------
  356.   When adding files, do you want to process the directories below?
  357.   Default = yes
  358.  
  359.   RECURSE SUBDIRS = YES
  360.   ------------------------------------------------------------
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.    =================* TECHNICAL STUFF *================================
  372.  
  373. VIRUS COLLECTOR'S TOOLBOX is written in C++, and the VDATA.DAT is
  374. organized as follows:
  375.  
  376.  
  377.         struct testrectype {
  378.             long Number;
  379.             char FileName[15];
  380.             long size;
  381.             char date[13];
  382.             long crc;
  383.             char Vname[42];
  384.             char Parent[15];
  385.         } Rec;
  386.  
  387.  
  388.  
  389. Sorts and duplicate checking are done using a LINKED LIST - which
  390. has a max value of 16,500 records.  Any more will overload the list,
  391. and you will receive an error message concerning low memory!
  392.  
  393.  
  394.  
  395. To search for AVPRO virus descriptions, I use the following routine:
  396.  
  397. while(!feof(fp2))
  398. {
  399.  
  400.   fgets(temp, 120, fp2);
  401.   for(i=0; i<strlen(temp); i++) if(temp[i]=='\n' || temp[i]=='\r') temp[i]=' ';
  402.   strcpy(Rec.Vname, "                                   ");
  403.  
  404.  if(strstr(temp, Rec.FileName))
  405.  {
  406.   ptr=0;
  407.   if(strstr(temp, "virus Type")){
  408.     ptr = strrchr(temp, ':');
  409.     if(ptr) strncpy(Rec.Vname, ptr+13, 40);
  410.     break;
  411.                                 }
  412.   ptr=0;
  413.   if(strstr(temp, "virus")){
  414.     ptr = strrchr(temp, ':');
  415.     if(ptr) strncpy(Rec.Vname, ptr+8, 40);
  416.               break;
  417.                            }
  418.  }
  419. }
  420.  
  421.  
  422.  
  423. And to look for F-PROT, I use:
  424.  
  425. while(!feof(fp2))
  426. {
  427.   ptr=0;
  428.   fgets(temp, 120, fp2);
  429.   temp[1]=' ';
  430.   for(i=0;i<strlen(temp);i++) if(temp[i]=='\n' || temp[i]=='\r') temp[i]=' ';
  431.   strcpy(Rec.Vname, "                                      ");
  432.  
  433.  if(strstr(temp, Rec.FileName))
  434.  {
  435.   ptr=0;
  436.   if(strstr(temp, "Infection")){
  437.     ptr = strrchr(temp, ':');
  438.     if(ptr) strncpy(Rec.Vname, ptr+2, 40);
  439.     break;
  440.                                }
  441.   ptr=0;
  442.   if(strstr(temp, "Possibly")){
  443.     ptr = strchr(temp, 'a');
  444.     if(ptr) strncpy(Rec.Vname, ptr+2, 40);
  445.     break;
  446.                                }
  447.   ptr=0;
  448.   if(strstr(temp, "Might be") || strstr(temp, "Seems to be")){
  449.     ptr = strchr(temp, 'a');
  450.     if(ptr) strncpy(Rec.Vname, ptr+2, 40);
  451.     break;
  452.                               }
  453.  }
  454. }
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.    =================* SUPPORT *=====================================
  465.  
  466.    If you believe this program has been tampered with, you can get a
  467.    fresh new copy:
  468.  
  469.  
  470.  
  471.         INTERNET:    autonet@unicomp.net
  472.         COMPUSERVE:  71441,2723
  473.         BBS:         AntiVirus ROCK:    214-606-1485
  474.                      Hogard Solutions:  214-641-6292
  475.  
  476.  
  477.  
  478.         This program is freeware, and the author gives ZERO
  479.         technical support.  Enjoy yourself, and I'll be glad
  480.         to trade collections with ya!   :-)
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.