0

I'm developing a copy protection. It must be able to identify compact disks using some features like sector angles or exact physical location of sectors (Data Position Measurement). So the question is which features I can use to do this and how I can get some information about them, especially angles of sectors?

As you know the main point is that these features must change in each time the disk is copied.

Preferred languages are C++ and C#.

Thanks.

2 Answers2

1

Basically you can't.

Sector angles and read radius are information, that are not exposed by the average optical drive, you would need to modify the firmware of the drive to send this information to the host.

There is even more: Depending on environmental conditions the drive's view of these parameters might change quite heavily, and production tolerance (most of all the center hole not being exactly at the center of the disk) will make it very hard to use this information, as it will change between different specimens of an identical disk.

Most important: This will not create any copy protection - if you can verify this information, so can someone else, allowing him to use it to create a godd-enough copy.

The fundamental rule is: Any information, that you can extract from the disk to verify its authenticy can also be extracted to copy it - this is the reason, why copy protection schemes work best in locked-down hardware (e.g. game consoles), where the drive firmware really is adapted to it.

Eugen Rieck
  • 64,175
  • 10
  • 70
  • 92
  • Eugen please see [this](http://club.myce.com/f80/defeating-starforce-3-5-cd-using-alcohol-sfcopy-160425/). – user3408433 Mar 12 '14 at 12:46
  • Eugen please see [this](http://club.myce.com/f80/defeating-starforce-3-5-cd-using-alcohol-sfcopy-160425/). In this page the author has shown usage of SFCopy app. It might be an illegal app but I means it's possible to get such information from CDs or DVDs with normal optical drives. The problem is that I don't know how it works. When I analyzed sfcopy I found it calls DeviceIoControl with IOCTL code 0x0004D004 but I didn't find this code in the MSDN. If you can download it and test it on a CD. Thanks – user3408433 Mar 12 '14 at 12:56
  • The angles mentioned here are just interpolated from the time it takes to get to the data and the rotaional speed - both data are easily accessible from the drive. Call them "virtual angles" if you want. You might have noticed, that your posts point to a successfull circumvention, so the fundamental rule "If you can play it, you can copy it" still stands. – Eugen Rieck Mar 12 '14 at 13:11
  • IOCTL 0x0004D004 is SCSI passthrough I think, which would make sense. – Eugen Rieck Mar 12 '14 at 13:14
0

Exact measures won't work, but that's not necessary for fingerprinting purposes. You can measure seek times between any pair of sectors.

I intentionally said "fingerprinting". You will first need to measure inter-device variation for your intended market (which is probably PC, not XBox, right? So that's quite some variation). Then, you need to investigate correlations - what's the relation between two-track and three-track seek times?

Finally, you need to come up with an appropriate tolerance. Smudges on disks WILL cause seek errors.

MSalters
  • 173,980
  • 10
  • 155
  • 350
  • Is the seek times different for each copy of the disk? If yes, please explain how I can measure seek times? Thanks – user3408433 Mar 12 '14 at 12:45
  • @user3408433: If you need to ask such basic questions, you're out of your league. Leave this problem to more experienced people. (Also, these questions are off-topic here) – MSalters Mar 12 '14 at 12:59