home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
- ___________________________________________________________________
-
- THE ZAPPER
-
- Volume 1, Number 1
- For Registered Users Of FreeSoft Products
- ___________________________________________________________________
-
- Copy Protecting Diskettes
- -------------------------
-
- The Ultra-Format program has the capability to format diskettes that
- cannot be copied by DOS's DISKCOPY utility. This article will
- explain how to use the Ultra-Format program to produce copy-protected
- diskettes.
-
- The whole idea behind producing copy-protected diskettes is to know
- exactly what DISKCOPY can and can't duplicate. Specifically,
- DISKCOPY looks for and copies only the following:
- 1) Side 0 and Side 1
- 2) Tracks 0 to 39
- 3) Sectors 1 to 8 (512 bytes each).
-
- Knowing this, it is easy to confuse DISKCOPY by formatting a diskette
- outside of these "normal" limits. Although we certainly can't format
- more than two or less than one diskette sides, there are a number of
- other approaches we can take. All disk drives we have used, for
- instance, have been able to format 1 or 2 more tracks than the
- manufacturer specifies. On your IBM-PC, you could actually format
- tracks 40 and 41 if you wanted to. Since DISKCOPY does not look for
- these tracks during a backup, (and, by the way, neither do many
- "pirate" backup programs), any copies made will not contain the
- information in these tracks. Although, due to the way DOS handles
- free disk space, the extra tracks can't be used for programs or
- files, you can use the sectors in these tracks to contain special
- passwords. Use the FORMAT STANDARD TRACK option in Ultra-Format to
- format a track 40 on a scratch diskette. Then, using Ultra-Zap, go
- in with the DISPLAY/MODIFY DISK SECTOR function to insert a secret
- password into one of that track's sectors. If your program has the
- ability to read a raw disk sector, this password can be checked for
- validity. We will discuss this "read a sector" function in more
- detail later.
-
- Another good way to fool DISKCOPY is to format a standard track of 8
- sectors of 512 bytes each, but numbered weirdly (Sectors 32, 34, 5,
- 93, 87, 2, 14, and 201, for instance). Again, a password can be
- inserted and later verified in one of these sectors. Remember that
- DISKCOPY expects the sectors to be numbered consecutively from 1 to
- 8 and won't copy any others.
-
- Finally, you can also format a track containing sectors of a
- different length than 512 btyes. The disk controller circuit in your
- IBM-PC has the ability to format sectors of either 128, 256, 512, or
- 1024 bytes each. You can forget about formatting a track of ten 1024
- byte sectors, though - there just isn't enough room on a track. A
- good rule of thumb is to format sectors in relation to their size.
- That is, four 1024 byte sectors per track, eight 512 byte sectors
- per track, sixteen 256 byte sectors per track, or thirty two 128 byte
- sectors per track. All of these combinations give the same number of
- available bytes for data.
- 2)
-
- When using sectors of other than 512 byte lengths, there is another
- matter to consider. Several bytes in the Disk Parameter Table will
- have to be fiddled with in order to format a track correctly. If you
- don't adjust these values, the resulting track will contain CRC
- errors. CRC (cyclic redundency check) is just a checksum that is
- used by the disk controller circuit to confirm that data is being
- read properly. Of course, you could purposefully format a track with
- CRC errors, try to read a sector, and verify that it is a non-pirated
- copy when it returns a CRC error code. To do this, just format a
- track using the FORMAT NON-STANDARD TRACK option in Ultra-Format.
- When specifying sectors, go ahead and specify the first 7 sectors as
- would be found in a standard track (logical sector numbers 1 through
- 7 with a length value of 2). On the eight sector, specify a length
- value of 3 (meaning 256 bytes). When sector 8 is later read
- (assuming the Disk Parameter Table bytes/sector value is changed to
- value 3), you should get a CRC error.
-
- Don't forget, when you later want to read odd-sized sectors, you will
- have to change the bytes per sector value in the Disk Parameter Table
- to reflect the sector's size. Don't forget to restore this byte back
- to it's original value before doing other disk I/O or exiting your
- program.
-
- Here are the bytes in the Disk Parameter Table that will need to be
- modified before formatting oddly-sized (not 512 bytes) sectors:
-
- 1) Byte #5 (Highest X-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-X
-