4

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

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

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

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

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


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

2 ответа2

4

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

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

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

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

2

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

В статье « Чтение внутренней информации 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 и информацию внутри него.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .