← retour aux outils back to tools

# flashrom

Identifie, lit, écrit, vérifie et efface les puces flash présentes sur les cartes mères, BIOS/UEFI et appareils embarqués. Identifies, reads, writes, verifies, and erases flash chips found on motherboards, BIOS/UEFI, and embedded devices.

↗ https://www.flashrom.org

## Overview

flashrom is a command-line utility for detecting and manipulating flash memory chips — the SPI/parallel/LPC flash that holds BIOS, UEFI, EC firmware, or embedded device firmware. In hardware and firmware security work it’s the go-to for dumping a chip for analysis, restoring an image after a bricked flash, or patching firmware in place using a hardware programmer (CH341A, Bus Pirate, FT2232, Raspberry Pi GPIO, etc).

## Common Usage

Detect the programmer and chip without touching flash contents

    flashrom -p ch341a_spi

Read the full chip contents to a file

    flashrom -p ch341a_spi -r dump.bin

Verify a dump matches current chip contents

    flashrom -p ch341a_spi -v dump.bin

Write an image back to the chip

    flashrom -p ch341a_spi -w modified.bin

Erase the entire chip

    flashrom -p ch341a_spi -E

## Programmer Selection

Raspberry Pi GPIO as SPI programmer

    flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000

FTDI FT2232H-based programmer

    flashrom -p ft2232_spi:type=232H

Internal programmer (dangerous — touches the running system’s own flash)

    flashrom -p internal

Bus Pirate

    flashrom -p buspirate_spi:dev=/dev/ttyUSB0

## Tips

- Always `-r` twice and diff the two dumps before trusting a read — bad clip contacts cause silent corruption
- Use `-c <chipname>` to force chip detection if autodetect picks the wrong part
- `--flash-size` and `-L` (list supported chips) help when working with unfamiliar hardware
- Prefer an external programmer over `internal` when the target board is untrusted or possibly bricked

Help / Man page

    Usage: flashrom [-h|-R|-L|-p <programmername>[:<parameters>] [-c <chipname>]
           [(-r|-w|-v) <file>] [(-E|-x)] [-c <chipname>] [-l <file>]
           [-i <image>[:<file>]] [-n] [-N] [-f]] [-V[V[V]]] [-o <logfile>]

      -h                        display this help text and exit
      -R                        print version and exit
      -L                        list supported programmer names and exit
      -p <name>[:parameters]    specify the programmer device
      -c <chipname>             probe only for specified flash chip
      -r <file>                 read flash and save to <file>
      -w <file>                 write <file> to flash
      -v <file>                 verify flash against <file>
      -E                        erase flash chip
      -x                        extract layout regions to files
      -l <file>                 read ROM layout from <file>
      -i <image>[:<file>]       only access image <image> from layout
      -n                        do not auto-verify after write
      -N                        do not automatically set write protect
      -f                        force operation
      -V                        verbose output (-VV, -VVV for more)
      -o <logfile>              write log to <logfile>

## Vue d’ensemble

flashrom est un utilitaire en ligne de commande pour détecter et manipuler les puces de mémoire flash : le flash SPI/parallèle/LPC qui contient le BIOS, l’UEFI, le firmware EC ou le firmware d’un appareil embarqué. Dans le travail de sécurité matérielle et firmware, c’est l’outil de référence pour dumper une puce à des fins d’analyse, restaurer une image après un flash briqué, ou patcher un firmware en place à l’aide d’un programmateur matériel (CH341A, Bus Pirate, FT2232, Raspberry Pi GPIO, etc).

## Utilisation courante

    # Détecter le programmateur et la puce sans toucher au contenu du flash
    flashrom -p ch341a_spi

    # Lire le contenu complet de la puce dans un fichier
    flashrom -p ch341a_spi -r dump.bin

    # Vérifier qu'un dump correspond au contenu actuel de la puce
    flashrom -p ch341a_spi -v dump.bin

    # Réécrire une image sur la puce
    flashrom -p ch341a_spi -w modified.bin

    # Effacer la puce entièrement
    flashrom -p ch341a_spi -E

## Sélection du programmateur

    # Raspberry Pi GPIO comme programmateur SPI
    flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000

    # Programmateur basé sur FTDI FT2232H
    flashrom -p ft2232_spi:type=232H

    # Programmateur interne (dangereux : touche au flash du système en cours d'exécution)
    flashrom -p internal

    # Bus Pirate
    flashrom -p buspirate_spi:dev=/dev/ttyUSB0

## Conseils

- Toujours faire `-r` deux fois et comparer les deux dumps avant de leur faire confiance : de mauvais contacts de clip provoquent une corruption silencieuse
- Utiliser `-c <chipname>` pour forcer la détection de la puce si l’auto-détection choisit la mauvaise référence
- `--flash-size` et `-L` (lister les puces supportées) aident lors du travail avec du matériel peu familier
- Préférer un programmateur externe à `internal` quand la carte cible n’est pas fiable ou potentiellement briquée

Aide / Page de manuel

    Usage: flashrom [-h|-R|-L|-p <programmername>[:<parameters>] [-c <chipname>]
           [(-r|-w|-v) <file>] [(-E|-x)] [-c <chipname>] [-l <file>]
           [-i <image>[:<file>]] [-n] [-N] [-f]] [-V[V[V]]] [-o <logfile>]

      -h                        display this help text and exit
      -R                        print version and exit
      -L                        list supported programmer names and exit
      -p <name>[:parameters]    specify the programmer device
      -c <chipname>             probe only for specified flash chip
      -r <file>                 read flash and save to <file>
      -w <file>                 write <file> to flash
      -v <file>                 verify flash against <file>
      -E                        erase flash chip
      -x                        extract layout regions to files
      -l <file>                 read ROM layout from <file>
      -i <image>[:<file>]       only access image <image> from layout
      -n                        do not auto-verify after write
      -N                        do not automatically set write protect
      -f                        force operation
      -V                        verbose output (-VV, -VVV for more)
      -o <logfile>              write log to <logfile>