Drive-Trust-Alliance / sedutil

DTA sedutil Self encrypting drive software
603 stars 233 forks source link

Some NVMe disks are not recognized as OPAL 2.0 #376

Closed fjmbaeza closed 2 years ago

fjmbaeza commented 2 years ago

I have tried the command query in 4 different disks and the output of query of them is the following:

The 3 that don´t recognize OPAL 2.0:

\.\PhysicalDrive1 USB Samsung SSD 970 PRO 1TB ... ... ... OPAL 2.0 function (0x0203) Base comID = 0x1004, Initial PIN = 0x00, Reverted PIN = 0x00, comIDs = 1 Locking Admins = 4, Locking Users = 9, Range Crossing = N 2 Unknown function codes IGNORED

\.\PhysicalDrive1 USB FLEXXON PCIe M.2 ... ... ... OPAL 2.0 function (0x0203) Base comID = 0x0888, Initial PIN = 0x00, Reverted PIN = 0x00, comIDs = 1 Locking Admins = 4, Locking Users = 9, Range Crossing = N 1 Unknown function codes IGNORED

\.\PhysicalDrive1 USB ATP I-Temp. NVMe M.2 2280 SED SSD ... ... ... OPAL 2.0 function (0x0203) Base comID = 0x0888, Initial PIN = 0x00, Reverted PIN = 0x00, comIDs = 1 Locking Admins = 4, Locking Users = 9, Range Crossing = N 1 Unknown function codes IGNORED

The one which is recognized as OPAL 2.0

\.\PhysicalDrive1 USB FOREMAY-OC177-1TB ... ... ... OPAL 2.0 function (0x0203) Base comID = 0x07fe, Initial PIN = 0x00, Reverted PIN = 0x00, comIDs = 1 Locking Admins = 4, Locking Users = 9, Range Crossing = N

having a look to the code and debugging a bit on DtaDev.cpp I have noticed that the disk that recognizes OPAL 2.0 has a hdr->length of 0xA0(160), but with the disks that don´t recognizes OPAL 2.0 this value is greater than 0xA0. It is 0xB0 in 2 disks and 0xB4 in the Samung one.

All disks work correctly using OPAL commands, but the only point is this warning on query. Is this a known error or is there anything that may fix this warning?

Thanks in advance

r0m30 commented 2 years ago

The OPAL 2.0 function (x203) section means that they are recognized as OPAL. The warning xxx unrecognized segments doesn't mean that they are not OPAL 2, it means that the discovery0 response contains segments that are not decoded by sedutil. They are usually vendor specific segments that you have to get documentation from the drive manufacturer to decode and do not affect the normal operation of sedutil. What USB adapter are you using?

fjmbaeza commented 2 years ago

The adapter I am using is FIDECO M.2 NVME EnclosureUSB 3.1 Gen 2 (10Gbps)

What could I add to read that information in a generic way for all disks?

r0m30 commented 2 years ago

As a normal person you won't get the info from a disk manufacturer so there is no useful information you can convey. If you wanted to do something you could print them out with a hex dump of the data like: Unknown function (0xaaa) abcdef01 23456789 .... ....

I don't know that it will tell you or anyone else valuable information.

fjmbaeza commented 2 years ago

You are right. In fact it is not relevant information as it depends on every manufacturer.

Thanks for your help.