Generating discatt.dat/discattd.dat files

Discussion of advanced MakeMKV functionality, expert mode, conversion profiles
Post Reply
Firefall
Posts: 7
Joined: Wed Dec 31, 2025 2:21 am

Generating discatt.dat/discattd.dat files

Post by Firefall »

Hello! I have a collection of encrypted ISOs of regular and of 4K blu-rays. BEE discs were imaged with LibreDrive, i.e. the images have bus encryption removed. I have VID, MK and VUK of all of these images. Is there a way I can generate the discatt.dat file so that MakeMKV can work with these images and produce MKVs from them? At the moment, I mount the ISOs in a virtual drive and use Xreveal + mkvmerge instead, but would prefer to use MakeMKV.
MrPenguin
Posts: 1596
Joined: Thu Oct 19, 2023 11:31 pm

Re: Generating discatt.dat/discattd.dat files

Post by MrPenguin »

Firefall wrote:
Wed Dec 31, 2025 2:31 am
Is there a way I can generate the discatt.dat file so that MakeMKV can work with these images and produce MKVs from them?
The obvious answer would be to put your original disks into your drive and use MakeMKV to generate a new discatt.dat for each via its "disk backup" feature.
Firefall
Posts: 7
Joined: Wed Dec 31, 2025 2:21 am

Re: Generating discatt.dat/discattd.dat files

Post by Firefall »

MrPenguin wrote:
Wed Dec 31, 2025 12:27 pm
The obvious answer would be to put your original disks into your drive and use MakeMKV to generate a new discatt.dat for each via its "disk backup" feature.
Agreed, but I have 600+ discs imaged already and can't go through the pain of re-inserting them all.
MrPenguin
Posts: 1596
Joined: Thu Oct 19, 2023 11:31 pm

Re: Generating discatt.dat/discattd.dat files

Post by MrPenguin »

Firefall wrote:
Fri Jan 02, 2026 4:13 pm
Agreed, but I have 600+ discs imaged already and can't go through the pain of re-inserting them all.
You don't really have a choice. The discatt.dat file format is not documented, and AFAIK its contents are obtained from the disk using LibreDrive. Only MakeMKV can generate it.
Firefall
Posts: 7
Joined: Wed Dec 31, 2025 2:21 am

Re: Generating discatt.dat/discattd.dat files

Post by Firefall »

MrPenguin wrote:
Sat Jan 03, 2026 12:34 pm
You don't really have a choice. The discatt.dat file format is not documented, and AFAIK its contents are obtained from the disk using LibreDrive. Only MakeMKV can generate it.
Maybe not right now, but Mike might be able to document the format. A lot of the content seems irrelevant for decryption (driver version, drive HW information, MakeMKV version), so I don't think it's impossible or unrealistic to generate the file.
SamuriHL
Posts: 2723
Joined: Mon Jun 14, 2010 5:32 pm

Re: Generating discatt.dat/discattd.dat files

Post by SamuriHL »

Look at the source code if you want to see the format. But knowing the format isn't going to help you. You can't just create one.

Sent from my SM-S938U1 using Tapatalk

Firefall
Posts: 7
Joined: Wed Dec 31, 2025 2:21 am

Re: Generating discatt.dat/discattd.dat files

Post by Firefall »

SamuriHL wrote:
Sat Jan 03, 2026 2:53 pm
Look at the source code if you want to see the format. But knowing the format isn't going to help you. You can't just create one.

Sent from my SM-S938U1 using Tapatalk
OK folks, I've looked at the MakeMKV source code, specifically these files:
  • libdriveio/inc/driveio/driveio.h (typedef enum _DriveInfoId_enum)
  • libdriveio/src/infolist.cpp (DIO_INFOLIST DIO_CDECL DriveInfoList_Create() and CDriveInfoList::Serialize())
I am documenting my findings and progress below, in hope that they will be useful to others:
  • A discatt.dat file is a serialized list of things called "DriveInfo".
  • Each DriveInfo item has a 32-bit type field, a 32-bit size fields, and as much data as indicated by the size field.
  • The first byte of the type indicates the category of information
    • 0x00 = "Invalid" - but used for tagging
    • 0x01 = Drive Standard
    • 0x02 = Drive Specific
    • 0x03 = Disc Standard
    • 0x04 = Disc Specific
    • 0x05 = User Private
  • The remaining 3 bytes indicate the more detailed type of information. Most of the mappings can be found in the _DriveInfoId_enum, but it seems not all.
  • I've compared discatt.dat files from a regular BD and from a UHD disc, both created with the same MakeMKV version and the same drive. The DriveInfo records in them are mostly identical.
    • There are 2 "Invalid" items, which are identical in both files:
      • One at the beginning, which is a libdriveio tag ("Created by libdriveio v2.6[win(x64-release)] http://www.makemkv.com/libdriveio")
      • One at the end, which also seems to be a tag ("MakeMKV v1.18.2 win(x64-release)")
    • There are 44 "Drive Standard" items. The only one that differs is type 0x01030038 (Drive Standard :: Drive Certificate). The certificate listed in there is not my drive certificate, and seems to be invalid. It does not have the BEC flag, and uses ID 123456789ABC. The signature is all zeroes. The certificate might be different because I'm comparing a AACS 1.0 disc with an AACS 2.0 disc.
    • There are 5 "Disc Standard" items, 3 of which differ between the files:
      • 0x03000100 //Disc Standard :: BD Disc Information
      • 0x03010000 //Disc Standard :: TOC
      • 0x03030000 //Disc Standard :: Disc Capacity
    • There is 1 "Disc Specific" item, which differs between the files. It's type 0x04000080, which corresponds to the VID.
To summarize: Assuming the drive certificate is irrelevant, there are only 4 items which differ between discs:
  • 0x03000100 //Disc Standard :: BD Disc Information -> No idea what this is exactly
  • 0x03010000 //Disc Standard :: TOC -> Table Of Contents, should be possible to synthesize (not sure if stored in an ISO)
  • 0x03030000 //Disc Standard :: Disc Capacity -> Should be possible to calculate from the ISO size, also probably doesn't matter at all
  • 0x04000080 //Disc Specific :: AACS VID -> The VID is known in my case and is trivial to encode.
So to me, it seems it should be possible to take one discatt.dat genuinely generated by MakeMKV, and replace these four items to make it transferable to other discs. Of course, this likely wouldn't cover AACS 2.1, but given I've compared a UHD disc with a regular BD, it seems that AACS 1.0 vs AACS 2.0 doesn't even make a difference.
SamuriHL
Posts: 2723
Joined: Mon Jun 14, 2010 5:32 pm

Re: Generating discatt.dat/discattd.dat files

Post by SamuriHL »

It won't work. They are not "transferable" even if you "update these 4 items."
Firefall
Posts: 7
Joined: Wed Dec 31, 2025 2:21 am

Re: Generating discatt.dat/discattd.dat files

Post by Firefall »

SamuriHL wrote:
Sat Jan 03, 2026 6:19 pm
It won't work. They are not "transferable" even if you "update these 4 items."
I don't get it. If I can synthesize a discatt.dat for one disc from that of a different disc, and they are exactly the same as if I had generated the file with MakeMKV, what wouldn't work? I don't understand what you mean by not transferable.
SamuriHL
Posts: 2723
Joined: Mon Jun 14, 2010 5:32 pm

Re: Generating discatt.dat/discattd.dat files

Post by SamuriHL »

Firefall wrote:
Sat Jan 03, 2026 8:26 pm
SamuriHL wrote:
Sat Jan 03, 2026 6:19 pm
It won't work. They are not "transferable" even if you "update these 4 items."
I don't get it. If I can synthesize a discatt.dat for one disc from that of a different disc, and they are exactly the same as if I had generated the file with MakeMKV, what wouldn't work? I don't understand what you mean by not transferable.
"0x03000100 //Disc Standard :: BD Disc Information -> No idea what this is exactly"
Firefall
Posts: 7
Joined: Wed Dec 31, 2025 2:21 am

Re: Generating discatt.dat/discattd.dat files

Post by Firefall »

SamuriHL wrote:
Sat Jan 03, 2026 8:37 pm
"0x03000100 //Disc Standard :: BD Disc Information -> No idea what this is exactly"
I've taken a deeper look. The BD Disc Information is obtained by MakeMKV through an SCSI command ADh ("READ DVD STRUCTURE"). The corresponding response from the drive is cut by MakeMKV to save space, with a now-incorrect length field being retained. The details of the payload are documented here in table 65: https://www.t10.org/ftp/t10/document.05/05-206r0.pdf
The only piece that is missing are the up to 52 bytes of "DI Unit Format dependent contents". The format of these is in a commercially-available BD spec, which I could not obtain. THAT SAID: If MakeMKV does anything with this information, it would most likely need to know what the data represents, which should be discoverable in the source code, no? Perhaps I'll try stubbing out the payload with random data?

On another note for future reference, here is how the capacity field is calculated with an example:

Code: Select all

03030000 //Disc Standard :: Disc Capacity
00000008
015CBA9F00000800
//First 32 bits indicate the number of sectors - 1. In this example, 0x015CBA9F + 1 = 0x15CBAA0 = 22'854'304 sectors
//Last 32 bits indicate the bytes per sector. In this example, 0x00000800 = 2048 bytes
SamuriHL
Posts: 2723
Joined: Mon Jun 14, 2010 5:32 pm

Re: Generating discatt.dat/discattd.dat files

Post by SamuriHL »

Or the data is obfuscated intentionally for a reason.... Which it is.

Sent from my SM-S938U1 using Tapatalk

Firefall
Posts: 7
Joined: Wed Dec 31, 2025 2:21 am

Re: Generating discatt.dat/discattd.dat files

Post by Firefall »

SamuriHL wrote:
Sun Jan 04, 2026 1:39 am
Or the data is obfuscated intentionally for a reason.... Which it is.

Sent from my SM-S938U1 using Tapatalk
Well, joke's on both of us. After hours of research, it turns out that almost ALL of that stuff is unneeded. The only thing that MakeMKV truly needs from discatt.dat is the VID. Here's what works for me:
  • Take an AACS-encrypted backup ISO (if BEE, bus encryption must have been removed with LibreDrive)
  • Mount the ISO, copy the files to a folder
  • Synthesize a discatt.dat with the VID, place it in the same folder (see below). The VID must be known (find e.g. in keydb.cfg, or read with aacskeys, aacs_info, Xreveal...).
  • In MakeMKV, Open files and select the discatt.dat
  • TADA: MakeMKV opens the disc and you can generate an MKV out of it
The above works for UHD discs, too.

How to generate the discatt.dat: Simply produce a file with these hex contents, for example with HxD:

Code: Select all

04000080 00000010 <16 bytes VID here>
The only thing I would appreciate now is if MakeMKV could open the ISO file directly and I could point it to the discatt.dat, instead of having to copy the files each time. Unfortunately, I am unable to determine how the program finds the discatt.dat/which places it checks.
MrPenguin
Posts: 1596
Joined: Thu Oct 19, 2023 11:31 pm

Re: Generating discatt.dat/discattd.dat files

Post by MrPenguin »

Firefall wrote:
Sun Jan 04, 2026 11:13 pm
Well, joke's on both of us. After hours of research, it turns out that almost ALL of that stuff is unneeded. The only thing that MakeMKV truly needs from discatt.dat is the VID.
VIDs are obfuscated for some Pioneer drives. And if we understood that obfuscation, The Powers That KEYDB would be able to use those drives' dumps! MakeMKV must have decided to use your VID "as is", having no other information to work with.

You also cannot possibly generate the discatt.dat file's correct "diid_Aacs_DataKeys" value, or its "diid_DriveCert" value for UHD disks.
Unfortunately, I am unable to determine how the program finds the discatt.dat/which places it checks.
I would imagine that MakeMKV only looks for a discatt.dat file in the ISO file-system's root directory:

Code: Select all

discatt.dat
AACS/
BDMV/
Could you try using symbolic links for the AACS/ and BDMV/ directories, instead of copying them?
SamuriHL
Posts: 2723
Joined: Mon Jun 14, 2010 5:32 pm

Re: Generating discatt.dat/discattd.dat files

Post by SamuriHL »

The vid is not the only thing makemkv needs for discs it doesn't already have a VUK for. There's other data in the discatt.dat that is also obfuscated that makemkv needs to generate a VUK. That's the whole point of the tar.gz dump files that are sent to makemkv.

This whole thing is pointless anyway. If your goal is to have makemkv open protected isos directly and you have the VUK use the keydb.cfg file and put it in the makemkv data directory. Then it doesn't need the discatt.dat file at all.

Sent from my SM-S938U1 using Tapatalk

Post Reply