The general idea taken from thaGH05T's tutorial. You should read the chip into the firmware dump file and process it with the 'scan-n-patch' script which replaces a SVS area and creates a cleaned firmware file. With modified firmware you can flash a chip, but not entire. Actually you need remove password only and you can do it with 'flashrom'. The 'scan-n-patch' script will create a layout file and prints a command-line arguments for partial chip flashing. It is more safe approach because you will touch only small piece of the chip content, firmware itself and your settings will unchanged.
- Raspberry PI or other SPI device and SOIC-8 clip or Easy Flash clip.
- If your SPI device is not Raspberry PI then ability to run the Perl script is needed.
- Working 'flashrom' utility.
- scan-n-patch fileset (Google Drive link).
'scan-n-patch' is Perl script which reads file specified as command-line argument. It looking for data signatures and can replace a portion of file content by another data.
Right now it can be launched in two modes:
- 'SCANONLY' mode. In this mode it will search SVS area and print its parsed content, so you can see each password's record and state is active it or not.
- 'SILENT' mode. In this mode script will skip printing some information. This mode is used for if you want analyze several files.
To specify the mode you should set SCANONLY and/or SILENT variables in the environment. Example:
SCANONLY=1 ./scan-n-patch.pl <file_name>
SCANONLY=1 SILENT=1 ./scan-n-patch.pl <file_name>
1. Read a chip and save its content to the file.
For RP command like this:
sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -r <file_name>
Note: For Macronix flash you need specify a chip. Use '-c' option.
2. Check that chip has been correctly read.
You can read a chip 2-3 times and check results with 'md5' tool or you can do that check with 'flashrom' like this:
sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -v <file_name>
3. Run 'scan-n-patch' with your dump file specified as command line argument.
Note that scanning process takes alot of time on RP approx. 20-25 minutes... So, be patient.
If your dump has a password, its hash will be printed as well as how much times it was set. Make sure that 'RFT' variable has been defined. 'RFT' is a Record Format Type, it may have value 1 or 2 in other cases patching will be incorrect.
To confirm patching press 'Enter'.
In result you will get:
- Modified firmware file named as <file_name>.modified and placed into one directory with original dump.
- Layout file for 'flashrom', placed into current directory.
- Additional command line arguments for 'flashrom'
4. Apply patch to the chip.
On step 3 you have got an additional command line arguments for 'flashrom' like this:
--layout ./flashrom.layout --image SVS -w ./<file_name>
To apply changes on the chip you need specify it to 'flashrom' tool:
sudo flashrom -p linux_spi:dev=/dev/spidev0.0 --layout ./flashrom.layout --image SVS -w ./<file_name>.modified
5. Shutdown RP after 'flashrom' finish, disconnect a clip and power on your Mac.
You can place script files into any directory on your taste, as well as dump file may be located in its own directory. If you'll specify the target file with path to it as command line argument then modified firmware will be placed into directory where original dump stored but 'flashrom.layout' file will be created in directory where 'scan-n-patch' script was launched. If you have a problems with a script please create a topic on the forum.
Anyway i cant get this to run as i cant work out what directories the flashrom and scan-n-patch need to be in (unzipped and put into a folder ive named rom_scan. Any help would be appreciated and im using a rasp pi