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