๐ชขSPI
Serial Peripheral Interface
Description
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.
SPI est plus simple et plus rapide que l'UART ce qui en fait une technologie plus utilisรฉ que l'UART dans le domaine de l'IoT.
Dumper l'EEPROM via SPI
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.
Identifier la puce et les pins
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.
Une fois les pins identifiรฉs, il est alors possible d'y brancher une pince SOIC 8 ou 16 pattes selon la puce.
Communication
Une fois le branchement effectuรฉ, on va ensuite utiliser un adaptateur USB to serial type Bus Pirate pour permettre de faire le lien entre l'EEPROM et notre PC.
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.
Lire le contenu de la puce
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.*
ressource: https://github.com/devttys0/libmpsse
Installation:
Utilisation:
$ spiflash.py -r out.bin -s $((<taille des donnรฉes ร lire>))
Exemple pour 8MB:
$ spiflash.py -r out.bin -s $((0x800000))
Derniรจre mise ร jour