Translate

viernes, febrero 23, 2018

Como cambiar el CID en una Samsung Evo+

Como cambiar el CID en una Samsung Evo+

 1.1 Hardware y software:

  • Portátil con lector de tarjeta SD interno conectado a un bus IDE o PCI. NOsirven lectores USB internos o externos. También se puede usar un telefono o tablet android con lector de SD y con acceso ROOT.
  • Tarjeta Samsung Evo+ con CID cambiable.
  • Programa evoplus_cid que se descarga de: https://github.com/raburton/evoplus_cid
  • Si se usa un portátil necesitamos tener instalada una distribución linux de 64bits, aunque también sirve perfectamente un live disc, o un usb (www.slax.org).
  • Nota: para hacer un live usb con linux 64bits con almacenamiento persistente (para guardar los docuemntos y no se borren en el siguiente boot) usar: https://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/


Nota 1: No todas las Samsung Evo+ sirven, en 32GB estos son los modelos que funcionan:
MB-SC32D/EU
MB-MC32DA/EU
y en 64GB aparentemente son todos los modelos.

Nota 2: Según parece todas las tarjetas que se venden como Samsung y que no permiten el cambio, o son modelos importadas de otros mercados, o son directamente copias falsas. Las auténticas que se venden en el mercado europeo deberían soportar todas el cambio de CID.

1.2 Que es el CID.

El CID es el Card Identification Register, un registro interno de las SD que incorpora información sobre la tarjeta como el fabricante, nº de serie, fecha defabricación, etc. Es un registro de 16 bytes de longitud, en el que 15 bytes son datos y el último byte se usa como suma de control de los anteriores.
El CID se supone que se estampa en el proceso de fabricación, y es de solo lectura, pero recientemente se han descubierto una serie de comandos internos que permiten modificarlo a nuestro antojo.


2.1 Lectura del CID

Para la obtención del CID se busca en linux el fichero en la siguiente ruta:

/sys/class/mmc_host/mmc1/mmc1:0001/cid

se copia el contenido en un fichero txt "originalCID.txt" y se guarda en el disco duro.

Es posible, dependiendo del sistema, que parte de la ruta sea distinta, en vez de "mmc1" sea "mmc0", para averiguarlo, se entra dentro de la ruta /sys/class/mmc_host/  y en ese momento se mete y se saca en el lector la sd card y actualizando con F5 vemos aparecer/desaparecer el directorio "mmcX".

El CID tiene un tamaño de 15+1 bytes (32 caracteres), siendo el último una suma de control. Es habitual que en el último byte aparezca como 00, esto es un error en la mayoria de los firmwares de los lectores de tarjetas, y que no son capaces de mostrar el último byte y por defecto muestra 00. Esto no es muy importante ya que el programa evoplus_cid admite la escritura de los 15 primeros bytes, calculando y escribiendo por nosotros el último byte.


2.2 Compilación en Ubuntu 16.04 LTS 64b

Una vez descomprimido el fichero que hemos descargado de github, debemos abrir un terminal dentro de la carpeta jni y compilar con el siguiente comando:

"gcc -o evoplus_cid evoplus_cid.c"


2.3 Cambio del CID

En el mismo terminal ejecutamos el nuevo comando compilado, que tiene la siguiente sintaxis:

./evoplus_cid

Un ejemplo sería:

"./evoplus_cid /dev/block/mmcblk1 744a454e2f412020106c6d77470104c3"

Hecho esto ya deberíamos tener el nuevo CID cambiado. Si el último byte del CID es 00 (por probable error de lectura) podremos omitirlo, y con eso el programa calculará el último byte y lo escribirá por nosotros. El comando anterior en ese caso quedaría asi:

"./evoplus_cid /dev/block/mmcblk1 744a454e2f412020106c6d77470104"

La ruta del dispositivo puede no ser "mmcblk1", pudiendo ser "mmcblk0" u otra, dependiendo del hardware y de la distribución linux empleada, asi que antes de ejecutar el comando se debería ver en el explorador de archivos si la ruta es correcta, usando la misma tecnica que en el apartado 2.1 (meter y sacar la tarjeta y ver lo que aparece en "/dev/block/")

Bye.


Fuentes:
http://richard.burtons.org/2016/07/01/changing-the-cid-on-an-sd-card/
http://richard.burtons.org/2016/07/31/cid-change-on-sd-card-update-evoplus_cid/
http://www.cameramemoryspeed.com/sd-memory-card-faq/reading-sd-card-cid-serial-psn-internal-numbers/