superg / redumper

Low level CD dumper utility
GNU General Public License v3.0
187 stars 17 forks source link

Identify DVD structure copy protections #96

Open Feathered-Serpent opened 8 months ago

Feathered-Serpent commented 8 months ago

Heya,

I've got several video DVDs which have some structure copy protection, that means, unreadable sectors by design. Usually it is RipGuard, but also dan be ARccOS.

At least the first one can, as much as I know, noticed by this string:

redumper v2023.11.18 build_261 [Nov 18 2023, 22:44:43]

arguments: info --image-name=dump_231119_142845_D

image path: .
image name: dump_231119_142845_D

*** INFO

ISO9660 [dump_231119_142845_D.iso]:
  volume identifier: CD20EUW2
  PVD:
0320 : 20 20 20 20 20 20 20 20  20 20 20 20 20 32 30 30                200
0330 : 37 30 39 30 34 31 35 31  32 35 30 30 30 E0 30 30   7090415125000.00
0340 : 30 30 30 30 30 30 30 30  30 30 30 30 30 30 00 30   00000000000000.0
0350 : 30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 00   000000000000000.
0360 : 30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30   0000000000000000
0370 : 00 01 00 4D 56 53 4E 52  47 46 50 0A 01 03 00 84   ...MVSNRGFP.....

*** END

MVSNRGFP it is. Not sure if an information should be given for the user, but a refine can never fix those defect-by-design-sectors.

superg commented 8 months ago

Thanks for the info! I can potentially skip intentionally damaged sectors if I know the system. Can you provide full dump log with --verbose option? It should print all LBAs where SCSI error is returned. Will be nice to have it documented here before I get to it to fix.

Feathered-Serpent commented 8 months ago

Yes, I can. But please keep in mind, I did not change any options, so it read 32 sectors at once. This doesn't mean that every sector in the first run is defect: redumper.txt

E.g. if I run a refine, where it reads sector by sector, it starts like this:

*** REFINE

[sector: 3010208] correction success                    
[sector: 3010209] correction success                    
[sector: 3010210] correction success                    
[sector: 3010211] correction success                    
[sector: 3010212] correction success                    
[sector: 3010213] correction success                    
[sector: 3010214] correction success                    
[sector: 3010215] correction success                    
[sector: 3010216] correction success                    
[sector: 3010217] correction success                    
[sector: 3010218] correction success                    
[sector: 3010219] correction success                    
[sector: 3010220] correction success                    
[sector: 3010221] correction success                    
[sector: 3010222] correction success                    
[sector: 3010223] correction success                    
[sector: 3010224] correction success                    
[sector: 3010225] correction success                    
[sector: 3010226] correction success                    
[sector: 3010227] SCSI error (SC: CHECK CONDITION, SK: MEDIUM ERROR, ASC: UNRECOVERED READ ERROR, ASCQ: 05, retry: 1)

Then it hits the first sector which is really unreadable. I am not sure if you can find out the sectors, which are really not there. By just reading the whole disc in another program and noting down the sectors which are defect, I e.g. found those for this particular disc: 3010227 - 3010431 3012019 - 3012655 3292874 - 3293087 3294666 - 3294879 3522336 - 3522543 3524128 - 3524335 3686133 - 3686335 3687925 - 3688127

the first range already seem to match (at least the start of it). If it can't be found out, then maybe show a message, that this disc contains intentional defect sectors.

superg commented 8 months ago

Yeah I forgot that I read it batch on the initial dump. The ranges output from other program will help, thank you.

Feathered-Serpent commented 8 months ago

the refine came over the first range of sectors:

[...]
[sector: 3010431] correction failure
[sector: 3012000] correction success
[sector: 3012001] correction success
[sector: 3012002] correction success
[sector: 3012003] correction success
[sector: 3012004] correction success
[sector: 3012005] correction success
[sector: 3012006] correction success
[sector: 3012007] correction success
[sector: 3012008] correction success
[sector: 3012009] correction success
[sector: 3012010] correction success
[sector: 3012011] correction success
[sector: 3012012] correction success
[sector: 3012013] correction success
[sector: 3012014] correction success
[sector: 3012015] correction success
[sector: 3012016] correction success
[sector: 3012017] correction success
[sector: 3012018] correction success
[sector: 3012019] SCSI error (SC: CHECK CONDITION, SK: MEDIUM ERROR, ASC: UNRECOVERED READ ERROR, ASCQ: 05, retry: 1)
[sector: 3012019] correction failure
[...]

Not sure if such a disc is noticed, that the refine process will check if there are consecutive defect sectors and then tries reading the first sectors until it finds the first error, and then reading backwards from the last sectors until it finds the really last error. Just a thought, if you can follow that one.

Of course it won't help with the initial dump, because Redumper then of course has to read at least once all sectors.

Damn, I noticed the ultimate flaw of taking a disc, which has multiple ranges of hundreds of such sectory... making a "test dump and refine" on that one will take hours cries ;D

Feathered-Serpent commented 8 months ago

I just wanted to add, that these ranges are just for that specific DVD of course. On other discs there are other ranges, can be more ranges can be less ranges. Just the MVSNRGFP is the same there.

superg commented 8 months ago

Yes, that is understandable. I'll spend some time investigating it when I get to this ticket so hopefully we will have a good solution here.

Feathered-Serpent commented 8 months ago

Currently I have 17 DVDs knowing every range with defect sectors. So I can easily test anything if you like me to. It goes from 2 up to 42 defect sector ranges.

Take your time. I'm just glad you noticed :)