Перевод статьи из блога Джейсона Гина "Разорви на части"

TL;DR: да, на осциллографе Keysight 1000 X-Series реально можно запустить Doom! Однако это непросто сделать.


Keysight DSOX1102G

Осциллограф должен иметь в своём арсенале любой уважающий себя энтузиаст-электронщик. Осциллографы, кратко говоря, позволяют вам изучать волны электрических сигналов в контуре, а цифровые осциллографы (digital storage oscilloscope, DSO) незаменимы тем, что могут найти редкие ошибки в сигнале, которые не распознает аналоговый осциллограф или мультиметр.

Тема моей статьи — DSOX1102G от компании Keysight Technologies (бывш. Agilent), из их недорогой линейки осциллографов, отличающихся неплохим соотношением цены к качеству по сравнению с продукцией конкурентов. Как и большинство их осциллографов, на этой модели работает встроенная ОС Windows Embedded CE 6.0 (также известная, как Windows CE или WinCE), но, как и в большинстве случаев применения WinCE, её интерфейс вы практически никогда не видите – он спрятан за специально сделанным интерфейсом для пользователя.

Этап 1: пробуждение


Когда в начале 2017 была запущена серия Keysight 1000-X, один из обзорщиков с Hackaday заметил, что способ сохранения данных на этих осциллографах иногда приводил к их падению и перезагрузке, и отметил, что перед загрузкой на экране на несколько секунд можно было увидеть указатель мыши. В его посте была гифка, где он сохраняет файл, вызывающий падение, и я заметил нечто странное на одном из кадров анимации – там можно было различить панель задач Windows сразу перед чёрным экраном с ошибкой. Интересненько!..



Выиграв свой осциллограф благодаря конкурсу Scope Month от Keysight, пару месяцев я не думал об этом, пока не наткнулся на экран с отказом самостоятельно. В моём случае я обнаружил, что заголовок Windows CE был виден поверх обработчика отказов осциллографа; перетаскивание заголовка оставляло за собой след, и в итоге подвешивало WinCE. Такое случалось очень редко, поэтому, наткнувшись на отказы впоследствии, я просто позволил обработчику просканировать файловую систему и перезагрузить ОС.

Однако меня это заинтриговало, и я хотел узнать большое о том, что происходит с лежащей в основе системы WinCE. Я обнаружил, что USB-порт осциллографа довольно чувствителен к ошибкам, и простое шатание флэшки в порту может привести к аварийному сбою. Однако этого было недостаточно для сбора нужного количества информации, поскольку это был ненадёжный метод.

Так начались мои поиски доступа к рабочему столу WinCE.

Сначала я попробовал чисто программное решение, пытаясь создать файл обновления прошивки .ksx (на самом деле это просто архив .cab), который бы смог завершить работу программы осциллографа и открыть Проводник Windows – не получилось. ПО осциллографа выдавало сообщение об ошибке, жалуясь на невозможность открыть файл. Оказывается, такое решение не сработало бы, даже если бы я заставил его загрузить файл обновления, поскольку ПО осциллографа не выходит на рабочий стол во время обновления. Встретив это первое серьёзное препятствие, я на время отставил в сторону любопытство и пользовался осциллографом по прямому назначению.

Этап 2: заглянем поглубже


Из-за своего любопытства однажды я решил посмотреть, сможет ли осциллограф считывать и записывать дискеты на 3,5" (или, как говорит молодёжь, распечатанную иконку сохранения) через USB-порт – и он смог! Однако я заметил одну странную проблему; осциллограф аварийно завершал работу, если я оставлял дисковод в USB-порту при включении. Эврика! Я нашёл способ надёжно вызывать аварийный отказ.

Тут, к несчастью, меня поджидало второе серьёзное препятствие. Этот отказ при загрузке происходил, только если в USB-порт было включено единственное устройство — дисковод. Отказа не было, если я использовал USB-хаб, в который включал дисковод. Это означало, что мне придётся очень быстро переключаться между дисководом и USB мышью с клавиатурой. Спешка с целью как можно быстрее вынуть дисковод и воткнуть комбинацию из клавиатуры и тачпада в USB в процессе загрузки была утомительной и раздражающей. Мне нужно было решение получше – железячное решение.


Специальный переключатель A/B для USB, сделанный мною для быстрой замены устройств

Использовав старый USB-кабель, дохлый USB-хаб и DPDT-переключатель, я создал переключатель USB A/B, чтобы упростить и ускорить процесс переключения между устройствами. При помощи этого метода мне удалось попытаться установить контакт с ОС WinCE на долю секунды, пока панель задач была видимой на экране, и до тех пор, пока обработчик отказов не сломал мне всю малину. При помощи магии, заключённой в замедленной съёмке моего Samsung Galaxy S9, я смог определить, что могу отправлять последовательности нажатий клавиш в WinCE и она их обрабатывает – даже на заставке системы! Я смог получить информацию о системе, вслепую нажимая клавиши, и потом изучая отклик при аварийном отказе ПО осциллографа. Тут я столкнулся со вторым препятствием.

Возможность очень краткого взаимодействия с WinCE – это хорошо, но она была бесполезной, поскольку я не мог взять над ней управление до тех пор, пока обработчик отказов перезагрузит систему. Обработчик крепко держался за ОС, и никакая долбёжка по клавиатуре и Ctrl+Alt+Delete не пускали меня обратно в WinCE.

Этап 3: ищем точку опоры


И снова моё периодически играющее любопытство пригодилось, когда я решил использовать свой старый Sony Clie PEG-NX73V (наладонник на PalmOS от 2003 года) в качестве USB-привода. У него была функция импорта данных, позволявшая перетаскивать файлы на карту памяти точно так же, как на съёмный диск.

Точно так же, как и в случае с USB-дисководом, произошёл отказ системы, когда я включил осциллограф, не вытащив PDA. Однако на этот раз обработчик отказов решил, что файловая система PDA – это повреждённый раздел прошивки, и предложил загрузить обновление прошивки с внешней USB-флэшки.



Это поведение не было регулярным, иногда ПО осциллографа всё равно загружалось, и появлялось очень странное окно из WinCE с ярко-голубым указателем мыши, оставлявшим следы на экране. Однако в этом странном состоянии мне удалось оттащить окно ПО осциллографа InfiniiVision в сторону, и я попытался потыкаться с ОС. Но ПО осциллографа вело себя очень агрессивно и возвращало себе фокус каждый раз после клика вне окна. После некоторой возни со странно раскрашенной ОС я смог обойти её. Я не мог просмотреть файловую систему, поскольку не получалось надолго забирать управление от окна ПО осциллографа, но я смог вызвать диалоговое окно свойств системы, где было написано, что осциллограф основан на Windows CE 6.00, и у него есть 100 Мб RAM.



Затем я решил порыться на форумах EEVblog, где люди активно пытаются хакнуть осциллограф, чтобы открыть дополнительные возможности. Там я обнаружил, что ПО ищет файл infiniiVisionStartupOverride.txt в корне USB-флэшки, и если находит, то пытается загрузить с неё ПО осциллографа. И хотя, судя по всему, на самом деле прошивка не загружала ПО с флэшки, этот процесс прервал запуск ПО осциллографа, и тогда уже никто не забирал у меня управление ОС. С этого момента всё стало интереснее – обработчик отказов открывал окно Проводника, и введя в поле для имени файла "*.*", я смог начать рыться в файловой системе осциллографа и USB-флэшки! Именно это мне и было нужно для получения контроля над WinCE. Однако, я встретил очередное препятствие: осциллограф перезагружался через 60 секунд, из-за чего у меня не было много времени на рытьё в операционной системе.


Запрос на обновление прошивки DSOX1102G с диалогом выбора файла с флэшки


Менеджер задач Windows CE показывает запущенные процессы на экране восстановления прошивки

Скопировав несколько инструментов Windows CE, например, Windows CE Task Manager, я заметил два интересных процесса, которые были запущены, когда обработчик отказов ещё был виден — recoverInfiniiVision.exe и processStartupFolder.exe; судя по всему, первый был обработчиком отказов, не дававший мне доступ к WinCE после аварийного отказа ПО осциллографа. Прибив второй процесс при помощи iTaskMgr (бесплатная версия менеджера задач WinCE не даёт убивать процессы) я смог удержать осциллограф от перезагрузок, а прибив первый, я увидел чистый рабочий стол WinCE – и вот я внутри! К несчастью, мне не удалось восстановить панель задач, из-за чего ориентироваться в ОС было довольно неудобно.

Я создал на рабочем столе новую папку, чтобы открыть Проводник, и, наконец, смог заняться изучением файловой системы осциллографа. Этому очень помогла программа Total Commander/CE, имеющая встроенный текстовый редактор, которого не было в данной версии WinCE.


Копаясь в файловой системе при помощи Total Commander/CE (пока никакой панели задач)

Этап 4: полный контроль


Теперь, сумев добраться до небесно-голубого рабочего стола, для полноценного ощущения WinCE я должен был восстановить панель задач. Погуглив, полазав по Stack Overflow, я накидал небольшую программу для этого. Открыв её из Проводника, я получил полную версию рабочего стола WinCE! Наконец у меня был полный контроль над базовой ОС!


Свобода – полноценный рабочий стол WinCE на осциллографе!

С этого момента я начал рыться в файловой системе и смотреть, какие интересные инструменты там можно найти. Интерпретатор командной строки не хотел запускаться, однако я покопался в реестре и нашёл ключ HKEY_LOCAL_MACHINE\Drivers\Console\OutputTo, значение которого было 0xFFFFFFFF. Поменяв его на 0, я сумел сделать Command Prompt видимым на рабочем столе, поэтому я сделал ещё одну небольшую программу, которая занималась именно этим.

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

Покопавшись дальше, я обнаружил, что как только появлялась заставка и начинали мигать светодиоды на панели, WinCE начинала обрабатывать нажатия клавиш даже без устройства, ронявшего ПО. Нажатие win+U подвешивало осциллограф, поскольку этим я открывал меню Пуск и выбирал опцию Suspend (и у ОС не было возможности вернуть после этого контроль, поскольку у осциллографа была только кнопка выключения питания). Помня это, я переименовал свой файл в a.bat, чтобы его имя было проще набирать, и попытался запускать его при загрузке через win+R, команду \usb\a.bat и нажатия Enter. Но осциллограф в результате просто показывал заставку на экране, хотя в фоне WinCE была жива, и я просто не мог видеть, что там происходит. Оказывается, что обработчик отказов был необходимым компонентом для демонстрации рабочего стола ОС, и мне нужно было просто добавить в командный файл несколько строчек для запуска и последующей остановки обработчика отказов. Добавив эти последние штрихи, я смог (полуавтоматически) загружать осциллограф прямо до появления рабочего стола, используя только USB-флэшку, мышь и клавиатуру!

Этап 4: Да, на нём запускается DOOM!


Получив доступ к WinCE, я смог, наконец, ответить на вопрос: «Запускается ли на нём Doom?» И, как оказалось, реально запускается! После запуска осциллографа на это ушло полтора года, но до этой вехи я, наконец, дошёл.


Это не обман: на осциллографе Keysight 1000 X можно запустить Doom!


Doom II работает на моём осциллографе DSOX1102G! (3 кадра в секунду)


Запуск Doom в окошке размером 320?240 позволило выжать достаточно кадров в секунду для игры. Посмотрите, какая палитра цветов!

В следующей статье я ещё немного поиграюсь с этой легендарной видеоигрой на железяке, которая никогда не предназначалась для игр.


Doom в действии в разрешении 320?240, 256 цветов! На осциллографе!

Файлы для скачивания


Я выложил файлы, которые могут вам понадобиться для того, чтобы попробовать то же самое на своём осциллографе – но учтите, я не отвечаю за его превращение в кирпич или что-то ещё неприятное! Я проверял всё это только на своём DSOX1102G, но подозреваю, что другие модели серии 1000 X и другие осциллографы от Keysight, обладающие функцией восстановления прошивки, тоже могут сработать. Прошивка осциллографа сделана так, что вся WinCE запускается в оперативной памяти и не сохраняется после перезагрузки, поэтому все изменения в ОС, ломающие систему, не превратят осциллограф в кирпич (файлы с прошивкой лежат в директориях NAND-флэшки, которые нельзя открыть через Проводник, а можно лишь набрать по имени).

Флэшку необходимо будет отформатировать в FAT или FAT32, и распаковать в её корень zip-архив Scope Liberator. Инструкции содержатся в readme.txt.

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

Комментарии (44)


  1. mphys
    31.10.2018 15:09
    -19

    А еще вы забыли добавить что это совсем не реклама
    Вобще уже обнаглели


    1. nafikovr
      31.10.2018 15:18
      +18

      мммм. как раз себе осцилл выбирал. возьму ка keisight, ведь там можно в doom поиграть в уголочке экрана.
      вы себе как то так представили работу рекламы?


      1. nafgne
        31.10.2018 15:20

        Перегрузка статьи ключевыми словами и постоянное упоминание модели прибора — вот примерно так я себе её и представляю.


        1. nafikovr
          31.10.2018 15:24

          а если я напишу статью как открыть платные функции, то вы ее тоже как рекламу будете воспринимать?


          1. nafikovr
            31.10.2018 17:21

            заранее предупреждаю. нет, я не знаю как открыть платные функции бесплатно.


      1. m1n7
        31.10.2018 15:29
        +3

        Вообще-то это реклама Sony Clie


        1. gban
          01.11.2018 13:41

          «Продам гараж» :)

          Отличный девайс

          Заголовок спойлера
          был, с колесиком, осталась только память…
          image


      1. ks0
        31.10.2018 15:33

        Хороший осцил, завидую будущим владельцам. У меня только приставка к компьютеру Hantek. На нем в Doom не поиграешь.


        1. nafikovr
          31.10.2018 16:09

          ищите плюсы. например, вы на разницу в цене можете купить неплохой игровой комп и играть не только в Doom


    1. vesper-bot
      31.10.2018 15:22
      +4

      Это вообще перевод.


    1. nerudo
      31.10.2018 16:23
      +6

      Да какая к черту реклама если софт осцила падает при сохранении файлов? На тектрониксе, к примеру, ни разу не сталкивался.


      1. nafikovr
        31.10.2018 17:21
        +4

        а вот и реклама!


        1. nerudo
          31.10.2018 17:23
          +2

          И на Лекрое не видел! (Прислушиваюсь к звону капающих монет)


    1. Acuna
      31.10.2018 20:31
      +7

      Ага, да, я запустил DOOM, но на каком осциллографе — не скажу, даже фирму не назову, чтобы не было рекламы. Сорсы выложу, но тоже не скажу для какой это модели осциллографа, чтобы за рекламу не сочли. Хотя нет, я вообще не буду говорить на какой железяке я это запустил, чтобы не давать рекламы осциллографам, а-то ишь какой, за осциллографы топит. Товарищ, вам бы нужно к специалисту обратиться, паранойя — это начало шизофрении. Не дожидайтесь когда вам уже захочется бороться с плохими обнаглевшими рекламщиками с помощью оружия.


    1. HeroFromEarth
      01.11.2018 11:40

      Оффтоп: В статье столько раз упоминалось про серьёзный баг в стандартном функционале. Это чтобы подогреть интерес не только масс, но и энтузиастов! А если подсчитать, сколько раз упоминался Doom… Вы тоже слышите звон монет?

      По делу: есть ли объективные причины, по которым для такого ПО используют windows, кроме «они имеют разработчиков, пишущих под windows»? Почему не используют open-source Linux (хотя бы из тех соображений, что за лицензии платить не надо)?


      1. nafikovr
        01.11.2018 14:17

        основная причина, которую я вижу — возраст. то есть разработаны девайсы (или их предшественники) были в те времена, когда WinCE была актуальна. встраиваемые решения на linux популяризироваться начали сравнительно недавно. вернее раньше она была популяризирована в основном среди энтузиастов. по поводу винды сейчас — не представляю почему, но не думаю что за лицензии они сколь-либо ощутимо платят.


      1. khim
        01.11.2018 14:58

        «По историческим причинам». Банальный lock-in: Windows CE появилась в 1996м — и речь идёт не первой бете, а релизе, а обычная винда уходит корнями в 1990е.

        А дальше — наработки для Windows можно просто использовать, а в Linux будет постоянная борьба с новыми версиями (улучшатели-то не дремлют, всё время какие-то несовместимости).

        Сейчас обе стороны сделали шаг навстречу: «Windows as Service» обозначает, что о былой стабильности стоит забыть, а в Linux, наоборот, революции перестали в таких количествах происходить…


  1. Sdima1357
    31.10.2018 16:11
    +5

    Поставив патч на бортовой компьютер вашего Феррари, вы можете поиграть в NFS…


    1. nafikovr
      31.10.2018 17:22
      +1

      с 3 фпс


    1. 8street
      31.10.2018 18:44

      Можно ничего не ставить, так играть.


    1. 0o0
      31.10.2018 20:32

      На тесле экранчик поболе будет…


  1. denis-19
    31.10.2018 17:44

    Как-то годик юзал агилент, который на вин xp вообще был, судя по экрану загрузке и далее начинкам. И мысли поиграть не было даже.


    1. 0o0
      31.10.2018 18:38
      +5

      Попробуйте более ядрёные флюсы…


  1. QwertyOFF
    31.10.2018 18:44
    +1

    На что только не пойдут люди, чтобы не покупать себе хороший осциллограф, например R&S RTO и играть в нормальные игры. От себя рекомендую анализатор спектра R&S FSW, на столе стоит гораздо устойчивее, чем осциллограф.

    Хак для R&S
    image


    1. 8street
      31.10.2018 18:49

      Дороговато для любителей.


    1. robo2k
      31.10.2018 21:39

      Кто подскажет — где вообще применяются такие устройства?


      1. QwertyOFF
        31.10.2018 21:53
        +2

        Помимо радиогубителей существуют ещё предприятия, разрабатывающие электронику и радиоэлектронику. Соответственно таким осциллографом можно залезть, например, в высокоскоростные интерфейсы, по типу PCI-E, в не очень высокочастотные радиосигналы и прочее.


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


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


        1. nafikovr
          31.10.2018 23:03

          почему не очень высокочастотную? вон девайс на картинке до 43.5ГГц


          1. QwertyOFF
            31.10.2018 23:12

            На картинке анализатор спектра. Осциллограф RTO если не ошибаюсь в "топовых комплектациях" до 6 ГГц. Ну и он не решает задач для которых предназначен анализатор спектра, как и наоборот.


            1. CrzyMphst
              01.11.2018 11:40

              Стоит отметить, что R&S — фирма все же не про осциллографы. У Agilent/Keysight модельный ряд, мягко говоря, помощнее.


      1. nafikovr
        31.10.2018 23:02

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


    1. nafikovr
      31.10.2018 23:04

      раньше мы на стойках чпу пасьянсы раскладывали…


    1. AGARTY
      01.11.2018 10:33

      R&S FSW8 анализатор спектра
      «Цена: 5 057 432 рублей»
      Спасибо, я как-нибудь с OWON SDS7102 поживу =)


  1. koschei
    31.10.2018 19:05
    +2

    Просто оставлю это здесь

    Заголовок спойлера
    image


  1. andrew_atreides
    31.10.2018 19:49

    Теперь можно на работе под видом особо важных дел играть на осциле. Инженеры))


  1. ptica_filin
    31.10.2018 21:09
    +2

    На осциллографах и анализаторах более высокого уровня у них стоит уже полноценная винда с простым выходом на рабочий стол, без бубнов. Плюс куча USB и Ethernet.
    Там можно не то что дум, но и в КС по сети гонять :)


  1. maedv
    01.11.2018 10:13

    Отличная статья! Я вот чуть-чуть электронщик и ни разу не программист, но было очень интересно почитать про настоящую классическую хакерскую работу («хакер — человек, увлекающийся исследованием подробностей (деталей) программируемых систем, изучением вопроса повышения их возможностей, в противоположность большинству пользователей, которые предпочитают ограничиваться изучением необходимого минимума»).


  1. AGARTY
    01.11.2018 10:24

    Блин, я то думал что вроде что-то этого: www.youtube.com/watch?v=aMli33ornEU
    Но тоже забавно. Автор молодец.


    1. bugdesigner
      01.11.2018 12:34

      Это читерство


  1. oops1
    01.11.2018 11:26

    Круто, не дорогой осциллограф стоимостью 75т рублей, для игры в дум.


  1. d00m911
    01.11.2018 11:40

    Это прикольно, но можно было попробовать пойти более простым путём. Например, изучить прошивку в IDA Pro, считав ее через программатор (если там, конечно, какая-то микруха стоит) :)

    Но прикольно, сам подход хакерский.


  1. AlexAV1000
    01.11.2018 11:41

    Эх, вот бы в Лекрое хакнули допфункции…


  1. Vsevo10d
    01.11.2018 11:50

    Жду хакинг по перебинду кнопок на панели для управления в игре!!!


    1. vesper-bot
      01.11.2018 11:53

      Смотря что за порт запущен, и как именно подключены кнопки, а то обычный redefine keys вполне подойдет.