Pull to refresh

Comments 121

Прямо археология))) а вроде бы не так давно было

Увы, про то, что связано с шифрованием, даже если оно не облагалось грифами секретности (а МК-85С - коммерческий шифратор, Анкорт его продавал любым компаниям), информации зачастую очень мало...

я тоже о этом вчера подумал, когда случайно нашёл в шкафу старый стационарный телефон, "такое старьё" - первая мысль, а сам им пользовался лет 8 назад

Я восхищаюсь разработчиками Электроника MK 85. Они смогли в далёком 1986 года в микроконтроллер с 16kByte ROM встроить интерпретатор целого языка программирования Basic.

В наши дни в 2024 современные российские программисты с 25 годами опыта не могут в микроконтроллере с 4Mbyte Flash завести UART-CLI.

Это как?

Вы не поверите, но подобное делали ещё раньше. Старый добрый ZX Spectrum лишь один из примеров.

Спектрум делался на куче рассыпухи. А здесь разве не специализированные чипы?

Специализированные, но по факту просто по несколько серийных в один корпус засунули. Да и aabzel писал про работу программистов, которые в 16 кБ впихнули интерпретатор Бейсика. А 16 кБ хоть на ферритовых кольцах делай, всё равно будет 16 кБ:)

В Спектруме Бейсик в 16 кБ вовсе не советские инженеры запихали. Максимум, они могли немного прошивку ПЗУ поменять.

Оригинальный Спектрум сильно проще в плане корпусов в отличии от того-же Ленинграда.

Вот то -то же. А сейчас современные программисты микроконтроллеров даже скриптов сборки написать не могут. Им ide подавай.

"не могут в микроконтроллере с 4Mbyte Flash завести UART-CLI."
Не могут, или не хотят?

А от чего не хотеть -то раз ресурсы MCU позволяют?

Значит не догадываются, что так можно было .

Предлагаю вам на Хабре написать статью с опросами - знают ли люди про CLI и есть ли у них желание его использовать.
Я вот знаю, что CLI можно организовать, но у меня совершенно нет такого желания.

Я вот знаю, что CLI можно организовать, но у меня совершенно нет такого желания

В чем же причина скептического отношения к отладке через UART CLI?

Меня полностью устраивает отладка через IDE.
Отладка позволяет использовать breakpoint, удобным образом смотреть содержимое памяти и модифицировать ее, выполнять программу пошагово.
Не нужно встраивать в софт лишний код, боятся, что он часть ресурсов MCU заберет, не нужно лишний UART в MCU занимать, и лишний USB в ноутбуке (там и так портов мало).

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

Я тоже раньше так рассуждал. Однако стоило раз поработать с CLI, как теперь к пошаговой отладке обращаюсь только когда, прошивка напрочь зависает.

Отладка позволяет использовать breakpoint, удобным образом смотреть содержимое памяти и модифицировать ее, выполнять программу пошагово.

Порой пошаговая отладка неприменима. Так как остановив процессор на мгновения может возникнуть рассинхрон с другими частями системы.

CLI же так грубо не нарушает timing(и) во время исполнения программ, как пошаговая отладка , при отладке через CLI код протекает в естественном для себя режиме и лишь изредка слегка замедляется редким запросами в UART.

С Shell(ом) получается none disturb отладка.

Потому что выглядит как задача "возьми самый дешёвый из подходящих по скорости и функциональности хабов-докстанций и напечатай крепление" :)

не нужно лишний UART в MCU занимать

Нехватка UART это не проблема.

UART-CLI может работать на одном UART c каким-нибудь другим бинарным или текстовым протоколом: ModeBus, AT-commands, yModem, Pelco-D и проч. Просто CLI не будет отвечать бинарные на кракозябры

Подобно, тому как в 100-Base-TХ в одной витой паке одновременно циркулируют протоколы Ethernet, CSMA/CD, ARP, RARP, NDP и проч

А один UART уж точно есть во всех MCU.

Делал иногда так, работоспособно. Если ввести маркер начала пакета и правильно его обрабатывать, по идее, программа вообще не должна будет реагировать на отладочную информацию. Скажем, если в начале пакета должен был быть STX, а вместо этого сыпется что-то из ASCII, то эти данные будут просто пропущены.

Предлагаю вам на Хабре написать статью с опросами - знают ли люди про CLI и есть ли у них желание его использовать.

Такой текст уже присутствует . И голосование тоже уже было


Не могут, или не хотят?


В самолетостроении есть такое понятие как оснастка. Это формы для литься, режущие инструменты, контрольно-измерительные приспособления, стапели и прочее.

Как и в любой другой разработке в разработке программного обеспечения для микроконтроллеров в качестве оснастки выступает интерфейс командной строки поверх UART. UART-Shell.

Без полноценной оснастки говорить о какой бы то ни было разработке как правило не приходится.

Удивительная история. Сам видел эти калькуляторы, но сразу понимал что пахнет какими-то проблемами. Спасибо за великолепную статью, видна громадная проделанная работа!

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

Какими проблемами? С законом об обороте криптосредств?

Думаю, речь всё же о проблемах с запуском. Без знакомства с теми, кто их эксплуатировал, или без реверс-инжиниринга это камень.

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

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

Я правильно понял, что для замены элементов питания нужно срывать пломбу?! Браво, конструкторы!

Именно так. Аналогично было и в базовой модели. Первый раз, насколько слышал, меняли в сервисе по гарантии.

Хотя с другой стороны - и винтики не потеряются, и эти самые СЦ-0.18 не так просто было достать.

Очередной виток истории - и снова современные девайсы для замены батареи нужно нести в сервис...

Проблема только ещё в том, что при долгом хранении их не вытащить. А они таки текут. Не так эпично, как бочонок смерти на материнках, но всё же.

Ну, это не проблема вообще. Через 12 месяцев пломбу можно срывать и менять батарейки, при условии, что машинка тянула года полтора при достаточно серьёзной нагрузке. Гораздо сложнее было собственно эти "сэцэшки" найти, по крайней мере, в Казани. В наличие они были разве что в часовых мастерских, но часовщики за четыре "таблетки" хотели слупить половину моей зарплаты.

...В 1993 году сбылась моя мечта: будучи в командировке в Москве, купил МК-85М в книжном магазине на Кузнецком мосту. Цену уже не помню, то ли 1600, то ли 1900 рублей. А может быть, и 19000 -- какие там рубли были в 1993? В общем, не суть. Машинка прекрасная, очень выручала в самообразовании (численные методы и проч.). После МК-54, -61, -52 казалась чем-то божественным. Пользовался ею я, пожалуй, года три-четыре, даже несмотря на появление домашнего компьютера. А затем одним прекрасным утром вдруг половина экрана "потекла", почернела. Машинку я не бил, не ронял, обращался крайне обращался аккуратно. Но случилось то, что случилось. Вздохнул, положил в укромное место, чтобы была просто память, "артефакт" из юности.

Год назад вспомнил про него, нашёл -- включается от БП! Непонятно, куда потерялась накладка. Решил восстановить работу, заменить экран. Начал искать на Авито доноров и -- о чудо! -- нашёл и купил. Теперь дело за малым: собраться с духом и начать делать то, чего я никогда в жизни не делал.

Вот, такие мысли возникли по прочтении вашей как всегда замечательной статьи, за которую вам огромное спасибо! Благодаря вам я и про "широко известный в узких кругах" чатик узнал, и про эмулятор. Да и вообще ваши тексты -- кладезь полезной и интересной информации.

Спасибо ещё раз.

Скорее всего, заработает. Там довольно простая конструкция.

Неожиданная проблема, обычно МК-85 "сыпятся" (как у меня этот), а не текут.

Вот так оно выглядит:

Фотография

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

READY P0 тоже в какие-то полоски превратилось, но, как я понимаю, это контактные резинки. Их тоже приобрёл новые (вот чего я больше всего боюсь -- это их менять).

Если поставить без перекоса, то он оживёт.

Лежит дома нулевый МК87, подарен был бабушке как участнику съезда народных депутатов.

Жаль, конечно, что в серию они не пошли...

Я на своем 85-ом ровно такой же дефект дисплея вылечил, причем очень странным способом и случайно. Для проверки ЖК дисплеев без контроллера я по контактам проводил паяльником (не нагретым), у которого не было заземления и через импульсный блок питания попадали 50 герц из сети через помехоподавляющий конденсатор. От такого вандализма сегменты на ЖК дисплее активировались. А дисплей МК-85 от этого ожил! В нем восстановился контакт на переходе токопроводящих слоев с верхнего стекла на нижний.

Возможно, достаточно просто провода от контакта простого импульсника. Или прижим тоже нужен?

Я так выяснял распиновку дисплеев, у которых она неизвестна.

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

И индуктивные скорее всего тоже, ибо уроненные в отсек контакторной панели троллейбуса т.н. "автомобильные часы" погорели, будучи в полностью диэлектрическом пластмассовым корпусе. При "следственном эксперименте" так светилась часть символов экрана вблизи катушек контакторов, но только если держать рукой )

Нет, индуктивных токов не бывает. Точнее бывает, но они далеко не распространяются и через цепи не перебегают. А ёмкости дорожек как раз способствуют работе. Двумя другими обкладками конденсатора выступает тело человека, а вторая планета Земля. И ток идёт по воздуху через эту ёмкость. В общем-то известная штука любому студенту энергетического ВУЗа.

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

ЭМИ от срабатывания контакторов? Там постоянка, но токи довольно высокие, да и дуга бывает при переключении...

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

Думаю, дело в этом.

Там, конечно, не как в электровозе, где при срабатывании БВ металлические предметы рядом подпрыгивают. Но всё же.

В детстве забавлялся, прикладывая жк дисплеи от калькуляторов к экрану элт телевизора. При перемещении их по экрану, сегменты весело загорались один за другим, причём ярче, чем когда они были в калькуляторе)

Я магнитики к ЭЛТ-экрану прикладывал :)

Прикладывал. Правда потом папа ремень к моей пятой точке прикладывал :)

Прикладывать магнит к экрану для определения полюсов советовалось в "Юном технике". Правда, почему-то забыли предупредить, что это можно только с ЧБ телевизором, а с цветным не стоит.

Я где-то увидел про поднесение магнита сбоку и искажение картинки.

Естественно, даже серьезный кольцевой магнит боковую обшивку цветного «Самсунга» не пробил.

Пришлось приложить спереди. Осталось цветное пятно по форме инструмента, его породившего.

Пришедший домой отец мигом сообразил, что произошло.

К счастью для моей задницы, проблема полностью и бесследно решилась применением обратной полярности магнита.

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

Схемотехника полностью идентична базовой модели МК-85. Схемы (как принципиальная, так и блочная) легко ищутся.

Вот, что я понял из открытых источников
Вот, что я понял из открытых источников

Спасибо за статью! А известно что-нибудь об алгоритмах шифрования МК-85С? В каком виде сохранялся в прошивке ключ? Была ли эта оригинальная строка или длинный бинарный хэш?

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

Ключ в памяти точно не открытым текстом лежал. Во всяком случае, загрузив его на эмуляторе и открыв HEX-дамп, ни следа этой последовательности там не нашёл. Явно какие-то преобразования проводились.

Интересная тема, даже зарегистрировался ради комментария. Ключ открытым текстом (только в хексе) лежит по адресу 0x8098. Над остальным ещё подумать надо.

Скрытый текст

Пароль, впрочем, тоже лежит по адресу 0x8092.

О! Спасибо за подсказку. Теперь стало понятно, где он там.

Про то, что пароль открытым текстом, сомнений вообще не было.

Есть книга от создателя этого криптокалькулятора:

Масленников Михаил Евгеньевич, "Криптография и свобода"

Да, в своё время с интересом прочитал. Более того, часть информации о данном устройстве я почерпнул оттуда.

в двух словах можно, что дало использование сего калькулятора в истории с авизо?

Почему, отличная ссылка. Спасибо! И в книжке автора интересно, что ноги как всегда ростут от военщины, и что то про принцип работы.. ( увы всего не понял) https://mikhailmasl.livejournal.com/9659.html

Я где-то в 95/96 г проходил практику в военно-полевом банке ЦБ РФ. Там как раз использовались такие для шифрования или подписания авизо, не помню точно. На весь банк из было 2 или 3 штуки. Вот не помню только с какой буковкой они были "С" или "Б"? Более старшие сотрудники подтверждали, что эти калькуляторы помогли прекратить поток фальшивых авизо за пару лет до того. Возможно, у меня даже где-то сохранилось в отчете о практике описание бизнес процесса обмена авизо с шифрованием на этих калькуляторах.

84534 45986 35465 64750 69746 75562 96281 96471 16889 77629 94879 96394 73073 45415 29900 39356 54944 10712 85757 23266 32131 18232

А пробовал ли автор расшифровывать долговременный ключ7 Вдруг это просто зашифрованная кодовая фраза?

Ожидаемо вышли кракозябры...

Зато теперь мы это знаем наверняка! ))

Доля истины тут может и быть. Не исключено, что указанный ключ порождён тем же алгоритмом, включенным в качестве ГПСЧ.

Впрочем, по сути ключ — 100-значное десятичное псевдослучайное либо случайное число. Методы его получения могут быть весьма неожиданные (МРК давить, монету бросать, с ГСЧ взять, хеш от фото Луны посчитать).

если это так, то большой вопрос каким ключом его расшифровывать

В студенческое время у меня был МК-61, много на нем по развлекался.

И конечно же, мечтал о МК-85, он продавался в том же магазине "Электроника" на Западной поляне в Пензе. Но очень-очень дороха... )) За 100 р цена была, это весьма большие деньги по тем временам...

Спасибо, очень интересное исследование провели! Статья хорошая! Жаль, что компания не выпустила всю документацию в открытые источники, наверняка где-то в противном пыльном архиве томятся без дела.

Я так понимаю, это использовалось для шифрования небольших текстов на предприятиях? Интересно, использовались в купе с компьютером. Что за модель, было бы очень интересно узнать, но это уже другая история...

PS. Имеется инженерный калькулятор того же завода, отличная вещь и в наше время! Если сравнить с каким-нибудь базовым CITIZENом – небо и земля! По-прежнему функционирует, только батарейки поменять надо.

Калькулятор Электроника МК-51.
Калькулятор Электроника МК-51.

О! По-своему легендарный девайс. МК-71 ещё был, которому вообще батарейки не были нужны. Но, рассказывали, у него был минус, что зимними вечерами в университетских аудиториях света ему не хватало.

У моих родителей были оба, до сих пор живы и отлично работают...

Кстати, тоже знакома МК-71 :).

Интересный факт для истории: покопал Авито (полезные фотоматериалы), из чего сделал небольшой анализ: там встретилась МК 51 1986 года, у неё мощность <=0,006 Вт, а в моём случае 1989 год (даже в 1993 тоже производились ещё, оказывается) энергопотребление удалось снизить до P <= 0,001 Вт. Немного, но приятно :). А сейчас современные производители каждый год производят новые и новые модели, под час не оптимизируя ни код, ни схемотехнику. Капитализм.

PS. Здоровья вам и вашим родителям 🙂. Просто доброе пожелание.

Мне в МК-71 запомнилось, что там в цепи солнечной батареи стоял светодиод, использовавшийся как стабилитрон. Без него на ярком свету на плату подавалось чрезмерное напряжение и калькулятор тупил.

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

В МК-71 именно светодиоды. Сколько - не помню, но больше одного. Мелкие, полу-SMD: почти плоские, и ноги не назад, а вбок торчат. Если засветить солнечную батарею слишком сильно - светились.

Такое было во многих калькуляторах, не только в МК-71. Я ещё помню историю, как кому-то в школе закупили калькуляторы на солнечной батарее. Примерно тогда же дети узнали про такой по тем временам всё ещё экзотический компонент как светодиод, а также про его наличие внутри калькулятора. В общем, спустя пару месяцев практически все они были оттуда выкушены...

В китайских на солнечной батарее (в тех, которые были нормальными, а не на батарейках внутри) были маленькие выводные светодиоды, похожие на те, что ставили в энкодеры в шариковой мышке.

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

Возможно, спектр люминесцентных ламп нравился ему меньше.

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

Работает. Проверяли.

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

И питание от 3В шайбы (не помню какой, я себе мастырил внешний БП из 2шт. ААА). Вроде производства 1991-го был.
Перемычки из прозрачного пластика много лет как оторвались и обложка мануала тоже пришла в негодность. А в остальном всё норм было.

Ну, кстати, обложка там тоже была довольно таки характерная, практически неубиваемая. Помню, что в кармашке на откидной части у нас вечно лежали визитки какие-то.

ДМЛ-120 зовётся эта шайба. Современная похожего диаметра - 2540, применяется в некоторых "полусмарт-часах" (где BLE есть, но дисплей сегментный). Соответственно, встречается в продаже, но реже ходовых 2016/2025/2032, и цены далеки от массовых. Выпускали и другой вариант МК-51, под два мелких элемента на 1,5 вольта.

Википедия пишет, что МЛ2325, ДМЛ-120 или аналог - CR2325. И можно заменить на CR2032, как более доступный вариант.

Значит, 2540 не запихнётся. Потому что первые две цифры - диаметр в миллиметрах, оставшиеся две цифры - толщина в десятых долях миллиметра.

Со 120 ещё проще, это - ёмкость.

Если алгоритм шифрования не побеждён, то как тогда понимать это утверждение? "зашифрованное на реальном калькуляторе расшифровывается на эмуляторе, и наоборот."

Не побеждён - значит, я не знаю, как он работает. Когда отреверсим прошивку - расскажу об этом в отдельной статье. Может, даже сделаю программную реализацию его.

Но, поскольку схемотехника абсолютно идентична базовой модели, для создания эмулятора понадобилось только нарисовать новую переднюю панель и слегка доработать эмулятор обычного МК-85. Ну и прошивку считать, разумеется.

Я правильно понимаю, что эмуляция на уровне инструкций ассемблера, а не переписанная на высокоуровневый язык программирования?

Да. Полностью эмулируется работа всей электроники калькулятора, соответственно, прошивка запускается оригинальная.

Наколдовал пару ДКЛ кривыми методами. До полного анализа алгоритма ещё далеко.

98133 35504 56192 31359 44815 20804
00797 48453 97366 45260 23487 17010
96184 76684 02233 69885 62435 59644
86070 98498 40375 33014

51457 48134 17033 39807 64381 98958
18233 92167 41793 80774 27198 75757
14743 24146 21875 25688 75054 03716
30304 94034 98080 78234

Если не секрет, как удалось их получить?

Под GPL опубликую ответ в ближайшем будущем. Уже многое по нему достаточно ясно.

Думаю, что публиковать можно, но пока ещё думаю. С выпуска снят, патенты вроде как истекли. Вряд ли где-то используется.

Было бы забавно на базе обычного МК-85 сделать генератор TOTP, софт написать и ПЗУ сменить вполне реально. С точными часами на борту сложнее, их попросту нет.

Защищённость от вскрытия никакая, но как предмет искусства вполне.

Если вместо ПЗУ приделать внутрисхемный эмулятор, можно сделать несколько ячеек динамически меняемыми, подсовывая туда данные от RTC.

Нежелательно подключать не переделанный Д2-10М. У него выходное напряжение больше, чем у Д2-10К. Ничего не дохнет, у КМОП диапазон допустимых напряжений достаточно широк. Но контрастность задирается непомерно, приходится уменьшать регулятором.

Тоже такое говорили. Но просто слышал, что на закате производства МК-85 к ним клали именно этот БП.

Так, по-хорошему, надо бы использовать стабилизированный.

Может, на поздних Д2-10М просто стали чуть меньше витков на вторичке мотать, и именно поэтому?

Сейчас по идее можно от любой зарядки с USB запитать: 5В для калькулятора должно хватать (ну и ЗУ будет выдавать немного больше на такую мизерную нагрузку).
Правда нужно брать блочок, который не отключается при малой нагрузки, а то есть и такие.
А ещё проще прирутить в качестве внешнего БП Li-Ion аккум любой ёмкости и копеешную мелкую повышайку на 5В (в том числе из дешёвых повербанков, можно даже использовать платку из древних повербанков, которые батарейку использовали как источник, вместе с самой батарейкой типоразмера АА или ААА).

Скорее за некоторыми энергобанками замечал, что при малой нагрузке отрубаются. Совершенно случайно увидел, когда надо было ардуино с дисплеем от него запитать... А вот с сетевыми не помню такого.

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

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

у нормальных повербанков обычно в таком нужды нет
а для некоторых сильно «умных» СЗУ может бы и пригодилось

Наоборот, чтобы СЗУ при малой нагрузке вырубались, не встречал, а пауэрбанки почти все так делают.

GaN точно бывают проблемные))

Любопытно, но в качестве развития МК-85С на его основе был разработан МК-95С (две строки, внешние порты ввода-вывода, очевидно, для удобства работы); и этот МК-95С не имеет никакого отношения к МК-95. Тот случай, когда нумерация пошла не по ГОСТу.

Скрытый текст

Году этак в 2008 была возможность прихватить МК-90.

очень жалею.

У меня пару лет назад была возможность отхватить по довольно таки молодёжной цене МК-90, правда, с потёкшим экраном. Тоже жалею.

Пользовался МК-90 после МК-85 в студенческое время (и МК-52 в школьное). Полезные девайсы. Правда потом удалось запустить маткад на Поиске. После этого курсовые и лабораторные с комплексными числами считались уже там.

Sign up to leave a comment.