Уникальный идентификатор устройства хранения

1482
Jarmund

Я сталкивался с лицензионными системами, которые как-то связаны с носителем данных. Хотя основывать это на UUID на файловой системе довольно просто, я не верю, что это так (см. Ниже). Типичный пример такого поведения выглядит следующим образом:

  1. При каждой загрузке генерируется id-файл.
  2. Система проверит ключевой файл для лицензии. Если ключ совпадает с идентификатором, то все хорошо.
  3. Если ключ отсутствует или ключ не соответствует идентификатору (как, например, скопирован из другой системы), лицензия недействительна.

Я наблюдал следующее поведение:

  • Полное стирание CF-карты и переустановка результатов в том же генерируемом файле идентификатора, таким образом, новый файл ключа не требуется.
  • Использование одного и того же ключа на другом CF не работает, так как он не соответствует содержимому нового файла идентификатора.

Это приводит меня к выводу, что есть способ получить уникальный идентификатор CF-карты. Как можно добиться этого в Linux?


PS: я намеренно пропустил какие-либо подробности о самом продукте, так как мне интересно больше в общих чертах, как такая система может создать уникальный идентификатор CF-карты.

4
Как правило, стирание CF-карты _не_ не изменит UUID, поэтому ваш эксперимент не будет завершен (если я понимаю ваш пост) без изменения UUID (вы можете использовать gparted, чтобы легко сделать это из меню r-click). Что касается других способов получения этой информации, MS использует аппаратную конфигурацию iirc. Кроме того, в прошивку устройства можно легко вставлять ключи и т. Д. (См. Информацию о конфиденциальности встроенных программ). nonzyro 7 лет назад 2
Ваш ответ может быть здесь: [Чтение внутренней информации SD-карты] (http://www.cameramemoryspeed.com/sd-memory-card-faq/reading-sd-card-cid-serial-psn-internal-numbers/). Найдите внутренние реестры карт в `/ sys / block / mmcblk0 / device /` (YMMV). harrymc 7 лет назад 0
Как сказал nonzyro, это может быть еще UUID. Может ли он быть привязан к серийному номеру привода? Adam Wykes 7 лет назад 0

2 ответа на вопрос

4
davidgo

Как прокомментировали другие, это может быть связано с тем, как была удалена CF-карта, но более вероятно, что программное обеспечение идентифицирует CF-карту на основе встроенного программного обеспечения в карте -

Эта информация обычно читается с использованием «udevinfo» - например, если CF-карта / dev / sdb udevinfo -a -p $ (udevinfo -q путь -n / dev / sdb) - это, скорее всего, будет содержать достаточно информации для однозначно идентифицировать карту.

Примечание : в дистрибутивах на основе Debian udevadm infoзаменяется udevinfo:

udevadm info -a -p $( udevadm info -q path -n /dev/sdb )

В некоторых дистрибутивах (здесь Ubuntu) замените `udevinfo` на` udevadm info`, например, `udevadm info -a -p $ (udevadm info -q path -n / dev / sdb)`. Тем не менее, он просто не предоставил информацию об ожидаемой идентификационной карте CF через мои два устройства чтения карт USB. Stéphane Gourichon 6 лет назад 1
2
harrymc

На карте будет много информации, зарегистрированной только для чтения.

В статье « Чтение внутренней информации SD-карты » сказано следующее:

Внутренняя информация SD-карты

Информация о SD-карте закодирована в ее внутренних реестрах. Одним из них является регистр идентификации карты (CID), 16-байтовый код, который содержит информацию, которая однозначно идентифицирует SD-карту, включая серийный номер карты (PSN), идентификационный номер производителя (MID) и дату изготовления (MDT). Регистр CID устанавливается при изготовлении карты и не может быть изменен после ее установки. (Согласно спецификации SD-карты информация должна быть записана только один раз, однако, если карта не соответствует спецификации, эта информация может быть изменена!)

Как прочитать CID с SD-карты

Один из способов прочитать CID - использовать ноутбук с гнездом для SD-карты. Кард-ридеры в ноутбуках обычно подключаются напрямую через шину PCI (или шину IDE). Это не будет работать через устройство чтения карт USB, потому что команда для получения информации о карте перехвачена и не понята устройствами чтения карт. Не все компьютеры со встроенными слотами для карт памяти будут работать, некоторые внутренние устройства чтения карт подключены через шину USB.

Предполагая, что у вас есть подходящее оборудование, есть несколько методов, которые вы можете использовать для получения информации о карте. В Linux считывание информации с внутренней SD-карты просто. Вставьте карту и посмотрите под /sys/block/mmcblk0/device/(это местоположение может измениться в зависимости от вашего устройства). Вы увидите несколько доступных атрибутов, которые включают в себя регистр CID и информацию внутри него.

CID ** некоторых карт ** можно изменить - см. [Это] (https://github.com/raburton/evoplus_cid) и [это] (https://github.com/beaups/SamsungCID) itsho 5 лет назад 0

Похожие вопросы