Me he encontrado con sistemas de licencias que de alguna manera están vinculados al medio de almacenamiento. Si bien basar esto en el UUID del sistema de archivos es bastante sencillo, no creo que sea así (ver más abajo). Un ejemplo típico de este comportamiento es el siguiente:
- En cada arranque, se genera un archivo de identificación.
- El sistema verificará un archivo clave para obtener una licencia. Si la clave coincide con la identificación, entonces todo bien.
- Si no hay una clave, o si la clave no coincide con la identificación (como si se copiara de un sistema diferente), la licencia no es válida.
He observado el siguiente comportamiento:
- Limpiar completamente la tarjeta CF y reinstalar da como resultado que se genere el mismo archivo de identificación, por lo que no se requiere un nuevo archivo de clave.
- Usar la misma clave en un CF diferente no funciona, ya que no coincide con el contenido del nuevo archivo de identificación.
Esto me lleva a concluir que hay una manera de obtener de alguna manera una identificación única de la tarjeta CF. ¿Cómo se puede lograr esto en Linux?
PD:He omitido deliberadamente cualquier detalle del producto en sí, ya que me pregunto en términos más generales cómo un sistema como este puede crear una identificación única de la tarjeta CF.
Respuesta1
La tarjeta tendrá mucha información registrada en modo de solo lectura.
El artículoLectura de información de la tarjeta SD internatiene esto que decir:
Información de la tarjeta SD interna
La información sobre una tarjeta SD está codificada en sus registros internos de tarjetas. Uno de estos es elTarjeta de Identificación (CID)Registro, un código de 16 bytes que contiene información que identifica de forma única la tarjeta SD, incluido el número de serie de la tarjeta (PSN), el número de identificación del fabricante (MID) y la fecha de fabricación (MDT). El registro CID se configura cuando se fabrica la tarjeta y no se puede cambiar una vez configurado. (De acuerdo con las especificaciones de la tarjeta SD, la información solo debe escribirse una vez; sin embargo, si una tarjeta no cumple con las especificaciones, esta información podría cambiarse).
Cómo leer el CID desde una tarjeta SD
Una forma de leer el CID es utilizar una computadora portátil con una ranura para tarjeta SD. Los lectores de tarjetas de los portátiles suelen estar conectados directamente a través del bus PCI (o bus IDE). Esto no funcionará a través de un lector de tarjetas USB porque el comando para recuperar la información de la tarjeta es interceptado y los lectores de tarjetas no lo entienden. No todas las computadoras con ranuras para tarjetas integradas funcionarán; algunos lectores de tarjetas internos están conectados a través de un bus USB.
Suponiendo que tenga el hardware adecuado, existen varios métodos que puede utilizar para obtener la información de la tarjeta. Con Linux, leer la información de la tarjeta SD interna es sencillo. Inserte la tarjeta y mire debajo
/sys/block/mmcblk0/device/
(esta ubicación puede cambiar según su dispositivo). Verá varios atributos disponibles que incluyen el registro CID y la información que contiene.
Respuesta2
Como han comentado otros, podría estar relacionado con la forma en que se borró la tarjeta CF, pero lo más probable es que el software identifique la tarjeta CF según el firmware de la tarjeta.
Esta información normalmente se puede leer usando "udevinfo" - por ejemplo, si la tarjeta CF es /dev/sdb udevinfo -a -p $(udevinfo -q path -n /dev/sdb) - lo más probable es que incluya suficiente información para identificar de forma única la tarjeta.
Nota: en distribuciones basadas en Debian udevadm info
reemplaza udevinfo
:
udevadm info -a -p $( udevadm info -q path -n /dev/sdb )