Стажировка – это процесс получения знаний и опыта. Наша команда Raccoon Security считает, что повышение уровня информационной безопасности окружающих нас устройств и ПО невозможно без передачи этих знаний и опыта будущим поколениям специалистов. Именно поэтому мы уже много лет организуем индивидуальные стажировки для талантливых студентов и выпускников.
Исследование защищенности – это умение, которому не учат в университете. Ему можно научиться на конкретных примерах и под руководством опытных наставников. Ежегодно наши стажеры решают сложные технические задачи, добиваются поставленных целей и двигаются дальше, расширяя свой профессиональный кругозор и делая мир чуточку безопаснее. У каждого из них своя история становления специалистом, а под катом – начало одной из них.
В октябре прошлого года я пришел на техническую стажировку в . Мой интерес был направлен в область реверс-инжиниринга. Я знал, что это такое, уже пробовал самостоятельно исследовать crackme под x86, но понимал – самое интересное лежит именно на стыке ПО и «железа». Опыта в этой области у меня не было, но было желание попробовать свои силы.
У меня не было каких-то конкретных ожиданий от этого мероприятия – друзья и знакомые достаточно часто рассказывают про технические стажировки в разных известных компаниях. И когда мне предложили попробовать свои силы в исследовании USB-SATA-адаптера, я был просто рад новой возможности научиться чему-то. Полученный опыт и достигнутый мной результат позволили убедиться в правильности выбора места стажировки и будущей профессии.
А началось исследование с получения на руки обычного USB-SATA-адаптера. Вот что я делал дальше.
Для начала нужно осмотреть плату адаптера и определить базовые элементы устройства. На рисунках ниже отмечены основные блоки компонентов, которые важны для работы устройства. Фотографии сделаны после исследования:
USB-SATA-адаптер. Вид сверху
USB-SATA-адаптер. Вид снизу
Проведя некоторое время в гугле, я выяснил, что на плате расположено два преобразователя напряжения: один на 3,3 В, другой на 1,2 В. Также очень легко определилась флеш-память, установленная на плате. ПЗУ работает по интерфейсу SPI, а объем памяти составляет 512 Кбит.
Казалось бы, что этап схемотехнической разведки практически завершен, но беглый поиск в Интернете совершенно не дал результатов по запросу «ASM1051». Никаких документов на чип, установленный на плате, найти не удалось. Правда, все же удалось отыскать ПО, позволяющее обновлять его. Кроме того, есть небольшой datasheet на старшую модель ASM1053.
Адаптер при подключении к компьютеру отображается как запоминающее USB-устройство. Я решил, что для исследования мне наверняка пригодятся более глубокие знания о USB, поэтому следующие пару часов я потратил на изучение интерфейса. Вообще, USB-устройства могут быть разных классов в зависимости от их функциональности. Например, флешки – это Mass Storage Device, а клавиатуры и мышки – Human Interface Device (HID). И раз мой адаптер виден в диспетчере устройств как запоминающее устройство, значит он определяется в виде Mass Storage и должен работать со SCSI-командами.
Основная литература по USB, которая пригодилась
- USB in a NutShell
- Universal Serial Bus Mass Storage Class
- USB Mass Storage Class on an Embedded Device
- SCSI Commands Reference Manual
Так как про ASM1051, установленный на плате, ничего не известно, самым очевидным действием было считать память из ПЗУ. Я перебрался в лабораторию. Паяльным феном отделил микросхему флеш-памяти, подключил ее к USB-программатору ChipProg-48. Проблем при чтении не возникло, и у меня на руках оказался бинарный файл. На тот момент я не смог сказать, что находилось на флешке, и начал анализ полученных данных.
Первым делом я открыл дамп памяти из ПЗУ с помощью WinHex, но можно воспользоваться любым HEX-редактором. Начал присматриваться к байтам:
Начало дампа памяти, считанного из ПЗУ
На рисунке выше приведен скриншот из редактора. Сразу бросается в глаза строка ASMT1051, которая начинается с адреса 0х44. Также можно увидеть строчку asmedia с адреса 0х18. Для первичного анализа данных я использовал инструмент частотного анализа, который доступен в WinHex.
Гистограмма частотного анализа памяти ПЗУ
На гистограмме отмечены байты, которых в файле больше всего. Помимо кучи 0x00 и 0xFF (крайние столбики на гистограмме), в памяти часто встречаются следующие байты:
- 0x02;
- 0x74;
- 0x90;
- 0xA3;
- 0xE0;
- 0xF0.
Можно было бы подтвердить мое предположение, что в ПЗУ находится прошивка. Простой способ это сделать – пробовать сравнивать опкоды (opcode) различных архитектур, подходящих для микроконтроллеров (далее – МК), с байтами, часто встречающимися в памяти.
Если грубо прикинуть, то очень часто в любом коде на ассемблере должны встречаться такие команды, как:
- mov;
- jmp;
- call;
- ret.
Конечно, в разных архитектурах эти команды могут иметь другие вариации, но общий смысл один.
Мне пришлось перебрать несколько наборов инструкций для различных ядер, прежде чем нашлись подходящие. Сравнение с архитектурой Intel 8051 дало весьма правдоподобный результат. Опкоды некоторых команд совпадают с популярными байтами из файла, например:
- 0x02 – LJMP addr16;
- 0x74 – MOV A, #immed;
- 0x90 – MOV DPTR, #immed;
- 0xA3 – INC DPTR;
- 0xE0 – MOVX A, @DPTR;
- 0xF0 – MOVX @DPTR, A.
Действительно похоже, что в ПЗУ находится прошивка для МК. Можно было бы сразу прогрузить бинарник в дизассемблере IDA Pro, но за обедом один из коллег поинтересовался:
«А ты уверен, что код в памяти начинается именно с нулевого адреса?»
И правда, нужно учесть, что в памяти может лежать какой-то «мусор» или данные с адреса 0х00.
В общем, передо мной встала задача определения начального адреса кода. Для достижения этой цели лучше всего было воспользоваться SPI-эмулятором EM100. Эмулятор заменяет микросхему памяти на плате, с ним нет необходимости выпаивать ПЗУ каждый раз при прошивке, кроме того, EM100 может записывать лог обращений к памяти. Учитывая, что прошивка из ПЗУ уже прочитана, теперь можно загрузить ее в SPI-эмулятор. Далее эмулятор нужно припаять к плате адаптера и записать лог при подключении адаптера по USB к ПК.
SPI-эмулятор припаян к плате USB-SATA-адаптера
Я припаял проводки от эмулятора на контактные площадки от флеш-памяти и прошил эмулятор считанной прошивкой. Теперь остается посмотреть, обращается ли МК к памяти, и если да, то по каким адресам.
Лог обращений к памяти ПЗУ (получен при помощи ПО SPI-эмулятора)
На рисунке выше видно, что при подключении питания к адаптеру контроллер ASM1051, установленный на плате, отправляет несколько команд 0x03 (Read Data).
Первым делом ASM1051 считывает 0x80 байт, начиная с адреса 0x0000. Следом – два байта, начиная с адреса 0x0080, потом еще два байта с адреса 0x8082. После чего считывает большую часть памяти из ПЗУ, начиная с адреса 0x0082.
Можно предположить, что большое количество байтов, которые читаются из ПЗУ последними, начиная с адреса 0x0082, наверное, и есть код. Что и зачем запрашивается до этого – пока не ясно. Известно только то, что в ответ на первый запрос ASM1051 получит от флеш-памяти строки, которые отмечены на рисунке выше. Они как раз были расположены в первых 0x80 байт.
Настало время проверить догадку, что во внешней памяти на плате находится прошивка для МК с ядром 8051, а сам код расположен с адреса 0x0082. Открываем дамп памяти в IDA Pro, указываем Processor type Intel 8051 и offset для кода 0x0082.
Бинарный файл открыт в IDA Pro со смещением 0x82
С открытием бинарника в дизассемблере проблем не возникло.
Выводы:
- МК ASM1051 имеет архитектуру 8051.
- В ПЗУ есть код, который начинается с адреса 0х82. Кроме кода есть что-то еще.
- Первые 0х80 байт чем-то привлекают внимание.
Теперь, когда я убедился, что код в IDA загружен верно, можно начать анализировать его и параллельно комментировать.
В ходе исследования кода находились простые функции, такие как вычитание 32-битных чисел, попадались различные обработчики, похожие на switch () в С. Мелькали и очень простые функции вроде сохранения значения из регистра R7 в память по какому-то адресу. Самые значимые находки я опишу ниже.
Июн 06 Как сделать переходник sata ide. Делаем своими руками
Хранением информации на вашем персональном компьютере занимается жесткий диск. Прогресс, как известно, стоять на месте не может, поэтому его скорость работы и надежность постоянно улучшаются. Смена поколений также влечет за собой смену интерфейсов. Сегодня поговорим о переходниках sata ide.
Содержание
Что потребуется
Инструкция
Не скроем тот факт, что разъемы типа Sata – это развитие ide-подключений, последний стандарт, все же, правильно называть АТА. После появления на рынке Sata-интерфейса, ATA был переименован в PATA. Как вы, возможно, знаете, шина, на которой работает ide, хвастается работающей частотой в 33Мгц. Если же вернуться к интерфейсу sata, работа его шины определяется частотой в 1.5Ггц. Разница, согласитесь, порядочная.
Это сразу отметает возможность понятия «переходник», ибо нельзя соединить пассивно два устройства, работающих на разных частотах – для этого применяют специальное приспособление под названием конвертер. Его задача – переделывать входящий сигнал одного протокола в другой, понятный для второго устройства
1. Покажем наглядно на рисунке, из чего состоит стандартный переходник-конвертер для ide и sata.
2. Как вы видите, передняя часть отвечает за подключение ide-шлейфа, задняя предусмотрена для sata. Микросхема по центру платы является тем самым контроллером, отвечающим за преобразования входящего сигнала в нужный выходящий. Также вы можете заметить разъем питания – он нужен для кварцевого генератора (блестящая «ванна») и контроллера.
3. Работа по «самоделке» не выдерживает никакой критики после выяснения стоимости устройства в магазине. Нижеприведенное доказательство должно напрочь отбить у вас желание тратить уйму своего времени на достаточно легкодоступное и дешевое устройство.
Также узнайте, можно ли сделать переходник с vga на тюльпан и sata usb своими руками.
Советы
Помните, что любое производство электроники в домашних условиях не может похвастаться должной безопасностью. Вам некому будет жаловаться, если ваш винчестер и контроллеры на материнской плате сгорят из-за подключения инородного устройства.
Стоит обратить внимание
Наглядно рассмотреть еще одного представителя вы можете тут.
Сделай сам
Большинство полезных электронных девайсов можно собрать всего за несколько долларов своими руками, без особых знаний электроники, но адаптер IDE SATA вряд ли попадает под категорию легко воспроизводимых устройств. В конечном счете, скорее всего, будет потрачено куда больше времени и средств, чем в случае покупки готового переходника, хотя на просторах Интернета легко найти множество рабочих схем. А вот «техномонстрам» такая задача должна прийтись по душе.
В заметке в доступной форме изложены простые шаги по адаптации с помощью подручных средств конвертера USB-to-SATA к виду, пригодному к использованию.
Преамбула
Однажды по какой-то (до сих пор невыясненной) причине отказал один из набортных SATA-сосков на самосборном NAS на miniITX (он же по совместительству АоЕ-сервер для diskless-клиентов), а поскольку дело было вечером (да еще и в длинные выходные) то это накладывало некие ограничения на доступность решения (хотя пулей можно слетать и в круглосуточный магазин, но лень, как известно, двигатель смекалистых умов).
Итак, задача такова: подключить SATA-винт к miniITX-системе в отсутствии свободных SATA.
Часть I
Быстро проведя ревизию околокомпьютерного хлама был обнаружен такой вот адаптер, много лет пылившийся без дела, ибо заказан был на заре популярности зарубежных интернет-магазинов:
Как выяснилось, плата не просто конвертер USB-to-SATA, а предназначенный для устройств типа ноутбучных DVD-приводов, несущих на борту ответную часть разъёма slimSATA
(отличается дополнительной нестандартной колодкой питания). Таким образом, подключить к обычным SATA-устройствам адаптер не получилось и он был надолго закинут в тёмный угол ящика.
Итак, адаптер содержит разъём slimSATA, включающий в себя стандартный разъём SATA 7pin female (как на соединительных кабелях):
Даже если выкусить с платы дополнительную нестандартную колодку питания slimSATA, то, будучи вставленным в HDD, адаптер перекроет доступ к разъёму питания HDD (SATA 15pin). Выход один — удлинитель разъёма SATA 7pin, для чего аккуратно срезаем один из концов стандартного SATA-кабеля:
Теперь можно полностью выкусить с платы адаптера разъём slimSATA и припаять конец SATA-кабеля (не перепутав местами диффпары RX — TX!):
Для придания механической прочности сочленению кабеля и платы решено использовать ПВХ-изоленту (от изначальной идеи залить силиконовым герметиком отказался — неизвестно насколько он «непроводник» на 1,5ГГц):
Теперь займёмся USB: поскольку нам нужна замена внутреннему SATA, то двухметровый моток с USB-A на USB-B внутри корпуса явно будет лишний. Избавляемся от USB-B — отпаиваем кусок платы с разъёмами и электролитами (они нужны лишь при питании DVD-привода USB).
Подключать адаптер будем к внутренней гребёнке USB на матплате. Для чего обжимаем/запаиваем (для 480Мбит/с — лучше запаять) контакты разъёма PLS-4 (удобней конечно PLD-10, чтобы на всю гребёнку сразу, но в хозяйстве присутствовал только PLS-4):
Сверившись с распиновкой гребёнки на матплате и выводов USB микросхемы преобразователя SPIF225A
, производим сборку:
Итого, потратив некоторое время на поиск нужных распиновок, на скорую руку был сооружён такого вида адаптер, который позволил без перезагрузки подцепить отвалившийся HDD и в итоге, благодаря габаритам и избавлению от атавизмов, вполне гармонично вписался в интерьер NASa:
Часть II
После решения проблем с NAS и его апгрейдом, зудящая тяга к перфекционизму подтолкнула к модификации адаптера. Для чего были заказаны нужные разъёмы: SATA 7pin male SMD
& . Размечаем посадочное место для SATA-разъёма, делаем это таким образом, чтобы отверстия под штыри-держатели не прошли сквозь сигнальные дорожки на оборотной стороне платы (как говорится — семь раз примерь — один отрежь просверли):
Зачищаем медь и припаиваем штыри-держатели на оборотной стороне платы:
Шаг выводов посадочного места на плате и разъёма SATA совпадает, в итоге получаем аккуратно запаянный разъём:
Займёмся USB-частью. Размечаем и подготавливаем место на плате для посадки miniUSB-B:
Запаиваем разъём, проявляя виртуозность при работе с шагом 0.65мм разъёма miniUSB-B:
Тут нужны некоторые пояснения, итак, последовательность действий с miniUSB-B:
- Контакт GND, чтобы не мешался аккуратно (материал ножек хрупкий — у первого разъёма обломил ножку при загибе) отгибаем вверх и припаиваем к корпусу — корпус затем припаяем на GND платы;
- Вывод ID не используется — поэтому его просто выдёргиваем пинцетом из разъёма;
- Теперь стало чуть по-свободней — осталось три вывода — их надо аккуратно раздвинуть пинцетом, чтобы было больше пространства для манёвра паяльником;
- К выводам D- и Vbus подпаиваем небольшие проводники-удлинители, а сами вводы чуть приподнимаем, чтобы они не коротили на плату после монтажа;
- Вывод D+ оставляем «как есть» — физически при монтаже он попадает на соответствующий полигон на плате;
- Теперь можно монтировать разъём на плату — прихватываем корпус диагонально, затем аккуратно разбираемся с D- и Vbus.
Практика — критерий истины, поэтому проверяем правильность соединений — реальным включением:
Вторая версия адаптера получилась куда более эстетически приятней:
Маленький штрих
Всё хорошо. И функционал, и эстетика, но не хватает изюминки. Полистав документацию на мост USB-to-SATA SPIF225A
, нашлась и она: «
pin 36 — HDD Activity LED output
«. Отлично:
Выпаиваем 10К резистор (PullUp для подавления помех на TriState-pin?) и впаиваем цепочку из последовательно соединённых R и LED. Резистор номиналом от сотен Ом (я взял 1кОм), светодиод катодом к выводу 36 микросхемы (определить прозвонкой или документацией):
Итог
На примере адаптации конвертора USB-to-SATA был показан способ быстрой доработки с использованием минимума подручных материалов (оперативное восстановление работоспособности diskless-клиентов), а так же продемонстрирован подход к более вдумчивому и элегантному решению.
В эру компьютерных технологий, скорость развития портов для коммуникации последних также задних не пасет. Другое дело, что конечным пользователям такая гонка ни к чему. Не успели они купить одно устройство, а оное уже не подходит. Сегодня разберемся с переходниками sata-usb.
- Что потребуется
- Инструкция
- Советы
- Стоит обратить внимание
Что потребуется
- Чип-конвертер;
- Печатная плата;
- Паяльная станция;
- Программатор.
Инструкция
Дабы не томить занятых посетителей, сразу скажем – непомерно проще и дешевле пойти в ближайший компьютерный магазин, заплатить эквивалент пары американских долларов и получить заведомо работающее устройство, потратив на это до часа своего времени.
Дальнейшая статья для людей, не терпящих скользких убеждений, требующих доказательств или просто любознательных индивидов.
1. Вам стоит начать с получения чипа-конвертера. Поскольку протоколы работы usb/sata в корне разные, нет возможности «перепаять тот проводник сюда, а этот сюда, и все заработает». В данном случае, требуется перекодировка сигнала, что может сделать только чип, выполненный именно под задачу перекодировки usb в sata. На рисунке показана одна из разновидностей таких чипов.
2. Теперь вам понадобится печатная плата. Это «пластинка», на которую крепятся элементы. Учитывая, что плата должна быть с полностью индивидуальной разводкой для вашего устройства, купить такую невозможно. Как сделать саму плату – это тема, достойная еще 10-ти статей и оборудования на кругленькую сумму (если есть такое — супер, Вам повезло).
3. Чтобы запаять чип на плату и организовать разводку, вам потребуется паяльная станция.
4. В завершение, если вы маг, и вам удалось выполнить все предыдущие инструкции, ваша магия потребуется и далее. После получения готовой платы понадобится программатор – устройство, разработанное специально для вашей платы, дабы запрограммировать ее именно под конкретные нужды.
Если Вы выполнили все действия и заскучали, можете попробовать сделать своими силами переходник sata ide и с vga на тюльпан? Читаем, узнаем, пробуем — отписываемся о результатах.
Стоимость производства устройства своими руками, не учитывая всего оборудования, превысит магазинный ценник в 30-200 раз. Стоит ли?
Наглядно.
Стоит обратить внимание
Каждый шаг данной инструкции вам придется выполнять раз по 15, так как труд предстоит микроскопический, и случайно попавшая пылинка сведет на нет всю проделанную работу. Возможно, если вам нечем занять ваш пытливый ум, стоит смастерить нечто более простое, например – самодельного робота?
Как сделать переходник sata usb своими руками2.90 out of 50 based on 29 voters. Поблагодари за статью — поставь лайк. Простой клик, а автору очень приятно.
IDE/SATA = USB переходник
Моя первая покупка на DealExtreme. Посылка долго ехала (45 дней), была вскрыта на двух таможнях (в Китае и в этой стране), но всё таки пришла в целости и сохранности. Тем, кому интересно, что это за проводок, добро пожаловать под кат.
Собственно, данный переходник нужен для подключения IDE/SATA устройств через USB. Максимальная скорость передачи данных — 480 Мбит/с (зависит от устройств и версии USB). В комплекте идут: сам адаптер, блок питания для устройств, SATA-кабель, переходник с 4-х контактного питания на 15-ти контактное для SATA-устройств и краткая инструкция на английском. Всё это пришло в обычной коробке.
Коробка с содержимым
Целями данной покупки были: 1. Подключение CD/DVD привода от старого компа. Ноутбучный уж полгода как сдох, собственные диски никак не записать, да и друзьям хочется красивеньких дисков (привод поддерживает LightScribe). 2. Подключение старых ЖД. На них осталось много нужной информации, да и просто хочется покопаться в старых файлах