Come clonare il CID di una scheda SD

Scheda Navi 900

Ho preparato un video nel quale spiego come cambiare il CID delle schede SD della Samsung.

Voglio chiarire già da ora che la procedura è finalizzata a creare una copia dei backup della propria scheda regolarmente acquistata.

 

Su questo sito si parla di una scheda SD in grado di accettare la modifica del CID è la Samsung Evo plus da 32Gb. E’ stato eseguito un lavoro di reverse engineering su alcuni cellulari Samsung fino a scoprire che esiste una sequenza di comandi che permette tale operazione. Se volete approfondire sul sito dell’ideatore potete trovare altre informazioni.

IMG_0100

Con le istruzioni che vi spiegherò nel dettaglio sono riuscito ad eseguire una copia di backup funzionante delle mappe del navigatore satellitare NAVI 900 della mia Opel Zafira Tourer. Questo backup funziona con tutti i sistemi che verificano che il seriale della SD corrisponda a quello che si trova in un file (ovviamente cifrato).

Non tutti i portatili con lettore SD sono in grado di leggere e cambiare il CID.

Hp DV1000Quello mostrato nella foto è il portatile Hp pavillon DV1000 che utilizzo per le copie. Ho installato la distribuzione Linux Ubuntu

I lettori di schede SD che si collegano mediante porta usb al computer che trovate a pochi euro non sono compatibili: inutile provare. Anche la maggior parte dei lettori già presenti sui PC non sono compatibili… Se però siete i fortunati proprietari di un PC che in grado di leggere il CID come riportato nella guida precedente “come leggere il CID” allora non avrebbe problemi ad effettuare la modifica. Avrò cura di aggiornare la lista dei PC compatibili. L’alternativa è utilizzare un sistema Android (ma questo esula dalle intenzioni di questa guida).

PC compatibili

  • HP pavillon DV 1000
  • Acer Travelmate 4200
  • Sony vaio vgn-fw11s

(lista aggiornata al 30/09/2016)

 

La video guida

Questa è la video guida che ho condiviso su YouTube

Di seguito i comandi lanciati nel terminale mostrati nella guida.

sudo -s
cd /usr/local/src
git clone https://github.com/raburton/evoplus_cid.git
cd evoplus_cid/jni
gcc evolplus_cid.c -o evoplus_cid
./evoplus_cid

Ricordo che la device da utilizzare è:

/dev/mmcblk0

Per cambiare CID si lancia il comando

./evoplus_cid /dev/mmcblk0 [NUOVO CID]

Consiglio di smontare sempre la sd prima di estrarla dal lettore per evitare di danneggiare il filesystem con il comando

umount /dev/mmcblk0

Dopo la modifica è sufficiente una copia dei dati da scheda SD a SD.

7 Risposte a “Come clonare il CID di una scheda SD”

  1. Buongiorno,

    Ho provato a compilare il file ma evoplus_cid mi restituisce diversi errori…

    1. Puoi essere più preciso? Quali errori riporta? Ricorda che per compilare è richiesto di predisporre l’ambiente di sviluppo:

      sudo apt-get update
      sudo apt-get install build-essential

  2. Ciao Alessandro volevo sapere come posso sbloccare una scheda SD SAMSUNG EVO+ RED dopo aver modificato il CID per caricare le mappe sul mio navigatore RNS315 e nello stesso tempo bloccarla altimenti non mi fa fare l’aggiornamneto……praticamente se metto la scheda SD nel PC non me la trova….mentre se la installo nel navigatore la legge,vorrei riutilizzarla in poche parole….c’è un sistema con UBUNTU??
    Cordialmente saluto e ringrazio!!

    1. Le prove se hai fatte con Windows o con un Linux? Che marca e modello di PC usi?
      Se usi Windows e il PC non la legge potrebbe essere un problema di driver del lettore SD: nello specifico il driver potrebbe essere troppo vecchio e non aggiornato per leggere le SDHC. Come riprova potresti utilizzare una qualsiasi scheda SDHC ad esempio di una macchina fotografica e quella di un cellulare. Se nessuna scheda viene letta allora è un problema di driver.
      Se usi Ubuntu nella console digita il comando
      tail -f /var/log/syslog
      e riporta tutto quello che appare quando inserisci la scheda SD nel pc.

  3. Grazie Alessandro.
    Seguendo le tue istruzioni sono riuscito a cambiare il CID della mia samsung da 32GB.
    Ho guardato il sorgente del programma per capire come funziona ed implementarlo su arduino, ma non ci riesco.
    Da quel poco che comprendo dovrebbe funzionare così:
    Con la card inizializzata in SPI mode vengono emessi i comandi

    cmd62 0xEFAC62EC (enter vendor mode)
    cmd62 0xEF50 (unlock the backdoor)
    cmd16 0x16 (predispone 16byte per l’inserimento del nuovo CID)
    cmd26 0x00 0xFE [16bytes NEW CID] (WRITE_CID+single block write start TOKEN+16byte NEW CID)
    cmd62 0x00DECCEE (exit vendor mode)

    Evidentemente c’è qualcosa di sbagliato perchè con l’arduino non ci riesco mentre con ubuntu sì.
    Ho dei dubbi su cmd16 che potrebbe essere opzionale, comunque anche omettendolo l’arduino fallisce.
    Ho anche provato a sostituire cmd16 con cmd17 e ad usare cmd24 invece di cmd26, ma niente da fare.
    Tu ci capisci qualcosa di più?
    Potrebbe essere che non si possa fare perchè la procedura non è eseguibile in modo SPI ma solo in modo SD che non so se è gestibile da arduino.
    Forse si deve selezionare la card mantenendo cs, mosi e miso a livelli ben definiti.
    Boh…

  4. Salve, ho un problema rilevo gli errori riportati sotto e il CID non viene modificato nonostante dica operzione eseguita con successo:

    evoplus_cid.c: In function ‘program_cid’:
    evoplus_cid.c:58:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    idata.data_ptr = (__u64)cid;
    ^
    evoplus_cid.c: In function ‘parse_serial’:
    evoplus_cid.c:107:7: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
    if ((strlen(str) > 2) && (str[0] == ‘0’) &&
    ^
    evoplus_cid.c:107:7: warning: incompatible implicit declaration of built-in function ‘strlen’
    evoplus_cid.c:107:7: note: include ‘’ or provide a declaration of ‘strlen’
    evoplus_cid.c:109:9: warning: implicit declaration of function ‘strtol’ [-Wimplicit-function-declaration]
    val = strtol(str, NULL, 16);
    ^
    evoplus_cid.c: In function ‘main’:
    evoplus_cid.c:135:8: warning: incompatible implicit declaration of built-in function ‘strlen’
    len = strlen(argv[2]);
    ^
    evoplus_cid.c:135:8: note: include ‘’ or provide a declaration of ‘strlen’
    evoplus_cid.c:179:2: warning: implicit declaration of function ‘close’ [-Wimplicit-function-declaration]
    close(fd);

I commenti sono chiusi.