SPI
Serial Peripheral Interface
Dernière mise à jour
Cet article vous a-t-il été utile ?
Serial Peripheral Interface
Dernière mise à jour
Cet article vous a-t-il été utile ?
Une liaison SPI est un bus de données série synchrone baptisé ainsi par Motorola, au milieu des années 1980 qui opère en mode full-duplex. Les circuits communiquent selon un schéma maître-esclave, où le maître contrôle la communication.
SPI utilise les quatre lignes suivantes pour communiquer (sans compter la terre):
CIPO (Controller In, Peripheral Out): Pour les messages envoyés des périphériques au contrôleur.
COPI (Controller Out, Peripheral In): Pour les messages envoyés du contrôleur aux périphériques.
SCK (Serial Clock): Pour un signal oscillant qui indique quand les appareils doivent lire les lignes de données.
CS (Chip Select): Pour sélectionner le périphérique qui doit recevoir les données.
Les puces de mémoire flash contiennent souvent le micrologiciel de l'appareil et d'autres éléments importants, ce qui en fait une cible idéal pour un pirate.
Les puces de mémoire flash sont généralement constitués de 8 ou 16 pins, il est également possible de retrouver ces informations via la datasheet du produit retrouvable sur le site du fabriquant ou sur le web. Une fois la puce identifiée, on devrait être capable de trouver le premier pin en se fiant au point se trouvant normalement sur l'un des coin de la puce.
On va ensuite utiliser l'utilitaire flashrom disponible nativement dans linux pour interagir avec la puce.
Dans un premier temps, on va vérifier si l'appareil est connecté avec la commande:
$ ls /dev/tty*
On va ensuite utiliser la commande $ flashrom -p buspirate_spi:dev=/dev/ttyUSBX
avec X = numéro associé à l'appareil connecté.
Cette commande identifiera alors la puce SPI ou renverra No EEPROM/flash device found
si il est incapable de l'identifier.
Pour lire le contenu de la puce, on va d'abord utiliser la commande:
$ flashrom -p buspirate_spi:dev=/dev/ttyUSBX -r out.bin
Puis afin d'obtenir un résultat lisible, on va utiliser le script spiflash.py de libmpsse.*
Installation:
Utilisation:
$ spiflash.py -r out.bin -s $((<taille des données à lire>))
Exemple pour 8MB:
$ spiflash.py -r out.bin -s $((0x800000))
Une fois les pins identifiés, il est alors possible d'y brancher une 8 ou 16 pattes selon la puce.
Une fois le branchement effectué, on va ensuite utiliser un adaptateur USB to serial type pour permettre de faire le lien entre l'EEPROM et notre PC.
ressource: