arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Extract Firmware

Information of the SPI flash

hashtag
Dumping the SPI flash from Linux

Dump the SPI flash by using the linux command line tool dd. Command: dd if=/dev/mtd0 of=mtd0 This will dump the SPI flash to the file mtd0.

hashtag
Device tree entry for the SPI

This is what the SPI flash device tree entry looks like.

hashtag
The dump

The first 6128 bytes are the BCT, encrypted with your platform key. The loader for UEFI is located at 0x0100000.

hashtag
How we can tell

To check it yourself,

To encrypt the BCT you got form nvflash use the following script, and replace <platform key> with your platform key. Example usage: ./encrypt.sh surfacert.bct surfacert-encrypted.bct

To check if it is really the same, create a hexdump of your SPI flash dump and encrypted BCT. Your encrypted BCT should match the first 6128 bytes of the SPI flash dump.

hashtag
Downloads

triangle-exclamation

The files are encrypted and board specific. You cant use them on your Surface RT

A dump from @Leander's Surface RT. Here is the platform key of the used Surface RT: 28a5d126adf421e6a39bfc8f7ff32308

hashtag
Leanders blob

hashtag
CTS blob

Dump your SPI flash
Get your BCT with nvflash
Get your platform key
file-download
4MB
mtd0
arrow-up-right-from-squareOpen
SPI-flash-dump
file-download
6KB
surfacert-encrypted.bct
arrow-up-right-from-squareOpen
BCT-encrypted
file-download
6KB
surfacert.bin
arrow-up-right-from-squareOpen
BCT-from-nvflash
file-download
4MB
mtd0Original_CTS.bin
arrow-up-right-from-squareOpen
spi@7000da00 {
		status = "okay";
		spi-max-frequency = <25000000>;
		spi-flash@1 {
			compatible = "winbond,w25q32", "jedec,spi-nor";
			reg = <1>;
			spi-max-frequency = <20000000>;
		};
	};
#!/bin/sh

cut_bct=`tempfile`
dec_bct=`tempfile`

dd if=$1 of=$cut_bct bs=16 skip=1
openssl aes-128-cbc -K <platform key> -iv 00000000000000000000000000000000 -nopad -nosalt -in $cut_bct -out $dec_bct
dd if=$1 of=$2 bs=16 count=1
dd if=$dec_bct of=$2 bs=16 seek=1

rm -f $cut_bct $dec_bct