Comments 92
VT-D не бесплатный (по производительности) и с кучей ограничений. По-умолчанию он выключен, его явно надо включать для pci-passthrough.
автору респект! а что за пинфайндер? самоделка какая или фабричное устройство? можно ссылочек, плиз?
www.ejtag.ru
* github.com/nada-labs/jtagknocker
* www.elinux.org/JTAG_Finder
Читал как в детстве сказки Бажова, ей богу.
«Еще! Еще! — кричали пионеры» :)
Очень правильная формулировка — именно смотреть. Если делать самому, быстро надоедает, и понимаешь, что forward engineering — более благодарное дело, чем reverse engineering. Я например reverse engineering люблю, но с какой-то высокой целью. Ну там, написать opensource драйвер для какого-то полезного железа. Но очень сочувствую всяким security researchers, у которых жизнь такая — ковыряться в грязных вонючих кишках какого-то тухлого железа или софта ;-).
Каждое "тухлое" железо/софт имеет автора — forward инженера :)
Класс! Можно кастомные устройства с PCI-E делать на основе копеечного (по сравнению с FPGA) железа. Да еще и с программированием самого FPGA не заморачиваться, все доступно из микроконтроллера.
Интересно ещё hdd где тоже ARM, где то читал, как товарищ на нём… linux запустил
ps цена у коробочки Ой! (если правильно загуглил)
А по поводу коробочки — 5к цена, это самый недорогой поисковик JTAG, что я смог найти. JTAGulator стоит под сотню $, другие и того дороже.
С вашей железкой так и ещё более дерзкое устроить поди можно — запустить линукс прямо в отображённой памяти хоста :)
http://spritesmods.com/?art=hddhack&page=6
Ещё на хабре вроде статья была
Статья про взлом диска на Хабре:
https://m.habr.com/ru/post/523054/
Статья про взлом диска на Хабре:Да, и ваша фраза там: «Поставить Линукс на жёсткий диск» — это сделало мой вечер!"
Хорошая инженерная работа, плюс автору
Идея со связью через сектора, кстати, живее всех живых — т.н. SmartSD карты. В с виду нормальную MicroSD дополнительно встроен чипик смарт карты с доступом через первый сектор файла с определённым именем (там всё чуть продвинутее — номер сектора не фиксирован, а выясняется встроенным контроллером через разбор FAT, т.е. форматирование не портит, создали снова файл с нужным именем и работаем).
А сами мы как-то к IDE порту подключали devboard USB хоста ISP1161. У него как раз параллельная 16-битная шина была, а ISA уже отмерла. Windows 9x, прямой доступ к I/O с помощью giveio.sys, и всё, кроме прерывания, заработало.
встроенную прошивку (а не загружаемую драйвером)Но ведь загрузка драйвером может быть и преимуществом, например, если драйверу легко подсунуть свою
Интересное исследование. Не планируете пулл-реквестнуть поддержку этой железки в PCILeech?
Рассматриваю такой вариант. Для этого нужен более-менее скоростной канал передачи данных, не по UART же данные выгружать. Да и подпаиваться к выводам непросто.
На PCI-e есть пин A11 — PERST# (PCI-Express Reset signal)
По поводу PERST — кстати очень может быть, попробую им ресетить
на всякие ноутбучные wifi карточки от китайских медиа/реал/… теков, вроде MT7612E и им подобных, не смотрели? не sata/usb3 конечно по скорости (было бы куда его обратной стороной ещё втыкать), но уже и не uart, а если со стороны встроенного процессора получится wifi поднять, то не то что подпаяться, вообще провода не нужны :)
Да и исследования на эту тему уже есть, очень рекомендую к просмотру
youtu.be/Him_Lf5ZJ38
да, какая-нибудь сетевая карта или последовательный порт в pcie куда более "совместимые" (по сравнению с огороженным вайфаем и блобами), но в них и мозгов совсем нет чтобы со стороны "устройства" в память лазить,
хотя у pcie->езернет мостов какой-то jtag торчит, если через него можно заставить отправлять пакеты в сеть, то может и получится, пусть и с процессором снаружи, зато быстрый интерфейс наружу "человеческий" и есть куда подключить.
и видеокарты ещё есть, лет 10 назад ещё вроде подключали какой-то радеон через отладочный i2c к stm32, если то не первоапрельская шутка была, данные опять же через hdmi выгружать не очень удобно.
Очень интересно, хоть и ничего непонятно.
Для меня есть определенная магия в таких статьях. Понимаю 20-25% от того, что тут написано, но всегда читаю с восторгом.
Спасибо
Чётко! Спасибо.
Хорошая, годная статья.
А есть-ли дешёвые pci-e контроллеры с хорошими манами?
Знаю, что "Элвис" делает pci на mips'ах и публикует маны.
Есть в природе китайские чипы CH367/368, там нет вычислительных ядер, но есть GPIO а-ля ISA. Стоит недорого, документация (на первый взгляд) нормальная (но на китайском), заготовки драйверов под Линукс имеются. Я почему-то тоже намедни загорелся идеей поковырять PCIe, выписал себе отладочную плату с Али, посмотрю, что из этого выйдет
давным давно на PCI сетевых карточках стояли внешние бутромы, то есть из самых дешевых реалтековских сетевух за 2$ теоретически вполне можно было сделать переходник PCI -> 8бит шина + 16бит адрес, как у CH367, но потом эти бутромы стали вешать не на чип, а частично прямо на PCI, а к появлению PCIe сетевых карт внешние бутромы в виде параллельной флэши уже вымерли, но если где ещё вдруг остались, может оказаться проще/дешевле чем специальная плата с CH367.
А можете сообразить статью про то как делать скрипты под openocd для многоядерных процов?
jtag newtap marvell core1 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x140003d3
jtag newtap marvell core2 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x140003d3
target create core1 feroceon -chain-position marvell.core1
target create core2 feroceon -chain-position marvell.core2
Ну и в консоли переключаться между ядрами через
targets <имя ядра>
для одного ядра получилось так
swd newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m -endian $_ENDIAN -dap $_CHIPNAME.dap
reset_config srst_nogate
openocd от sysprogs
Да, у кортексов с SWD и их DAP'ами иначе конфиг выглядит Получается, что на одном таргете всё висит. Как с многоядерностью в этом случае дела обстоят, не исследовал.
Через SWD видится (в том числе и) отладочная шина APB, выглядящая как отдельная 32-битная шина памяти, через которую видны компоненты CoreSight — доступ к ядрам (останов/пуск/шаг/регистры), точки останова, буферы трассировки итд. Каждое ядро представлено блоком регистров по отдельному адресу на APB, в конфиге OpenOCD нужно для каждого интересующего ядра задать этот APB-адрес (сами адреса узнаются из ROM Table, видимой на той же APB, в ней начальные адреса всех компонентов и их типы). Позже с рабочей машины допишу точный пример конфига, не помню синтаксис из головы.
Обещанный пример:
# A5
target create $_TARGETNAME0 cortex_a -endian $_ENDIAN -chain-position $_CHIPNAME.dap -coreid 0 -dbgbase 0xf4310000
# R5
target create $_TARGETNAME1 cortex_a -endian $_ENDIAN -chain-position $_CHIPNAME.dap -coreid 1 -dbgbase 0xf4320000
Адреса -dbgbase либо посмотреть в документации, либо сделать так: подключиться с каким попало конфигом, прочитать ROM table командой dap info, найти в ней интересующие ядра. Кусочек ROM table процессора из примера выше:
...
[L01] ROMTABLE[0x4] = 0x10003
Component base address 0xf4310000
Peripheral ID 0x04001bbc05
Designer is 0x4bb, ARM Ltd.
Part is 0xc05, Cortex-A5 Debug (Debug Unit)
Component class is 0x9, CoreSight component
Type is 0x15, Debug Logic, Processor
...
[L01] ROMTABLE[0x1c] = 0x20003
Component base address 0xf4320000
Peripheral ID 0x04004bbc15
Designer is 0x4bb, ARM Ltd.
Part is 0xc15, Cortex-R5 Debug (Debug Unit)
Component class is 0x9, CoreSight component
Type is 0x15, Debug Logic, Processor
Хабр все еще торт! Получил восторг от созерцания проводов припаянных к ножкам процессора. Гик-порн в чистом виде!
www.grandideastudio.com/jtagulator
gsmserver.ru/z3x-easy-jtag-with-cables-and-jtag-isp-adapter-5-in-1
www.jtagfinder.com/x
и раз уж пошел разговор про железо, возник небольшой вопрос по СА. У вас, как я понимаю, 100 мгц клон Saleae? Есть претензии к работе/замечания? Интересуюсь ибо периодически присматриваю себе модель «на вырост» из «народного» клона Saleae «24Mhz8ch» :)
У меня 100 MHz клон Saleae (вполне устраивает) и DSLogic 400 MHz (рекомендую, но он дороже). Из замечаний по клону — 50/100 не работает, но в 40/80 режиме отлично справляется
www.epos.ua/view.php/products_epos_ata_analyzer
Более того, можно сделать анализатор самостоятельно, цепочкой SATA->IDE->анализатор->IDE->SATA. IDE на 100 МГц вполне реально перехватывать.
Респект автору, много раз видел на компьютерном железе чипы знакомых по работе лейблов, возникало сразу желание перешить под что то своё, но на такое ковыряние в ассемблерном коде не хватало уситчивости) даже, казалось бы, picовский контроллер из стиральной машинки на плате с десятком кнопок, резисторов и светодиодов без выпайки завести тяжело
Ждём статью про перепрошивку роутера на ПЛИС Xilinx в аппаратный ускоритель нейронных сетей, они как раз собираются что то подобное мутить, когда их AMD доест, а тут обгоните их силами DIY
Ждём статью про перепрошивку роутера на ПЛИС Xilinx в аппаратный ускоритель нейронных сетей, они как раз собираются что то подобное мутить, когда их AMD доест, а тут обгоните их силами DIY
От таких вещей могут эпилептические припадки начаться как у геймеров от некоторых миссий в Cyberpunk 2077. Правда только у тех кто в силах понять, что человек делает, как и зачем :)
Зачем роутеры? На Али сейчас управляющие платы майнеров на Xilinx Zynq по 12€ распродают :)
USB pinfind tiny tools
где добыть? Не гуглится.
Реверсим и улучшаем SATA контроллер