Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
23
Добавлен:
19.04.2024
Размер:
31.35 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

(gdb)m

stepi

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

 

 

e

 

 

 

 

 

-xchahalted: PC: 0x08002de8

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

0x08002de8 in strcmp ()

 

 

 

 

 

 

 

3: x/i $pc

 

 

 

 

 

 

 

=> 0x8002de8 <strcmp>:

orr.w r12, r0, r1

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

(gdb) finish

Run till exit from #0 0x08002de8 in strcmp ()

0x08000174 in validate () at /home/ithilgore/Arduino/serial-simple/serial-simple.ino:59

59

if (strcmp(buf, "sock-raw.org") == 0)

3: x/i $pc

 

=> 0x8000174 <validate()+24>:

cbnz r0, 0x8000182 <validate()+38>

(gdb) set $r0=0

 

(gdb) x/x $r0

 

0x0:

0x00

 

(gdb) c

 

 

Continuing.

Когда мы это сделаем, наша программа не перейдет к адресу па- мяти 0x8000182. Вместо этого она продолжит выполнение инструк- ций сразу после cbnz. Если теперь вы позволите программе продол- жить работу, введя команду continue, вы увидите сообщение ACCESS GRANTED («Доступ разрешен») на серийном мониторе Arduino, ука- зывающее, что вы успешно взломали программу. Есть и другие спо- собы взломать программу, но мы предоставим вам поэксперименти- ровать самостоятельно.

Заключение

ВэтойглавевыузналипроUART,JTAGиSWDикаквыможетеисполь- зовать эти протоколы для получения полного доступа к устройству. Большая часть главы была отведена на практическое упражнение, где в качестве целевого устройства использовался микроконтрол- лер STM32F103C8T6 (Black Pill). Вы научились разрабатывать и за- пускать простую программу Arduino, которая выполняет очень про- стую процедуру аутентификации через UART. Затем подключились к устройству с помощью последовательного адаптера USB-UART. Мы использовали программатор ST-Link для доступа к SWD на целевом устройстве через OpenOCD и, наконец, прибегли к GDB для динами- ческого обхода функции аутентификации.

Использование UART и в особенности JTAG и SWD почти всегда оз- начает,что вы можете получитьполныйдоступ к устройству: ведьэти интерфейсы были разработаны, чтобы дать производителям полные права на отладку в целях тестирования. Узнайте, как максимально использовать их потенциал, и вы научитесь взламывать устройства интернета вещей гораздо эффективнее!

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

8

SPI И I2C

Эта глава познакомит вас с последовательным перифе-

рийным интерфейсом (Serial Peripheral Interface – SPI)

и последовательной шиной для связи интегральных схем (I2C),двумя общими протоколами связи в устройствах IoT, которые используют микроконтроллеры и периферийные устройства. Как вы узнали из главы 7, иногда простое подключение к интерфейсам, таким как UART и JTAG, предоставляет прямой до- ступ к системной оболочке – возможно, той, которую производите- ли оставили умышленно. Но что, если интерфейсы JTAG или UART устройства требуют аутентификации? Или (еще хуже!) что, если они небудутреализованы?Вэтихслучаяхвы,скореевсего,найдетеболее старые протоколы, такие как SPI и I2C, встроенные в микроконтрол-

леры.

Ниже мы будем использовать SPI для извлечения данных из EE- PROM и других микросхем флеш-памяти, которые часто содержат микропрограммное обеспечение и другие важные секреты, такие как ключи API, пароли пользователей и конечные точки служб. Вы также создадите свою собственную архитектуру I2C, а затем потре- нируетесь в сниффинге и управлении последовательной шиной, чтобы заставить периферийные устройства выполнять нужные дей- ствия.

SPI И I2C  227

 

 

 

hang

e

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

BUY

 

 

wClick

to

Оборудованиеo m

для связи с SPI и I2C

 

wClick

to

 

 

 

 

o m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

w

 

 

 

 

 

 

.c

 

.

 

 

 

 

g

 

 

.

 

 

 

 

g

 

p

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

e

 

 

 

-xcha

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

Для связи с SPI и I2C вам понадобится определенное оборудование. Вы могли бы использовать коммутационную плату или программа- тордля микросхем EEPROM / флеш-памяти,если хотите распаятьми- кросхемы (так следует поступать, если у вас нет другого выхода). Но если вы предпочитаете не выпаивать микросхемы с печатной платы, можете использовать либо специальные зажимы-крючки, подклю- чаемые непосредственно к выводам микросхемы, либо зажимы для микросхем в корпусе типа SOIC (обычно микросхемы флеш-памяти находятся в таких корпусах), которые дешевы и удобны.

Для проекта SPI, описанного в этой главе, вам понадобится вось- миконтактный кабель SOIC с зажимом или зажимы-крючки для под- ключениякмикросхемамфлеш-памяти.ЗажимыSOIC(рис.8.1)могут быть сложны в использовании, потому что вам нужно точно выров- нять контактные площадки при подсоединении зажима к микросхе- ме. Зажимы-крючки для многих удобнее в использовании.

Рис.8.1.Восьмиконтактный кабель SOIC

Вам также понадобится адаптер USB-UART. Хотя вы можете ис- пользовать адаптер, использованный в главе 7, мы рекомендуем Bus Pirate (http://dangerousprototypes.com/docs/Bus_Pirate), надежное устрой-

ство с открытым исходным кодом, которое поддерживает несколько

228  Глава 8

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

протоколов.Оно имеет встроенные макросы для взлома IoT,включая

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

возможности сканирования и сниффинга I

 

w

 

 

 

 

 

 

 

o

 

C и многих других проd-f-x chan

.c

 

2

 

.

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

токолов. Вы можете опробовать и более дорогие инструменты, кото- рые анализируют сообщения I2C в большем количестве форматов – например, Beagle (https://www.totalphase.com/products/beagle-i2cspi/) или Aardvark (https://www.totalphase.com/products/aardvark-i2cspi/). Из этой главы вы узнаете, как использовать встроенные макросы Bus Pirate для выполнения распространенных атак.

Кроме того, чтобы выполнить лабораторное упражнение I2C (ниже в этой главе), вам потребуются Arduino Uno (https://store.arduino.cc/usa/ arduino-uno-rev3/), хотя бы один светодиод BlinkM (https://www.sparkfun. com/products/8579/),макетнаяплатаинесколькосоединительныхкабе- лей. Вы также можете использоватьтак называемую «третью руку» – кронштейны, которые помогают удерживать несколько частей обо- рудования. Их стоимость варьируется в широких пределах. В разделе «Инструменты для взлома интернета вещей» представлен полный список инструментов с описанием их сильных и слабых сторон.

SPI

SPI – коммуникационный протокол, который передает данные меж- ду периферийными устройствами и микроконтроллерами. Широко используемый в популярном оборудовании, таком как Raspberry Pi

иArduino, SPI является протоколом синхронной связи, т. е. он может передаватьданныебыстрее,чемI2CиUART.Частоониспользуетсядля связи на короткие расстояния в местах, где важна скорость чтения

изаписи,втом числе в периферийных устройствах Ethernet,ЖК-дис- плеях, устройствах чтения SD-карт и микросхемах памяти почти на любом устройстве IoT.

Как работает SPI

SPI использует четыре провода для передачи данных. В полноду- плексном режиме,когда передача данных происходит одновременно в обоих направлениях, он полагается на архитектуру периферийного контроллера. В такой архитектуре устройство, служащее контролле- ром, генерирует тактовые импульсы, которые управляют передачей данных, и все устройства, которые являются периферийными, про- слушивают шину и отправляют или принимают сообщения. SPI ис- пользует следующие четыре линии (не считая «земли»):

zzController In, Peripheral Out (CIPO) – для сообщений, отправляе-

мых периферийными устройствами на контроллер;

zzController Out,Peripheral In (COPI)–для сообщений от контролле-

ра периферийным устройствам;

zzSerial Clock (SCK) – тактовые импульсы, указывающие, когда устройства должны считывать данные с шины;

SPI И I2C  229

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

Chip Select (CS) – сигнал выбора периферийного устройства, ко-

 

 

to

 

 

 

 

 

zz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

торое должно получать сообщение.

w Click

 

 

 

 

 

o

 

 

w

 

df-x chan

 

 

 

 

.

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

e

 

Обратите внимание,что,в отличие отUART,SPI используетотдель- ные линии для отправки и получения данных (COPI и CIPO соответ- ственно). Также учтите, что оборудование, необходимое для реали- зации SPI, дешевле и проще, чем UART, и может обеспечивать более высокие скорости передачи данных. По этим причинам многие ми- кроконтроллеры, используемые в мире интернета вещей, поддержи- вают его. Более подробно о реализациях SPI рассказывается на стра-

нице https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi/all/.

Извлечение содержимого микросхем флеш-памяти

EEPROM с SPI

Чипы флеш-памяти часто содержат микропрограммное обеспечение устройстваидругиеважныесекреты,поэтомуизвлечениеизнихдан- ныхможетпредоставитьважнуюинформацию,касающуюсябезопас­ ности:бэкдоры,ключишифрования,секретныеучетныезаписиит.д. Чтобы найти микросхемы памяти в устройстве IoT,откройте его кор- пус и извлеките печатную плату.

Поиск нужных микросхемы и контактов

Найдите микросхему флеш-памяти вашего устройства. Производите- ли,которыезаботятсяобезопасности­ ,обычноудаляютмаркировкуми- кросхемы на плате устройства, но микросхемы флеш-памяти обычно имеют 8 или 16 контактов. Вы также можете найти микросхему, про- смотрев таблицу данных микроконтроллера в интернете, как мы это делали вглаве 7.Таблицадолжна содержатьдиаграмму,показывающую конфигурацию контактов и описания. Таблица, вероятно, также будет содержать информацию, подтверждающую, поддерживает ли данный микроконтроллер протокол SPI. Другая информация, такая как версия протокола,поддерживаемыескоростииразмерпамяти,такжеокажется полезной при настройке инструментов для взаимодействия с SPI.

После того как вы обнаружили микросхему памяти, найдите ма- ленькуюточку в одном из углов микросхемы,которая обозначаетвы- вод № 1 (рис. 8.2).

Теперь подключите первый контакт восьмиконтактного кабеля SOICквыводу№1микросхемы.ПервыйвыводзажимаSOIC,какпра- вило,отличается отдругих по цвету,что упрощает поиск.Используй- те информацию о расположении выводов, взятую из таблицы, чтобы правильно подключить остальные выводы SOIC. На рис. 8.3 показано типичное расположение выводов. В частности, именно так располо- жены выводы у микросхемы памяти WinBond 25Q64.

Когда вы подключили все части зажима SOIC к микросхеме флеш-­ памяти, ваша установка должна выглядеть, как показано на рис. 8.4. Будьте осторожны при подсоединении зажима SOIC: штифты легко повредить.

230  Глава 8

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис.8.2.Микросхема флеш-памяти

 

• 1(/CS)

8 (VCC)

 

 

 

 

 

 

2

(DO)

7(/HOLD)

 

 

 

 

 

 

3

(/WP)

6 (CLK)

 

Рис.8.3.Конфигурация контактов

 

 

 

4

(GND)

5 (DI)

 

 

 

 

 

 

 

 

микросхемы памяти

 

 

 

 

 

Рис.8.4.Зажим SOIC,подключенный к микросхеме флеш-памяти

SPI И I2C  231

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Если у вас возникли проблемы с подключением зажима SOIC, по-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

дойдутизажимы-крючки(рис.8.5.);возможно,вамбудетдажепроще

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

их подключить.

Рис.8.5.Зажимы-крючки подключаются к контактам SPI

Связьс микросхемой SPI

Вам понадобится адаптер для чтения содержимого микросхемы па- мяти. В этом примере мы будем использовать Bus Pirate, но вы мо- жете использовать любой адаптер, поддерживающий протокол SPI. Если вы возьмете Bus Pirate, убедитесь, что его прошивка обновлена до последней стабильной версии.

Проверьте, чтобы устройство, содержимое памяти которого вы из- влекаете, было выключено, затем подключите к микросхеме прово- да. Соедините контакты Bus Pirate и микросхемы с помощью зажима SOIC, как указано в таблице. Например, микросхему WinBond 25Q64 мы бы подключили в соответствии с табл. 8.1.

Таблица 8.1.Подключение контактов

Вывод

Bus Pirate

#1

(CS)

 

CS

#2

(DO)

CIPO (MISO)

#4

(GND)GND

#5

(DI)

 

COPI (MOSI)

 

 

#6

(CLK)

CLK

#8

(VCC)

3V3

232  Глава 8

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

  ПРИМЕЧАНИЕ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  В обозначениях вашей платы или схемы могут при-

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

меняться устаревшие имена сигналов SPI MISO и MOSI вместо CIPOdf-x chan

.c

 

 

 

.

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

и COPI соответственно. Вы также можете встретить устаревшие термины master/slave (главный/подчиненный) вместо «контроллер / пе- риферийное устройство» в схемах и платах c протоколом I2C.

По завершении работы соединения должны выглядеть так, как на рис. 8.6.

Рис.8.6.Bus Pirate,подключен к микросхеме SPI с помощью зажимов-крючков. Мы использовали «третью руку» для фиксации различных компонентов

Теперь, когда устройство, память которого вы будете читать, вы- ключено, подключите USB-кабель Bus Pirate к компьютеру. Вы може- те проверить связь с микросхемой SPI с помощью утилиты flashrom Linux,которую можно загрузить с https://flashrom.org/Flashrom (или при помощи большинства менеджеров пакетов). Следующая команда идентифицирует набор микросхем памяти:

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

Убедитесь,что вы заменили ttyUSB0 на дескриптор устройства,ко- торый был назначен адаптеру. Обычно это будет что-то вроде ttyUSB <number>, и вы можете ввести команду ls /dev/tty*, чтобы уви- деть дескрипторы в вашей системе. Утилита либо идентифицирует микросхему SPI, либо вернет сообщение No EEPROM/flash device found (Не найдено EEPROM / флеш-устройство).

SPI И I2C  233

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Чтение содержимого микросхемы памяти

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

Установив связь с микросхемой, вы можете выполнить операцию

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

чтения, чтобы получить ее содержимое. Воспользуйтесь командой flashrom:

# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -r out.bin

Флаг -r запускает операцию чтения, которая сохраняет содержи- мое в указанном файле. Флаг -p указывает имя адаптера. Имя Bus Pirate в этом примере – buspirate_spi, но вам следует изменить его, если вы используете другой адаптер. Вы должны увидеть примерно такой результат:

Found Winbond flash chip "W25Q64.V" (8192 kB, SPI).

Block protection is disabled.

Reading flash…

После выполнения команды выходной файл должен соответство- вать размеру памяти микросхемы, указанному в выходных данных команды. Для данного набора микросхем было указано 8 МБ.

Кроме того, можно получить содержимое микросхемы с помощью популярного скрипта spiflash.py из библиотеки libmpsse. Загрузите библиотеку по ссылке https://github.com/devttys0/libmpsse/, затем ском-

пилируйте и установите ее:

#cd libmpsse

#./configure && make

#make install

Есливсеработает,высможетезапуститьspiflash.py.Чтобыубедить- ся,чтоинструментправильноопределяетмикросхемуивсеконтакты подключены верно, запустите spiflash.py и найдите имя микросхемы в выходных данных. Чтобы извлечь файл памяти, хранящейся в ми- кросхеме, введите следующую команду:

# spiflash.py -r out.bin -s <size to read>

Чтобыпрочесть,например,дамппамятиобъемом8МБ,выполните команду:

# spiflash.py -r out.bin -s $((0x800000))

Если вы не знаете размер извлекаемого дампа флеш-памяти, вы- берите случайное значение,достаточно большое,чтобы вместить все содержимое флеш-памяти.

234  Глава 8