Jtag on the iphone

Получен доступ к диагностической консоли iPhone

Разъем Lightning, представленный Apple вместе с выходом 5 айфона заменил собой привычный 30-пиновый коннектор. Появление нового коннектора ознаменовало конец эры свободного подключения к устройствам. В старом разъеме звук, видео, данные, питание передавались по отдельным пинам и не было проблемы с использованием неоригинальных кабелей. В новом разъеме появился отдельный чип отвечающий за оригинальность происхождения аксессуара, а также его тип (USB-HOST, USB-DEVICE, SERIAL, POWER-ONLY).

Продолжительное время протокол оставался загадкой. Недавно его удалось взломать французскому исследователю Рамтину Амину (Ramtin Amin). Ему удалось получить доступ к последовательной консоли (serial console) через разъем Lightning. Вероятно это станет новым направлением по поиску и эксплуатации уязвимостей.

Рамтин начал с реверс-инжиниринга с изучения патентов, поиска поставщиков и иных устройств использующих подобное оборудование. Он нашел Lightning to Serial converter построенный на чипе STM32. По результатам исследования прошивки контроллера, информации с логического анализатора ему удалось восстановить часть протокола, большую часть схемы подключения.

Во время первых исследования внутреннего устройства 5 айфона сразу после появления в продаже, многие идентифицировали чип более известный как Tristar (более точно CBTL1608A1), как DisplayPort мультиплексор. Оказалось, что это мультиплексор, но не для DisplayPort, а для подключения аксесуаров с разъемом Lightning к UART, debug UART, baseband, SoC, JTAG.

Работа с микросхемой оказалась достаточно сложной, т.к. это BGA чип размером 2.5×2.5 мм и имеющий 36 точек для пайки с шагом 0.35мм. Рамтину удалось выпаять и перенести микросхему на макетную плату. Подключившись с помощью платы STM32F4Discovery ему удалось заглянуть в принципы работы устройства.

Пока это не дает полного контроля над устройством. Но возможно будущие эксплойты будут начинаться с этого:

Ссылка с подробным описанием процесса http://ramtin-amin.fr/#tristar

Буду рад выслушать ваши сообщения об ошибках или иные предложения в ЛС.

Источник

Интерфейс JTAG? — Это очень просто

Многие знакомы со словом «JTAG», но знакомство это скорее всего поверхностное. В этой статье я хочу перевести Вас на новый уровень, так сказать «во френдзону». Возможно, для многих я не открою ничего нового, но надеюсь тем, кто давно хотел ознакомиться, будет интересно почитать. Итак, от винта.

Введение

В 1985 сформировалась группа производителей электроники — JTAG (Joint Test Action Group). Для решения проблем тестирования в 1990 был выдвинут промышленный стандарт — спецификация IEEE Std 1149.1-1990 (IEEE Standard Test Access Port and Boundary-Scan Architecture). В этом же году Intel вывел в свет первый процессор с JTAG — 80486. С тех пор стандарт постоянно модифицируется и, в данный момент, последняя версия датируется 2013 годом.
«А какие же это проблемы с тестированием?»,- спросите Вы. Ну как же! Мало удовольствия прыгать с осциллографом по выводам микросхемы, особенно если их много больше двух! Стандарт позволяет значительно упростить жизнь за счет встраивания специальной архитектуры в современные чипы, обеспечивающей доступ к выводам (точнее, к специальным блокам ввода-вывода) с помощью 4-х проводного последовательного интерфейса. Эта архитектура позволяет не только контролировать их состояние, но и управлять ими. Таким образом можно обойтись без громоздких пробников с физическим контактом и насладиться всей прелестью этапа отладки цифровых микросхем или устройств уровня печатной платы.

Стандарт используют как для целей внутрисхемного программирования и отладки программ, так и при работе с корпусированными микросхемами. Он же используется для проверки на качество припайки микросхем к плате, межплатного и внутристоечного монтажа плат и блоков. Также надо сказать ему спасибо за восстановление закирпиченных по неосторожности мобильных устройств.

И как же работает?

Механизм граничного сканирования заключен, всего лишь, в сдвиговом регистре (Boundary Scan), подключенном между выводами микросхемы и ядром, и мультиплексоре который подключает в нужный момент этот регистр. Каждому конкретному выводу соответствуют так называемые «ячейки».

В состав ячейки входит один триггер регистра граничного сканирования и мультиплексора выбора данных. Ячейки могут быть разных типов в зависимости от вывода микросхемы и команд интерфейса, т.е. зависит от производителя той или иной микросхемы. Производители не придерживаются строго стандарта и, поэтому, развелось множество модификаций.

На рисунке представлена одна из разновидностей ячейки. PI, PO — параллельные вход и выход, SI,SO — последовательные.

Читайте также:  Цифровой индикатор сигнала iphone

Сигналы на регистр микросхемы попадают через мультиплексор, который позволяет считывать как состояния выводов ядра микросхемы (инструкция INTEST), так и данные, поступающие извне на сдвиговый регистр (инструкция EXTEST). Разновидности инструкций и их функциональность опять же меняются от желаний производителя, но существуют так называемые обязательные:

  • EXTEST — инструкция, позволяющая за счет установки логических значений на рабочих контактах электронных компонентов проверить внешние цепи, имеющие непосредственное отношение к тестируемому компоненту.
  • INTEST — инструкция обеспечивает возможность установки логических значений внутри микросхемы, то есть на входах ядра, тем самым проверяя его.
  • SAMPLE_PRELOAD — позволяет тестировать ядро электронного элемента в статическом режиме, устанавливая значения логических уровней на границе его выходных буферов.
  • BYPASS — инструкция, при которой наш регистр граничного сканирования «схлопывается» в один триггер. При этом данные со входа (TDI) на выход (TDO) передаются с задержкой в один такт частоты синхронизации интерфейса (TCK). Этот режим позволяет эффективно использовать возможности последовательного интерфейса при организации длинных последовательно объединенных цепочек.
  • IDCODE — инструкция выдвигает на выход значение встроенного 32-битного регистра с идентификаторами производителя, модели и версии устройства.
Сигнальные линии интерфейса

Как уже говорилось выше, интерфейс JTAG имеет следующие сигнальные линии:

  • TDI — Test Data Input — сигнал данных на вход, данные задвигаются по переднему фронту TCK.
  • TDO — Test Data Output — выход последовательных данных JTAG, выдвигаются по заднему фронту TCK, должен находиться в третьем состоянии — Z — когда данные не передаются.
  • TMS — Test Mode Select — сигнал управления TAP — контроллером.
  • TRST — Test Reset — не всегда есть, так как ресета можно добиться удерживая некоторое время TMS = 1, активный уровень сигнала — 0.
  • TCK — Test Clock — тактовая частота.

JTAG — синхронный интерфейс, сигналы принимаются по переднему фронту синхроимпульсов младшими битами вперед и только в течении состояний TAP — контроллера Shift-DR \ Shift-IR. Выходные данные выдвигаются по заднему фронту.

TAP — контроллер

Мы добрались до самой сути JTAG, а именно — управляющий работой автомат. С его помощью собственно и живет всё вокруг. Автомат имеет 16 состояний. Управление интерфейсом осуществляется путем воздействия на автомат посредством сигнала TMS. Переходы происходят по переднему фронту сигнала TCK. Чтение и запись данных происходят одновременно. Ниже привожу иллюстрацию работы, взятую из документации микросхем фирмы Altera.

Диаграмма переходов автомата, управляющего режимами TAP

Состояния диаграммы переходов:

  • Test-Logic-Reset – исходное состояние;
  • Run-Test/Idle – переходное состояние контроллера при выполнении тестов или ожидании следующей
  • команды;
  • Select-IR, Select-DR – состояние, после которого будет производиться тестирование команд, данных;
  • Capture-IR, Capture-DR – состояние приёма команд, данных;
  • Shift-IR, Shift-DR – состояние сдвига команд, данных;
  • Exit1-IR, Exit2-IR – выход из режима работы с командами;
  • Exit1-DR, Exit2-DR – выход из режима работы с данными;
  • Pause-IR, Pause-DR – состояние паузы;
  • Update-IR, Update-DR – состояние перезаписи данных в выходные регистры.

DR — действия происходят над данными, IR — соответственно над инструкциями.

Исходное состояние, в котором находится автомат после включения, это Test-Logic Reset. Пока сигнал TMS имеет значение «лог.1», состояние автомата остается неизменным. В этом состоянии, по умолчанию, выбрана инструкция IDCODE или BYPASS.
Сигнал сброса TRST не является обязательным, поэтому для сброса автомата в исходное состояние применяют следующую процедуру. Необходимо подать на вход TMS сигнал высокого уровня и удерживать его не менее 5 тактов частоты TCK. Если сигнал TMS будет установлен хостом в низкий уровень, то автомат перейдёт к состоянию Run-Test/Idle (активное состояни, в котором ничего не происходит). Обычно из этого состояния можно перейти в состояние Select-IR, для того чтобы загрузить в контроллер новую инструкцию. Но если на вход сигнала TMS подействует не сигнал, подаваемый от хоста, а помеха низкого уровня, то, как и в предыдущем случае, автомат перейдёт в состояние Run-Test/Idle. Если же кратковременная помеха (длительностью не более одного периода синхрочастоты) прекратится, то автомат через три такта снова вернётся в исходное состояние – Test-Logic Reset.
Чтобы загрузить в контроллер новую команду, надо из состояния Run-Test/Idle перевести автомат в состояние Select-IR, Capture-IR, Shift-IR. Затем необходимо «продвинуть» в цепочку данных новую команду, а потом перевести автомат через состояния Exit1-IR, Update-IR и снова в Run-Test/Idle. Логика работы с данными такая же. Нужно учитывать, что сигнал высокого уровня при переходе из состояний Shift-IR\DR подается вместе с последним битом информации.

Читайте также:  Как ограничить зарядку айфона до 80 процентов


Диаграмма сигналов при выполнении переходов для загрузки команды

Если используя специализированный САПР написать код работы JTAG на Verilog, то результирующая диаграмма будет выглядеть примерно так:

Сылка на дропбокс, картинка в полный размер

Наконец можно показать полную структурную схему устройства JTAG и Вы вполне должны в ней разобраться:

… И в заключение.

Использование JTAG и технологии граничного сканирования в микросхеме, на плате или в устройстве добавляет стоимость и увеличивает время разработки проекта. Но, всё же эти затраты легко окупаются при проведении тестирования, которое обеспечивается на каждой стадии цикла жизни изделия. То, что было первоначально разработано как производственный испытательный инструмент, используется до начала производства, во время серийного производства и после производства, то есть на этапе эксплуатации конечным пользователем. Кроме непосредственно граничного тестирования, проектировщики используют технологию JTAG для того, чтобы производить самотестирование (BIST) (в тех компонентах, где оно реализовано) и загружать внутренние значения в регистры устройства или программировать микросхемы ПЗУ. Тесты, которые были разработаны и использованы на этапе проектирования, могут быть переданы производству, для того чтобы обеспечить дополнительное снижение стоимости и времени на проверку изделий при выходном контроле.Основные положительные эффекты от применения технологии JTAG в производственной фазе – экономия времени при разработке испытательных тестов, улучшенный «охват» тестируемого изделия при поиске ошибки и диагностировании и улучшенная производительность испытаний при одновременном уменьшении времени испытания.
Применение граничного сканирования при эксплуатации изделия также даёт определённый положительный эффект. Отказы при эксплуатации часто происходят из-за структурных отказов, которые вызываются повышенной температурой, влажностью, вибрацией. Используя граничное сканирование, техники имеют возможность быстро проверить изделие на структурные ошибки вплоть до уровня компонентов без трудоёмкого исследования или возвращения платы изготовителю на завод.

Источник

Получение данных из мобильных устройств с помощью интерфейса отладки JTAG

В данной статье рассмотрен способ получения информации с мобильного устройства с использованием интерфейса отладки JTAG. Данный способ можно использовать в тех случаях, когда обычные методы извлечения информации из смартфона не работают.

Введение

Ранее мы рассказывали про методы снятия дампа памяти с мобильного телефона и его последующего анализа (статья «Снятие дампа памяти с мобильных устройств на Android»). Однако стандартные методы снятия дампа памяти не всегда помогают специалисту получить информацию с мобильного устройства. Это может быть вызвано следующими причинами:

  • Устройство заблокировано паролем.
  • Отсутствует возможность перевести мобильное устройство в режим для снятия дампа памяти.
  • Некорректная работа операционной системы мобильного устройства или загрузчика.
  • Повреждены компоненты мобильного устройства, отвечающие за взаимодействие пользователя с ним.

Поэтому одно из возможных решений проблемы — использовать сервисные разъемы на материнской плате мобильного устройства. JTAG — аппаратный интерфейс для прямой связи компьютера с материнской платой с помощью программаторов RIFF Box, Octopus и т. п. Стоит отметить, что некоторые программаторы создают дамп памяти мобильного устройства в собственном формате (отличном от RAW). В нашем случае мы связываем материнскую плату мобильного устройства с компьютером через программатор.

Пример использования программатора RIFF Box на мобильном устройстве SAMSUNG GT-i9100

Рисунок 1. Внешний вид программатора RIFF Box

Читайте также:  Управление квадрокоптером с айфона

Для получения дампа памяти мобильного устройства с помощью программатора RIFF Box потребуется:

  1. Подключить RIFF Box к компьютеру через USB-порт.
  2. Загрузить с официального сайта (http://www.jtagbox.com/category/jtag-downloads/) и установить RIFF JTAG менеджер.
  3. Запустить RIFF JTAG менеджер и зарегистрировать RIFF Box.

Рисунок 2. Интерфейс RIFF JTAG менеджера

  1. Загрузить драйвер и инструкцию для нашего мобильного устройства в RIFF JTAG менеджере.

После этого следуем инструкции, приведенной в RIFF JTAG менеджере:

  1. Разбираем мобильное устройство.

Рисунок 3. Материнская плата мобильного устройства

  1. Припаиваем шлейф и соединительные контакты к площадке RIFF JTAG Box.

Рисунок 4. Площадка RIFF JTAG Box

  1. Далее по схеме, приведенной в инструкции, припаиваем соединительные контакты к мобильному устройству.

Рисунок 5. Материнская плата мобильного устройства с обозначением распиновки

Рисунок 6. Материнская плата мобильного устройства, соединенная с площадкой RIFF JTAG Box

  1. Выбираем необходимую частоту и скорость чтения памяти мобильного устройства в RIFF JTAG менеджере и нажимаем «Старт». При этом на плату мобильного устройства должно подаваться питание.

Примечание: Чтение памяти мобильного устройства может занять значительное время, в нашем случае чтение 4Гб заняло 26 часов.

  1. После получения файла-образа в формате .bin анализируем его в программах, таких как: UFS Explorer, R-Studio, UFED Physical Analyzer, BelkaSoft, «Мобильный Криминалист» и т. п.

Стоит отметить, что «Мобильный Криминалист» поддерживает полный разбор образа устройств на Android и Windows Phone, сделанный с помощью JTAG. Загрузив образ через пункт меню «Импорт файла», вы получаете весь набор данных от контактов, SMS, звонков и файлов до паролей, приложений и удаленных данных.

Рисунок 7. Интерфейс программы «Мобильный Криминалист»

Инструкция на английском языке для восстановления мобильного устройства SAMSUNG GT-i9100, приведенная в RIFF JTAG менеджере

Samsung I9105 is based on the Broadcom BCM28145 Processor (Cortex-A9 Dual-Core). JTAG pads are very small; professional experience in soldering is required to connect wires to the JTAG interface.

Note, one simple way to connect over JTAG — connect USB cable to PC and insert battery. In this case phone is automatically powered on.

To resurrect Samsung I9105:

  1. Solder JTAG cable to Samsung I9105 JTAG pads.
  2. Connect USB cable to phone and PC.
  3. Insert battery.
  4. Make sure Samsung I9105 is selected in the list of models.
  5. Make sure a fixed TCK frequency is selected.
  6. Click Resurrect button.
  7. Wait for software to complete operation successfully.
  8. Disconnect USB cable, de-solder JTAG wires.

Now phone is in bootable condition, that is, even if it does not start up normally, you can flash it using original Samsung downloader software to restore it to the working state.

To enter download mode:

  1. Disconnect PC cable.
  2. Insert battery.
  3. Hold both ‘Volume Down’ and ‘Home’ keys and press Power-On.

Most common errors:

  • The NRST signal is not connected. Pease ALWAYS SOLDER THE NRST SIGNAL whenever it is present on the schematics. In case you have JIG please make sure NRST is routed, if not — solder wire manually.
  • Connection is unstable or cannot be established at all. Please make sure JTAG wires are of the SAME LENGTH and total length of each wire not exceeds

10. 15 cm; make sure a fixed TCK frequency is selected (since device has no RTCK signal).

Выводы

В данной статье кратко описан способ использования интерфейса отладки на примере мобильного устройства. Применение этого метода позволит специалисту получать информацию с мобильного устройства в случае если традиционные методы не сработали.

Однако стоит отметить, что данный способ получения данных не является универсальным, поскольку специалистам зачастую приходится сталкиваться с мобильными устройствами, которые имеют сильные повреждения материнской платы, например, в случае теплового воздействия.

Рисунок 8. Мобильный телефон после сильного теплового воздействия

В связи с этим специалист должен также уметь извлекать информацию напрямую из микросхем c помощью метода Chip-off — на ней мы подробно остановимся позже.

Источник

Оцените статью