home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / HATCH / WWIVNEWS.ZIP / 9605_2.NWS < prev   
Text File  |  1996-05-25  |  41KB  |  887 lines

  1. ───────────────┬─────────────────────────────────────────────┬───────────────
  2.            │             Understanding Viruses           │
  3.            │           Compiled by Sam (1@2863)          │
  4.            └─────────────────────────────────────────────┘
  5.  
  6. [This was taken from an FAQ I picked up on the net. It is a rather large
  7.       article, which I'm posting in parts over several newsletters.]
  8.  
  9.             = Protection Against Viruses =
  10.               ══════════════════════════
  11.  
  12.  What is the best protection policy for my computer?
  13.  
  14. There is no "best" anti-virus policy.  In particular, there is no program that
  15. can magically protect you against all viruses.  But you can design an
  16. anti-virus protection strategy based on multiple layers of defense.  There are
  17. three main kinds of anti-viral software, plus several other means of protection
  18. (such as hardware write-protect methods).
  19.  
  20.  
  21.  
  22. 1) GENERIC MONITORING programs.  These try to prevent viral activity before it
  23. happens, such as attempts to write to another executable, reformat the disk,
  24. etc. Examples: SECURE and FluShot+ (PC), and GateKeeper (Macintosh).
  25.  
  26.  
  27. 2) SCANNERS.  Most look for known virus strings (byte sequences which occur in
  28. known viruses, but hopefully not in legitimate software) or patterns, but a few
  29. use heuristic techniques to recognize viral code.  A scanner may be designed to
  30. examine specified disks or files on demand, or it may be resident, examining
  31. each program which is about to be executed.  Most scanners also include virus
  32. removers.
  33.  
  34.    Examples: FindViru in Dr Solomon's Anti-Virus Toolkit, FRISK's
  35.    F-Prot, McAfee's VIRUSCAN (all PC), Disinfectant (Macintosh).
  36.    Resident scanners: McAfee's V-Shield, and VIRSTOP.
  37.    Heuristic scanners: the Analyze module in FRISK's F-PROT package,
  38.    and SCANBOOT.
  39.  
  40. 3) INTEGRITY CHECKERS or MODIFICATION DETECTORS.  These compute a small
  41. "checksum" or "hash value" (usually CRC or cryptographic) for files when they
  42. are presumably uninfected, and later compare newly calculated values with the
  43. original ones to see if the files have been modified.  This catches unknown
  44. viruses as well as known ones and thus provides *generic* detection.  On the
  45. other hand, modifications can also be due to reasons other than viruses.
  46. Usually, it is up to the user to decide which modifications are intentional and
  47. which might be due to viruses, although a few products give the user help in
  48. making this decision.  As in the case of scanners, integrity checkers may be
  49. called to checksum entire disks or specified files on demand, or they may be
  50. resident, checking each program which is about to be executed (the latter is
  51. sometimes called an INTEGRITY SHELL).  A third implementation is as a
  52. SELF-TEST, i.e. the checksumming code is attached to each executable file so
  53. that it checks itself just before execution.
  54.  
  55.    Examples: Fred Cohen's ASP Integrity Toolkit (commercial), and
  56.    Integrity Master and VDS (shareware), all for the PC.
  57.  
  58. 3a) A few modification detectors come with GENERIC DISINFECTION.  I.e.,
  59. sufficient information is saved for each file that it can be restored to its
  60. original state in the case of the great majority of viral infections, even if
  61. the virus is unknown.
  62.  
  63.    Examples: V-Analyst 3 (BRM Technologies, Israel), marketed in the
  64.    US as Untouchable (by Fifth Generation), and the VGUARD module of
  65.    V-care.
  66.  
  67. Of course, only a few examples of each type have been given.  All of them can
  68. find their place in the protection against computer viruses, but you should
  69. appreciate the limitations of each method, along with system-supplied security
  70. measures that may or may not be helpful in defeating viruses.  Ideally, you
  71. would arrange a combination of methods that cover the loopholes between them.
  72.  
  73. A typical PC installation might include a protection system on the hard disk's
  74. MBR to protect against viruses at load time (ideally this would be hardware or
  75. in BIOS, but software methods such as DiskSecure and PanSoft's Immunize are
  76. pretty good).  This would be followed by resident virus detectors loaded as
  77. part of the machine's startup (CONFIG.SYS or AUTOEXEC.BAT), such as FluShot+
  78. and/or VirStop together with ScanBoot.  A scanner such as F-Prot or McAfee's
  79. SCAN could be put into AUTOEXEC.BAT to look for viruses as you start up, but
  80. this may be a problem if you have a large disk to check (or don't reboot often
  81. enough).  Most importantly, new files should be scanned as they arrive on the
  82. system.  If your system has DR DOS installed, you should use the PASSWORD
  83. command to write-protect all system executables and utilities.  If you have
  84. Stacker or SuperStore, you can get some improved security from these compressed
  85. drives, but also a risk that those viruses stupid enough to directly write to
  86. the disk could do much more damage than normal; using a software write-protect
  87. system (such as provided with Disk Manager or Norton Utilities) may help, but
  88. the best solution (if possible) is to put all executables on a disk of their
  89. own, protected by a hardware read-only system that sounds an alarm if a write
  90. is attempted.
  91.  
  92. If you do use a resident BSI detector or a scan-while-you-copy detector, it is
  93. important to trace back any infected diskette to its source; the reason why
  94. viruses survive so well is that usually you cannot do this, because the
  95. infection is found long after the infecting diskette has been forgotten with
  96. most people's lax scanning policies.
  97.  
  98. Organizations should devise and implement a careful policy, that may include a
  99. system of vetting new software brought into the building and free virus
  100. detectors for home machines of employees/students/etc who take work home with
  101. them.
  102.  
  103. Other anti-viral techniques include:
  104. (a) Creation of a special MBR to make the hard disk inaccessible when booting
  105. from a diskette (the latter is useful since booting from a diskette will
  106. normally bypass the protection in the CONFIG.SYS and AUTOEXEC.BAT files of the
  107. hard disk).  Example: GUARD.
  108.  
  109. (b) Use of Artificial Intelligence to learn about new viruses and extract scan
  110. patterns for them.
  111.  
  112.     Examples: V-Care (CSA Interprint, Israel; distributed in the U.S.
  113.     by Sela Consultants Corp.), Victor Charlie (Bangkok Security Associates,
  114.     Thailand; distributed in the US by Computer Security Associates).
  115.  
  116. (c) Encryption of files (with decryption before execution).
  117.  
  118.  
  119. Is it possible to protect a computer system with only software?
  120.  
  121. Not perfectly; however, software defenses can significantly reduce your risk of
  122. being affected by viruses WHEN APPLIED APPROPRIATELY. All virus defense systems
  123. are tools - each with their own capabilities and limitations.  Learn how your
  124. system works and be sure to work within its limitations.
  125.  
  126. From a software standpoint, a very high level of protection/detection can be
  127. achieved with only software, using a layered approach.
  128.  
  129. 1)  ROM BIOS - password (access control) and selection of boot disk. (Some may
  130. consider this hardware.)
  131.  
  132. 2)  Boot sectors - integrity management and change detection.
  133.  
  134. 3)  OS programs - integrity management of existing programs, scanning of
  135. unknown programs.  Requirement of authentication values for any new or
  136. transmitted software.
  137.  
  138. 4)  Locks that prevent writing to a fixed or floppy disk.
  139.  
  140. As each layer is added, invasion without detection becomes more difficult.
  141. However complete protection against any possible attack cannot be provided
  142. without dedicating the computer to pre-existing or unique tasks.  The
  143. international standardization of the world on the IBM PC architecture is both
  144. its greatest asset and its greatest vulnerability.
  145.  
  146.  
  147. Is it possible to write-protect the hard disk with only software?
  148.  
  149. The answer is no.  There are several programs which claim to do that, but *all*
  150. of them can be bypassed using only the currently known techniques that are used
  151. by some viruses.  Therefore you should never rely on such programs *alone*,
  152. although they can be useful in combination with other anti-viral measures.
  153.  
  154.  
  155. What can be done with hardware protection?
  156.  
  157. Hardware protection can accomplish various things, including: write protection
  158. for hard disk drives, memory protection, monitoring and trapping unauthorized
  159. system calls, etc.  Again, no tool is foolproof.
  160.  
  161. The popular idea of write-protection may stop viruses spreading to the disk
  162. that is protected, but doesn't, in itself, prevent a virus from running.
  163.  
  164. Also, some of the existing hardware protections can be easily bypassed, fooled,
  165. or disconnected, if the virus writer knows them well and designs a virus which
  166. is aware of the particular defense.
  167.  
  168.  
  169. Will setting DOS file attributes to READ ONLY protect them from viruses?
  170.  
  171. No.  While the Read Only attribute will protect your files from a few viruses,
  172. most simply override it, and infect normally.  So, while setting executable
  173. files to Read Only is not a bad idea, it is certainly not a thorough protection
  174. against viruses!
  175.  
  176.  
  177. Will password/access control systems protect my files from viruses?
  178.  
  179. All password and other access control systems are designed to protect the
  180. user's data from other users and/or their programs.  Remember, however, that
  181. when you execute an infected program the virus in it will gain your current
  182. rights/privileges.  Therefore, if the access control system provides *you* the
  183. right to modify some files, it will provide it to the virus too.  Note that
  184. this does not depend on the operating system used - DOS, Unix, or whatever.
  185. Therefore, an access control system will protect your files from viruses no
  186. better than it protects them from you.
  187.  
  188. Under DOS and Windows 95, there is no memory protection, so a virus could
  189. disable the access control system in memory, or even patch the operating system
  190. itself.  On the more advanced operating systems (Unix and OS/2) this is not
  191. possible, so at least the protection cannot be disabled by a virus. However it
  192. will still spread, due to the reasons noted above.  In general, the access
  193. control systems (if implemented correctly) are able only to slow down the virus
  194. spread, not to eliminate viruses entirely.
  195.  
  196. Of course, it's better to have access control than not to have it at all.  Just
  197. be sure not to develop a false sense of security and to rely *entirely* on the
  198. access control system to protect you.
  199.  
  200.  
  201. Will the protection systems in DR DOS work against viruses?
  202.  
  203. Partially.  Neither the password file/directory protection available from
  204. DR DOS version 5 onwards, nor the secure disk partitions introduced in DR DOS 6
  205. are intended to combat viruses, but they do to some extent.  If you have
  206. DR DOS, it is very wise to password-protect your files (to stop accidental
  207. damage too), but don't depend on it as the only means of defense.
  208.  
  209. The use of the password command (e.g. PASSWORD/W:MINE *.EXE *.COM) will stop
  210. more viruses than the plain DOS attribute facility, but that isn't saying much!
  211. The combination of the password system plus a disk compression system may be
  212. more secure (because to bypass the password system they must access the disk
  213. directly, but under SuperStore or Stacker the physical disk is meaningless to
  214. the virus). There may be some viruses which, rather than invisibly infecting
  215. files on compressed disks in fact very visibly corrupt the disk.
  216.  
  217. The "secure disk partitions" system introduced with DR DOS 6 may be of some
  218. help against a few viruses that look for DOS partitions on a disk.  The main
  219. use is in stopping people fiddling with (and infecting) your hard disk while
  220. you are away.
  221.  
  222. Furthermore, DR DOS is not very compatible with MS/PC-DOS, especially down to
  223. the low-level tricks that some viruses are using.  For instance, some internal
  224. memory structures are "read-only" in the sense that they are constantly updated
  225. (for DOS compatibility) but not really used by DR DOS, so that even if a
  226. sophisticated virus modifies them, this does not have any effect.
  227.  
  228. In general, using a less compatible system diminishes the number of viruses
  229. that can infect it.  For instance, the introduction of hard disks made the
  230. Brain virus almost disappear; the introduction of 80286 and DOS 4.x+ made the
  231. Yale and Ping Pong viruses extinct, and so on. And there are only about 35
  232. viruses that plague the Macintosh's, while there are over 7,000 known to the
  233. PC world.
  234.  
  235.  
  236. Will a write-protect tab on a floppy disk stop viruses?
  237.  
  238. In general, yes.  The write-protection on IBM PC (and compatible) and Macintosh
  239. floppy disk drives is implemented in hardware, not software, so viruses cannot
  240. infect a diskette when the write-protection mechanism is functioning properly.
  241.  
  242. But remember:
  243.  
  244. (a) A computer may have a faulty write-protect system (this happens!) - you can
  245. test it by trying to copy a file to the diskette when it is presumably write-
  246. protected.
  247.  
  248. (b) Someone may have removed the tab for a while, allowing a virus on.
  249.  
  250. (c) The files may have been infected before the disk was protected. Even some
  251. diskettes "straight from the factory" have been known to be infected in the
  252. production processes.
  253.  
  254. So it is worthwhile scanning even write-protected disks for viruses.
  255.  
  256.  
  257. Do local area networks (LANs) help to stop viruses or do they facilitate their
  258. spread?
  259.  
  260. Both.  A set of computers connected in a well managed LAN, with carefully
  261. established security settings, with minimal privileges for each user, and
  262. without a transitive path of information flow between the users (i.e., the
  263. objects writable by any of the users are not readable by any of the others) is
  264. more virus-resistant than the same set of computers if they are not intercon-
  265. nected.  The reason is that when all computers have (read-only) access to a
  266. common pool of executable programs, there is usually less need for diskette
  267. swapping and software exchange between them, and therefore less ways through
  268. which a virus could spread.
  269.  
  270. However, if the LAN is not well managed, with lax security, it could help a
  271. virus to spread like wildfire.  It might even be impossible to remove the
  272. infection without shutting down the entire LAN.
  273.  
  274. A network that supports login scripting is inherently more resistant to viruses
  275. than one that does not, if this is used to validate the client before allowing
  276. access to the network.
  277.  
  278.  
  279. What is the proper way to make backups?
  280.  
  281. Data and text files, and programs in source form, should be backed up each time
  282. they are modified.  However, the only backups you should keep of COM, EXE and
  283. other *executable* files are the *original* versions, since if you back up an
  284. executable file on your hard disk over and over, it may have become infected
  285. meanwhile, so that you may no longer have an uninfected backup of that file.
  286.  
  287.   Therefore:
  288.  
  289.   1. If you've downloaded shareware, copy it (preferably as a ZIP or other
  290. original archive file) onto your backup medium and do not re-back it up later.
  291.  
  292.   2. If you have purchased commercial software, it's best to create a ZIP (or
  293. other) archive from the original diskettes (assuming they're not copy
  294. protected) and transfer the archive onto that medium.  Again, do not re-backup.
  295.  
  296.   3. If you write your own programs, back up only the latest version of the
  297. *source* programs.  Depend on recompilation to reproduce the executables.
  298.  
  299.   4. If an executable has been replaced by a new version, then of course you
  300. will want to keep a backup of the new version.  However, if it has been
  301. modified as a result of your having changed configuration information, it seems
  302. safer *not* to back up the modified file; you can always re-configure the
  303. backup p
  304. copy later if you have to.
  305.  
  306.   5. Theoretically, source programs could be infected, but until such a virus
  307. is discovered, it seems preferable to treat such files as non-executables and
  308. back them up whenever you modify them.  The same advice is probably appropriate
  309. for batch files as well, despite the fact that a few batch file infectors have
  310. been discovered.
  311.  
  312.  
  313. The next issue will deal with facts and fibs about computer viruses
  314.  
  315.  
  316.                     -=■=-
  317. ───────────────┬─────────────────────────────────────────────┬───────────────
  318.            │                Type 2/0 Forum               │
  319.            │             Edited by Sam (1@2863)          │
  320.            └─────────────────────────────────────────────┘
  321.  
  322. Have a comment?  Got a beef?  Wanna issue long-overdue kudos?  Here is the
  323. for it!  Send your letters/comments/questions to Sam, 1@2863, for publication
  324. in WWIVNews.
  325.  
  326.  
  327. ───────────────┬─────────────────────────────────────────────┬───────────────
  328.            │           Netlimit: Good or Bad             │
  329.            │     Editorial Commentary By Sam (1@2863)    │
  330.            └─────────────────────────────────────────────┘
  331.  
  332.  
  333. Note: The author of Netlimit was invited to submit his comments for this
  334. article but did not do so.
  335.  
  336. Recently the talk on all the major sysop subs has been fueled by the
  337. controversy surrounding a program called Netlimit. For anyone who does not
  338. know, Netlimit is a program that is used to prevent nodes (referred to here
  339. as a "limited" node) that connect to and depend upon another node for their
  340. network packets (referred to here as a "limiting" node) from being able to
  341. receive any subs other than those permitted by the limiting node.  Netlimit
  342. analyzes and traps any sub requests sent out from the limited node, and any
  343. sub add requests coming into the limited node from outside nodes wishing to
  344. subscribe to subs hosted by the limited node (again, other than those express-
  345. ly permitted by the limiting node). Since Netlimit does not block email,
  346. limited nodes are still free to email requests to be added to subs, but when
  347. Netlimit detects that this has occurred, it will then attempt to send out an
  348. auto-drop packet in an effort to de-subscribe the limited node from the sub
  349. they are receiving.
  350.  
  351. The idea behind Netlimit is noble. It is designed to prevent the limited nodes
  352. from being able to have a free ride at someone else's expense. Without Netlimit
  353. being in place, end nodes are completely free to pick up as many subs as they
  354. like. If they are not the ones doing the long-distance callout to pick up the
  355. network packets, that forces another person to have to pay to pick up the
  356. packets for them. In the perverse entitlement-mindset of today's society, one
  357. would think that a program such as Netlimit would be welcomed with open arms.
  358.  
  359. But that has not happened.  And with good reason.
  360.  
  361. WWIVNet is not a social experiment gone haywire, ala The Great Society. It is
  362. a private network, supported by a group of private sysops. While none of them
  363. should be expected to have to pay to support the hobby of another, allowing
  364. programs on the network that, in reality automate censorship, is not the right
  365. answer to the problem.
  366.  
  367. Those who defend Netlimit's use claim that it's better to have Netlimit in
  368. place so that the limited nodes can at least have email and the subs permitted
  369. by the sysop calling out to pick up the network packets.  On the surface, that
  370. seems all well and good.
  371.  
  372. In reality it is censorship, and such programs can lead to devastation of the
  373. network.
  374.  
  375. Assume I have a distaste for liberals. Assume I have 25 connections to me, and
  376. that each of those nodes have three connections. They may have other
  377. connections too, but through me, then through those 25 connections, four
  378. liberal-oriented subs get sent to 75 nodes downstream of me.
  379.  
  380. Using Netlimit, I could easily block all of those nodes from receiving those
  381. subs.  Further, by editing the outbound packet (with the Netlimit SSM's <or
  382. whatever>) in it, I could prevent anyone from ever knowing what happened.
  383.  
  384. Netlimit supporters say that that is possible right now. While this is a true
  385. statement, it wold require hours of tedious work using lnet (or similar
  386. program) and manual intervention on the part of the sysop on each and every
  387. transient packet routed through his or her node. By using Netlimit, the process
  388. can be set up once and forgotten about.
  389.  
  390. Netlimit supporters claim the network documentation allows them to limit the
  391. amount of traffic end nodes may pick up. This is true. But network policy also
  392. expressly states that transient packets (those coming through a node but that
  393. are not addressed for that node) may not be tampered with (other than to prevent
  394. file transfers via the net) which is exactly what Netlimit and programs like it
  395. do...tamper with packets. Based on these two points (one which allows a sysop
  396. to limit what a node may receive through him, and one which states that
  397. transient packets may not be tampered with) one can only conclude that when the
  398. policy was written, it was intended to mean that a sysop who carries the long
  399. distance traffic for another node may require that node to either limit what he
  400. subscribes to, pay a fee, or find another connection. Nowhere does it state in
  401. the network policy that the transient packets may be edited (other than as
  402. previously stated) in order to limit network traffic.
  403.  
  404. The final decision regarding the future of Netlimit and other renegade software
  405. like it rests in the hands of Wayne. Presently, the use of Netlimit seems to
  406. be fairly confined to the 310 area code. They are set to have a meeting in
  407. early May to discuss the future of network traffic in that area. Let's hope for
  408. the good of everyone involved that they use their heads and come up with the
  409. right solution and stop tampering with transient network packets. For once a
  410. policy is put in place that allows for such events to occur, the beginning of
  411. the end of WWIVNet will be set into motion.
  412.  
  413.                   -=■=-
  414.  
  415. ───────────────┬─────────────────────────────────────────────┬───────────────
  416.            │           Filo's Mod of the Month           │
  417.            │              by Filo (1@4000)               │
  418.            └─────────────────────────────────────────────┘
  419.  
  420. The Mod of the Month is selected by Filo and represents his choice of what
  421. appears to be the most promising mod posted during the past month on Mod Net
  422. (subtype 2370). UUencoded mods are not considered for selection as part of the
  423. mod of the month due to the difficulty of including them in the WWIVnews. Mods
  424. which involve the use of related files such as ENHANCE.C, or any of the
  425. various COMMON type files are also not considered due to the amount of space
  426. required to include them here.  Many of these mods have NOT been tested by
  427. Filo and are selected based on their description as a promising, practical
  428. mod.
  429.  
  430. This month's selection is written by Frank Reid.
  431.  
  432. ┌───────────────────────────────────────────────────────────────────────────┐
  433. │ Mod Name: FR054.MOD         Mod Author: Frank Reid WWIVnet @8213          │
  434. │ Difficulty: Intermediate          Date: March 4, 1996                     │
  435. │ WWIV Version: 4.24a                                                       │
  436. │ Description: Searches for sub posts directed at user (a "To:" kludge).    │
  437. └───────────────────────────────────────────────────────────────────────────┘
  438.  
  439. 1.  Back up your source!  I take NO responsibility for ill effects of this or
  440. any of my mods.  I'd be happy to help you get it working, though.  This is a
  441. very tricky mod, at least in its interface with user qscan and such!
  442.  
  443. 2.  Description:  WWIV lacks a "To:" field in its message base structure, so I
  444. set out to provide some equivalent functionality.  This mod will search the
  445. subs in a user's configured qscan for "directed" replies, i.e. messages which
  446. respond to something that user posted.  If the user's name is found, it
  447. displays the message and gives an opportunity to post an immediate reply.
  448. When a scan is complete, the user can clear qscan pointers and mark all subs
  449. as read.  If he chooses not to do so, the qscan remains unchanged, and all
  450. messages still reflect as new.  This routine works equally well on subs
  451. requiring "Real Name" in //BOARDEDIT, e.g. subs imported from Fido-type
  452. networks.
  453.  
  454. 3.  Mechanics:  A great deal of code is from v4.24's <F>ind routine from the
  455. normal message base scan.  Because I didn't want to reset qscan pointers
  456. automatically (I read all messages when I have time), and I didn't want to
  457. track global variables, it incorporates direct calls to the read message and
  458. post reply routines.  For speed, searches are limited to the first 320
  459. characters of a message (where the BY: line or something similar usually is).
  460.  
  461. 4.  Enhancements:  Stock "get_post()" and "readfile()" routines necessarily
  462. allocate memory and read an entire message, as the resulting pointer is used
  463. to find the offset for subsequent messages.  I didn't see a way of changing
  464. this without rewriting redundant routines.  So, as is, this is fast on a
  465. Pentium and slow on a 286.  Searchable text is "clipped" at 320 characters
  466. within the added function only.  If someone wants to tackle a retrieval
  467. routine for type 2 storage which only allocates a small buffer, have at it!
  468. It will certainly speed it up!
  469.  
  470. Open <MSGBASE1.C>
  471.  
  472. At the very bottom of the file, add this function:
  473.  
  474. void find_user_msgs(void)
  475. {
  476.   char           *b, ch, s[81], s1[251];
  477.   static char     findstr[31];
  478.   int             i, i1, i2, os, a, nn, fnd, new, sn, ac, abort, next;
  479.   long            len;
  480.   unsigned long   qscnptrx, sd;
  481.   postrec         p;
  482.   slrec           ss;
  483.  
  484.   abort = new = 0;
  485.   nl();
  486.   if ((uconfsub[1].confnum != -1) && (okconf(&thisuser))) {
  487.     ac = 1;
  488.     tmp_disable_conf(1);
  489.   } else
  490.     ac = 0;
  491.   os = cursub;
  492.   for (i2 = 0; (usub[i2].subnum != -1) && (i2 < num_subs) && (!abort) &&
  493.       (!hangup); i2++) {
  494.     cursub = i2;
  495.     sn = usub[i2].subnum;
  496.     if (qsc_q[sn / 32] & (1L << (sn % 32))) {
  497.       next = fnd = 0;
  498.       ansic(1);
  499.       npr("\rSearching %s ", subboards[sn].name);
  500.       if (okansi())
  501.         outstr("\x1B[K");
  502.       else {
  503.         outstr(charstr(79,32));
  504.         outchr('\r');
  505.       }
  506.       qscnptrx = qsc_p[sn];
  507.       if (!sub_dates[sn])
  508.         iscan1(i2, 1);
  509.       sd = sub_dates[sn];
  510.       if ((!sd) || (sd > qscnptrx)) {
  511.         new = 1;
  512.         if (!iscan(i2)) {
  513.           nl();
  514.           pl(get_string(1195));
  515.           continue;
  516.     }
  517.     qscnptrx = qsc_p[sn];
  518.         if (subboards[sn].anony & anony_real_name)
  519.           strcpy(findstr, strupr(stripcolors(thisuser.realname)));
  520.         else
  521.           strcpy(findstr, strupr(stripcolors(thisuser.name)));
  522.         for (i = nummsgs; (i > 1) && (get_post(i - 1)->qscan > qscnptrx); i--);
  523.         if ((nummsgs > 0) && (i <= nummsgs) &&
  524.             (get_post(i)->qscan > qsc_p[sn])) {
  525.           ansic(2);
  526.           for (i1 = 0; i1 < 5; i1++)
  527.             outchr(32);
  528.           while ((i != nummsgs) && !abort && !hangup) {
  529.             i++;
  530.         checka(&abort, &next);
  531.             if (!(i % 5) && (wherex() > 1)) {
  532.               for (i1 = 0; i1 < 5; i1++)
  533.                 outstr("\b");
  534.               npr("%5.5d", i);
  535.               if (!(i % 100)) {
  536.         tleft(1);
  537.         checkhangup();
  538.               }
  539.             }
  540.             b = strupr(readfile(&(get_post(i)->msg), subboards[sn].filename,
  541.                 &len));
  542.             memcpy(s1, b, 250);
  543.             bbsfree(b);
  544.             fnd = (strstr(strupr(stripcolors(get_post(i)->title)), findstr) ||
  545.                 strstr(s1, findstr));
  546.             if (fnd) {
  547.               p = *get_post(i);
  548.               if ((p.ownersys != 0) || ((p.ownersys == 0) &&
  549.                   (p.owneruser != usernum))) {
  550.         msgheader(1);
  551.                 nl();
  552.                 if (E_C) {
  553.                   sprintf(s, "1%u/%u0", i, nummsgs);
  554.                   strcat(s, charstr(12 - strlen(stripcolors(s)), '.'));
  555.                   strcat(s, " 2");0
  556.         } else {
  557.           sprintf(s, "%u/%u: ", i, nummsgs);
  558.                 }
  559.                 osan(s, &abort, &next);
  560.                 ansic_x(sysinfo.msg_color);
  561.                 if ((p.status & (status_unvalidated | status_delete)) &&
  562.                     (!lcs()))
  563.                   continue;
  564.                 strcpy(irt, p.title);
  565.                 irt_name[0] = 0;
  566.                 plan(p.title, &abort, &next);
  567.                 if (!abort) {
  568.                   ss = syscfg.sl[actsl];
  569.                   if ((lcs()) || (ss.ability & ability_read_post_anony))
  570.             a = 1;
  571.                   else
  572.                     a = 0;
  573.                   nn = net_num;
  574.                   if (p.status & status_post_new_net)
  575.                     set_net_num(p.title[80]);
  576.           setorigin(p.ownersys, p.owneruser);
  577.           read_message1(&(p.msg), (p.anony & 0x0f), a, &next,
  578.                       (subboards[curlsub].filename));
  579.  
  580.                   if (nn != net_num)
  581.                     set_net_num(nn);
  582.  
  583.                   prt(5, "Reply to message? ");
  584.                   ch = ynq();
  585.                   switch (ch) {
  586.                   case 'Q':
  587.                       abort = 1;
  588.                       break;
  589.                   case 'Y':
  590.               p = *get_post(i);
  591.                       grab_quotes(&(p.msg), subboards[cursub].filename);
  592.                       post();
  593.                       resynch(cursub, &i, &p);
  594.                       grab_quotes(NULL, NULL);
  595.                       restore_msg_menu();
  596.               break;
  597.           case 'N':
  598.           default:
  599.                       nl();
  600.                       break;
  601.                   }
  602.                 }
  603.               }
  604.             }
  605.           }
  606.         }
  607.       }
  608.     }
  609.   }
  610.   if (abort) {
  611.     nl();
  612.     pl("Aborted.");
  613.     nl();
  614.   } else {
  615.     nln(2);
  616.     prt(5, "Search complete...");
  617.     if (new) {
  618.       prt(5, " mark messages on all subs as read? ");
  619.       if (yn()) {
  620.         read_status();
  621.         for (i = 0; i < max_subs; i++)
  622.           qsc_p[i] = status.qscanptr - 1L;
  623.         nl();
  624.         pl(get_string(25));
  625.         nl();
  626.       }
  627.     } else {
  628.       ansic(5);
  629.       pl(" no new messages found.");
  630.     }
  631.   }
  632.   if (ac)
  633.     tmp_disable_conf(0);
  634.   cursub = os;
  635. }
  636.  
  637. Save <MSGBASE1.C>
  638.  
  639. Open <LILO.C>
  640.  
  641. This is where the user is prompted to scan for replies at logon.  Search for
  642. "void logon(void)" and add these lines near the bottom of the function:
  643.  
  644. ==    if (usub[0].subnum==-1) {
  645. ==      curconfsub=0;
  646. ==      setuconf(CONF_SUBS, curconfsub, -1);
  647. ==    }
  648. ==  }
  649. ++  nl();
  650. ++  prt(5, "Search subs for responses to your posts? ");
  651. ++  if (yn()) {
  652. ++    nl();
  653. ++    ansic(2);
  654. ++    pl("Space aborts search...");
  655. ++    nl();
  656. ++    find_user_msgs();
  657. ++  }
  658. ==  rip_cls();
  659. ==  autox = -1;
  660. ==}
  661.  
  662. Save <LILO.C>
  663.  
  664. Open <MMENU.C>
  665.  
  666. Finally, we'll add a command to the main menu called //REPLIES which allows a
  667. user to search after he's logged on.  Search for "void mainmenu" and add the
  668. indicated lines:
  669.  
  670. ==  if ((strcmp(s,"NET")==0) || (strncmp(s,"NET=",4)==0))
  671. ==    print_net_listing(0);
  672. ++  if (strcmp(s, "REPLIES") == 0)
  673. ++    find_user_msgs();
  674. ==  if (strcmp(s,"QSCAN")==0) {
  675.  
  676. Save <MMENU.C>
  677.  
  678. Open <FCNS.H>
  679.  
  680. Note:  If you can use "MAKE FCNS" to rebuild your prototypes in FCNS.H, this
  681. step is unnecessary.
  682.  
  683. Search for msgbase1.c and add the new function:
  684.  
  685. ==void remove_post(void);
  686. ==int external_edit(char *fn1, char *direc, int ednum, int numlines, char *dest
  687. , char *title, int flags);
  688. ==void grab_quotes(messagerec *m, char *aux);
  689. ++void find_user_msgs(void);
  690. ==
  691. ==
  692. ==/* File: share.c */
  693.  
  694. Save <FCNS.H>
  695.  
  696. 5.  Recompile and drop me a note to say you like the mod!
  697.  
  698.                     -=■=-
  699.  
  700.  
  701.  
  702. ───────────────┬─────────────────────────────────────────────┬───────────────
  703.            │            A Warning Concerning             │
  704.            │              Motherboard Cache              │
  705.            │            By Burmese (1@15111)             │
  706.            └─────────────────────────────────────────────┘
  707.  
  708.  
  709. This is a warning about the stated cache size on many motherboards:
  710.  
  711.   Some motherboard OEM's are cranking out motherboards whose SRAM cache (L2)
  712. sizes are not what the manufacturer claims they are.  Many are only putting
  713. 128k of cache on the motherboard and then tweaking the BIOS to say on startup
  714. that it is 256k (the most common size stated industry-wide).  A few are even
  715. leaving out the L2 cache altogether.
  716.  
  717. How to identify a motherboard with less-than-stated cache:
  718.  
  719.   It is almost impossible to identify whether of not a motherboard has 256k of
  720. cache on it or just 128k (or even none at all) just by looking at it.  The
  721. manufacturer's typically fill up all the cache sockets with chips.  Some
  722. individuals have stated on the internet that some of the 'fake' chips can be
  723. identified from their 'cheap' appearance or from the numbers stamped on the
  724. topside of each chip.  This is not reliable in all cases, though.  There are
  725. two basic approaches that can be used to properly identify a motherboard that
  726. is short-cached.
  727.  
  728. 1) Pull the SRAM chips and test them in a chip-testing device.  Some dealers
  729. have such testing equipment, most do not.  Also, the manufacturer will usually
  730. have some sticker plastered over the SRAM cache chips stating that removal of
  731. said sticker will void the warranty (gee, wonder why they don't want you to
  732. poke at their chips?).  Defective and fake chips, of course, will fail in such
  733. a testing device.
  734.  
  735. 2) There are a number of programs available (many of which are shareware) which
  736. are designed to examine your system and detail it's components and
  737. capabilities.  I use the shareware program PC CONFIG (german author).  This
  738. program and some others will properly identify the size of your motherboards'
  739. SRAM L2 cache (found here & there recently as CONF802E.ZIP).
  740.  
  741.   Another program which will >graphically< demonstrate how large your cache is
  742. is the shareware program CCT386 (Calem Cache Tester, of french origin).  This
  743. program, when run will run a benchmark program over and over, each time in a
  744. smaller 'table'. As the size of the program table shrinks, it eventually
  745. reaches a point where it is contained entirely within the L2 cache and, after
  746. that, within the processors' internal (L1) cache.  As it reaches these points,
  747. the processing speed increases as less wait states are needed to retrieve data
  748. & code from the main system memory (the whole point of the L1 & L2 caches,
  749. anyway).  The program will draw out a graph showing the relationship between
  750. the size of the program and the speed of execution.  In a machine with 256k
  751. cache enabled the chart will show a rapid upward turn from between 512k and
  752. 256k, leveling off below 256k; and another jump between 10k & 8k.  If the cache
  753. is only 128k, the initial acceleration in performance will occur between 256k
  754. and 128k.
  755.  
  756.   Even before performing any of these tests on your system you can get a
  757. possible indicator by browsing through the manual for the motherboard.  These
  758. manuals typically contain information on how to set motherboard jumpers to
  759. accommodate various configurations, including various cache sizes.  If the
  760. manufacturer doesn't want you to be able to fiddle with the cache configuration
  761. they will usually put in something like 'see your distributor regarding cache
  762. upgrades' and they will leave out crucial information relating to adjusting the
  763. jumpers for different cache sizes.
  764.   
  765. The reason that the BIOS can state on bootup that the cache size is '256k' is
  766. because the manufacturers normally receive a 'base' BIOS code from the BIOS
  767. manufacturer (like AMI) and then 'tweak' that code to work with their
  768. particular motherboard.  It is a simple thing for them to at that point 'fix'
  769. the BIOS so that is states that the cache size is 256k when it is, in
  770. actuality, not 256k but rather 128k or perhaps none at all.
  771.  
  772. NOTE: Obviously, I am (submitting) this because, after reading some
  773. conversation on the comp.ibm.pc.hardware.chips usenet group on the topic, I
  774. decided to test my own 486-100 system (motherboard was a self-installed
  775. upgrade) and discovered that it only had a 128k cache and not the 256k cache
  776. it was supposed to have (as stated in the manual as well as on the packaging).
  777.  
  778. ───────────────┬─────────────────────────────────────────────┬───────────────
  779.            │                  Dear Abby                  │
  780.            └─────────────────────────────────────────────┘
  781.  
  782. [Got a letter for Abby? Send it to me, and I'll see that she gets it, and that
  783. your letter along with her response get published in the next WWIVNews!]
  784.  
  785.  
  786. ───────────────┬─────────────────────────────────────────────┬───────────────
  787.            │                  Classified                 │
  788.            │                     Ads                     │
  789.            └─────────────────────────────────────────────┘
  790.  
  791. A new feature here in WWIVNews is the Classified Ads Department. It's a place
  792. where utility authors can let everyone know about their most-recent offering
  793. to WWIV.  This issue is a little skimpy due to negative replies, but look
  794. forward to a more-complete list next time.
  795.  
  796. (Note to shareware/utility authors:  If you would like you products listed
  797. here, please include a *brief* description of them <including registration
  798. fee, if any> and I will be happy to include them in the next issue, due out
  799. around March).
  800.  
  801.                    -=■=-
  802.  
  803. ───────────────┬─────────────────────────────────────────────┬───────────────
  804.            │            On the Lighter Side              │
  805.            │        A Compilation by Sam (1@2863)        │
  806.            └─────────────────────────────────────────────┘
  807.  
  808.  
  809. How many of these quotes from (mostly) cyber-movies can you identify?  Name
  810. the movie they came from.  At the end there is a tiebreaker.  Beyond that, if
  811. there is still a tie, the winner will be decided by random drawing.
  812.  
  813. The prize is a yet-to-be-determined registration for a WSS product, and your
  814. name up in lights in the next WWIVNews!
  815.  
  816. 1) "I never learned how to swim. I always thought there would be more time."
  817.  
  818. 2) "It's Czechoslovakia!  It's like going into Wisconsin!"
  819.  
  820. 3) "Joey, do you like movies about gladiators?"
  821.  
  822. 4) "Thank you sir, may I have another?"
  823.  
  824. 5) "It bleeds. We can kill it."
  825.  
  826. 6) "Great shot kid!  That was one in a million!"
  827.  
  828. 7) "Be the ball, Danny."
  829.  
  830. 8) "Heeeeeeeere's Johnny!"
  831.  
  832.  
  833. Tiebreaker:
  834.  
  835. "Help you? Who do you think brought the rope?"
  836.  
  837.                    -=■=-
  838.  
  839. ───────────────┬─────────────────────────────────────────────┬───────────────
  840.            │              Closing Thoughts               │
  841.            │        Editor's Notes by Sam (1@2863)       │
  842.            └─────────────────────────────────────────────┘
  843.  
  844. Well, this concludes another (albeit abbreviated) edition of WWIVNews.  As many
  845. of you are aware, I recently moved from Texas to Kansas to take on a new job
  846. as WAN administrator for a multi-national corporation. Getting moved and 
  847. settled in has taken a great deal of my time, and I apologize for the delay in
  848. getting this edition out.
  849.  
  850. One major change is taking place here at WWIVNews. It has been decided by both
  851. Wayne and myself that WWIVNews should have a staff. So, we are officially
  852. taking applications for interested people to become a part of WWIVNews. All
  853. interested parties should email me at 1@2863. We will probably limit the
  854. number of people to five or less, so don't be disappointed if you are turned
  855. down.
  856.  
  857.                    -=■=-
  858.  
  859. ┌───────────────────────────────────────────────────────────────────────────┐
  860. │                             Closing Credits                               │
  861. ├───────────────────────────────────────────────────────────────────────────┤
  862. │ WWIVNews is an independent newsletter published every two-three months as │
  863. │ a service to the WWIV community of sysops & users. The opinions & reviews │
  864. │ expressed herein are the expressed views of the respective writers, & do  │
  865. │ not necessarily reflect those of the WWIVNews staff. Reproduction in whole│
  866. │ or in part is allowed provided credits are given. All rights reserved by  │
  867. │ WWIVNews, and all articles are copyright of their respective authors.     │
  868. ├───────────────────────────────────────────────────────────────────────────┤
  869. │ The source site for WWIVNews is Sam's BBS (913-859-9358 or 859-9476)      │
  870. │ WWIVNet Node @2863. Requests for information regarding articles & other   │
  871. │ editorial submissions, as well as back issue requests and the WWIVNews    │
  872. │ Writer's Guide, can be sent E-Mail to the WWIVNews editor, c/o 1@2863     │
  873. ├───────────────────────────────────────────────────────────────────────────┤
  874. │            WWIV and WWIVNet, copyright 1986,1996 by Wayne Bell            │
  875. │  Any product or company mentioned or reviewed herein are copyrighted of   │
  876. │  their respective owners, creators, and other corporate pseudoentities.   │
  877. └───────────────────────────────────────────────────────────────────────────┘
  878.  
  879. Who is General Failure and why is he reading my disk?
  880.  
  881.      Computer analyst to programmer: "You start coding.  I'll go
  882.      find out what they want."
  883.  
  884.     I modem, but they grew back.
  885.  
  886.        Modem:  How a Southerner asks for seconds.
  887.