saramibreak / DiscImageCreator

This is the disc (CD, GD, DVD, HD-DVD, BD, GC/Wii, XBOX, XBOX 360) and disk (Floppy, MO, USB etc) image creation tool
http://forum.redump.org/topic/10483/discimagecreator/
Apache License 2.0
513 stars 45 forks source link

Feature Request - DVD mode - A flag to dump a specified range of sectors rather than the entire disc #211

Closed ehw closed 1 year ago

ehw commented 1 year ago

Is your feature request related to a problem? Please describe. Currently, DIC provides no means of dumping a specified range of sectors for DVD (and normal CD) mode. This is a bit inconvenient as some discs we have can only be read partially in a given drive, but we'd like to just focus on dumping a specific range of sectors from the disc to retry over and over. Otherwise, DIC would have to dump the entire disc again from the beginning in order to get to the region we want to dump. Not only does it take a longer amount of time, the disc could experience errors that cause the drive to slow to a crawl making seeking to the desired range more frustrating.

Having this feature would be immensely useful for disc and data integrity analysis.

Describe the solution you'd like I would like DIC to have a parameter for DVD mode, or maybe all modes in general since Data mode is the only mode currently able to support this, so that I can specify a range of LBAs for it to dump. I should be able to have all the parameters accessible for that given mode. Maybe something like /ra (for 'range') StartLBA EndLBA? For example:

I want to dump LBA range 123 to 175, so I run...

DiscImageCreator dvd E disc.iso 24 /ra 123 175

The resulting disc.iso should only have the user mode sectors from 123 to 175.

saramibreak commented 1 year ago

DiscImageCreator_test.zip

ehw commented 1 year ago

Works, thank you! :) I checked the dump and it hit the start and end LBA on the nose.

It doesn't work in raw mode, DIC just dumps the disc like normal from the start of the disc. Can it work in raw mode too?

Is there anything that would prevent /ra to be used for any mode (CD, Xbox, etc)?

saramibreak commented 1 year ago

DiscImageCreator_test.zip

CD

Use audio or data.

ehw commented 1 year ago

DiscImageCreator_test.zip

  • added: /ra for xbox and dvd /raw (NOT TEST)

CD

Use audio or data.

/raw doesn't work, it keeps expecting the first PSN (30000) but the drive wants to return another sector it seems:

I have a .bat file to dump individual sectors off the disc into separate files with added numbers on them. The bat file works when reading the disc normally, but raw mode seems broke for sure. I'm not able to read anything.

DiscImageCreator.exe dvd D 1908000-!counter!.iso 24 /ra 1908000 1908001 /q /ps 0x00 /rr 10 /raw DiscImageCreator.exe dvd D 1908001-!counter!.iso 24 /ra 1908001 1908002 /q /ps 0x00 /rr 10 /raw DiscImageCreator.exe dvd D 1908002-!counter!.iso 24 /ra 1908002 1908003 /q /ps 0x00 /rr 10 /raw AppVersion 32 bit, AnsiBuild, 20230520T145823 CurrentDirectory H:\Tools\DiscImageCreator\test2 WorkingPath Argument: 1908000-1.iso FullPath: H:\Tools\DiscImageCreator\test2\1908000-1.iso Drive: H: Directory: \Tools\DiscImageCreator\test2\ Filename: 1908000-1 Extension: .iso StartTime: 2023-05-20T02:16:39-0400 Set the drive speed: 0KB/sec DiskSize of [H:\Tools\DiscImageCreator\test2] Total: 2000363188224 bytes Used: 1953781153792 bytes

    Space:    46582034432 bytes
     => There is enough disk space for dumping

Rawdump command [0]:0x3c [1]:0x02 [2]:0000 LBA[1908000, 0x1d1d20]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908000 (Pass 1/10) Expected sector num: 30000, Got sector num: 201d20 [0/1][0/1] Reread 2. LBA: 1908000 Creating raw(LBA) 1908001/1908001 EndTime: 2023-05-20T02:17:09-0400 AppVersion 32 bit, AnsiBuild, 20230520T145823 CurrentDirectory H:\Tools\DiscImageCreator\test2 WorkingPath Argument: 1908001-1.iso FullPath: H:\Tools\DiscImageCreator\test2\1908001-1.iso Drive: H: Directory: \Tools\DiscImageCreator\test2\ Filename: 1908001-1 Extension: .iso StartTime: 2023-05-20T02:17:09-0400 Set the drive speed: 0KB/sec DiskSize of [H:\Tools\DiscImageCreator\test2] Total: 2000363188224 bytes Used: 1953784352768 bytes

    Space:    46578835456 bytes
     => There is enough disk space for dumping

Rawdump command [0]:0x3c [1]:0x02 [2]:0000 LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 1/10) LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 2/10) LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 3/10) LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 4/10) LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 5/10) LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 6/10) LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 7/10) LBA[1908001, 0x1d1d21]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908001 (Pass 8/10) Expected sector num: 30000, Got sector num: 201d20 [0/1][0/1] Reread 9. LBA: 1908001 Creating raw(LBA) 1908002/1908002 EndTime: 2023-05-20T02:20:59-0400 AppVersion 32 bit, AnsiBuild, 20230520T145823 CurrentDirectory H:\Tools\DiscImageCreator\test2 WorkingPath Argument: 1908002-1.iso FullPath: H:\Tools\DiscImageCreator\test2\1908002-1.iso Drive: H: Directory: \Tools\DiscImageCreator\test2\ Filename: 1908002-1 Extension: .iso StartTime: 2023-05-20T02:20:59-0400 Set the drive speed: 0KB/sec DiskSize of [H:\Tools\DiscImageCreator\test2] Total: 2000363188224 bytes Used: 1953807872000 bytes

    Space:    46555316224 bytes
     => There is enough disk space for dumping

Rawdump command [0]:0x3c [1]:0x02 [2]:0000 LBA[1908002, 0x1d1d22]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908002 (Pass 1/10) LBA[1908002, 0x1d1d22]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908002 (Pass 2/10) LBA[1908002, 0x1d1d22]: [F:ReadDVDRaw][L:936] Opcode: 0xa8 ScsiStatus: 0x02 = CHECK_CONDITION SenseData Key-Asc-Ascq: 03-02-80 = MEDIUM_ERROR - VENDOR UNIQUE ERROR Read retry from 1908002 (Pass 3/10) Expected sector num: 30000, Got sector num: 201d20 [0/1][0/1] Reread 4. LBA: 1908002 Creating raw(LBA) 1908003/1908003 EndTime: 2023-05-20T02:22:28-0400

ehw commented 1 year ago

One thing I just thought of.

DIC doesn't need to access the TOC or the directory structure, etc when /ra is used right? It seems a bit successive. Depending on the quality of the disc, for instance a disc where the TOC or lba 0 is damaged, it'll make DIC either error out completely before it even reads the specified range or at best takes a long time to just read that range.

Can you make it so DIC doesn't have to do as much before it gets right into dumping the range? If you think about it, since you're looking at just the range you don't really need to get the data for the disc or vol logs (mainerror is still vital, however). So getting rid of those as well as the data fetch for those logs when /ra is used would be beneficial. DMI and PFI files also don't necessarily need to be generated.

We're currently trying to read sectors off a disc that has this issue with the TOC, around the beginning. The sector ranges we want to read are fine, but DIC will end if it encounters errors before it dumps anything.

saramibreak commented 1 year ago

/raw doesn't work

Fixed it. DiscImageCreator_test.zip

One thing I just thought of.

These are needed reading sectors. Not all files, but I don't filter it.

ehw commented 1 year ago

/raw doesn't work

Fixed it.

DiscImageCreator_test.zip

One thing I just thought of.

These are needed reading sectors. Not all files, but I don't filter it.

Works :). Xbox as well. Feel free to merge.