Выгрузить программу из S7-200 просто? Или не очень?



Добавлено: Дмитриев Алексей



Предисловие.




Написать эту статью меня подтолкнула ситуация с купленным на нашем опытном производстве станком для гидроабразивной резки листовых материалов ”ALBA” производства наших китайских коллег- машиностроителей из фирмы Sunrise. Станок прекрасно работал пару-тройку лет, и вдруг на дисплее системы ЧПУ появилось сообщение ”Emergency Stop” и станок всяческие действия производить отказался. 
При этом на пульте управления в режиме двоичного счетчика красиво мигали две красные светодиодные лампы. Поскольку нормальной техдокументации не было, позвонили в сервисный центр продавца. Там ответили — присылайте заявку, платите денежку, опосля чего приедем, поглядим. Предложение, наверное, и было-бы принято, если-бы предприятие не сидело на картотеке, денег, естественно, не было. 
Тогда начальство попросило меня посмотреть, хотя в служебные обязанности зама главного конструктора по АСУТП проектного института и не входит обслуживание станочного парка опытного производства.




S7_200
Пульт управления станком.




Процесс.





Фаза первая — подготовительная.




Осмотр показал, что всей лабудой (кроме ЧПУ) управляет маленький S7-200 с одним дополнительным модулем ввода/вывода. Хотя мы в своем оборудовании 200-ю серию не применяли (все больше 300-ю), но адаптер PPI был в наличии (остался от комплектации какой-то панели оператора). Все просто — надо скачать софт из контроллера и посмотреть, что выставляет ошибку на ЧПУшную систему, благо выход контроллера горел только один, и при его отрывании от контроллера, ошибка с экрана ЧПУ пропадала, что впрочем, не разрешало работать станку.




S7_200
Вот этот контроллер.




Далее, казалось все очень тривиальным. Установил на ноутбук Step-7 Micro/Win, подключил контроллер, настроил интерфейс, Upload, а потом.... Окошко ввода пароля. Попытки ALBA, SUNRISE, SUNSHINE и CHINA ничего не дали :). 
Звонок в техподдержку продавца несколько обескуражил - «У нас нет пароля, китайцы не дают. Если что-то с контроллером, мы им в поднебесную отправляем!» - …??? Верилось с трудом, и вопрос кряка этого всего хозяйства становился делом профессиональной чести.




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





Фаза вторая — сбор информации.




Пошел в офис курить Интернет. Контроллер из шкафа станка демонтировал и прихватил с собой. Нашлось много чего интересного, в основном на http://plcforum.uz.ua. Сайт очень полезный, всем настоятельно рекомендую!
Программа распароливания проекта S7 - 
Ссылка №1:
http://plcforum.uz.ua/viewtopic.php?f=1&t=9426&hilit=unpassword 
Хорошая вещь, реально работает (проверил позднее), но у нас нет проекта!
Дальнейшие поиски привели к методике считывания дампа из микросхемы 24С64 - памяти с последовательным доступом. Имея дамп тоже можно извлечь пароль.
Ссылка №2:
http://plcforum.uz.ua/viewtopic.php?f=1&t=4648&hilit=%D0%BE%D0%B1%D1%80%D0%B0%D0%B7+S7+200
Огромное спасибо CoMod-у за подробную информацию.
Есть там еще одна ссылка, которая призвана прочитать пароль прямо с контроллера по штатному интерфейсу PPI.
Ссылка №3: http://rapidshare.com/files/3337879/S7-200.exe.html Программа реально обращается к контроллеру, даже читает тип ЦПУ и версию прошивки, но, увы, пароль не показывает — поле пустое. Подозреваю, что это когда-то работало, но на ранних версиях прошивок ЦПУ. 
Программа реально устарела и уже неактуальна для новых процессоров.





Фаза третья — аппаратное обеспечение (hardware).




Следующий шаг — конструирование программатора. Недолго думая, сварил навесным монтажом то, что рекомендовал CoMod в ссылке №2 на базе порта LPT. Два КТ315, четыре резистора. Приварил проводки к микросхеме ПЗУ, установил PonyProg http://www.lancos.com/prog.html и … не работает! 
Танцы с бубном и прощупывание сигналов при помощи мультиметра результатов не дали. Как оказалось позднее, плохо прощупывал мультиметром, но об этом потом. 
Пошел курить Интернет дальше в поисках решения. В результате остановился на схеме программатора EXTRAPIC http://www.5v.ru/extrapic.htm в упрощенном варианте — выкинул все, что не нужно для чтения 24С64, а это немало. Осталось две микросхемы MAX232 и 555ЛА3 (я поставил 155ТЛ3), четыре конденсатора, резистор и диод. Когда ездил за MAX232 в магазин (остальной хлам присутствовал) решил купить и 24С64 для экспериментов с программатором. Питание 5 Вольт взял с USB. Приварил проводки к микросхеме ПЗУ (уже новой в корпусе DIP), запустил PonyProg и … не работает! 
Б...дь!




S7_200
Вот схема программатора:




S7_200
Так выглядит сваренное наскоро устройство.




S7_200
Вот расположение микросхемы на плате контроллера S7-200.




Фотографии платы контроллера с http://plcforum.uz.ua/ предоставлены CoMod-ом, за что ему огромная благодарность.





Фаза четвертая — танцы с бубном.




Скачал http://www.winpic800.com/. Программа очень полезна для настройки и тестирования программатора — можно выбирать сигналы портов, которые подключены к микросхеме ПЗУ и переключать их программно в статике, проверяя, таким образом прохождение и нормализацию сигналов. Попутно пристально разглядел маркировку купленной 24С64 и ничего похожего на корпусе не нашел. ??? Не то подсунули в магазине (может быть случайно, может аналог)…? Поехал в другой магазин, и купил там 24С08 (на ней именно то и написано), подключил... 
Нет ответа от чипа ПЗУ! Стал прощупывать сигналы мультиметром и … обнаружил замыкание, не совсем короткое, но все же, сигнальных проводов между собой в кабеле, соединяющем программатор с микросхемой ПЗУ. Кабель этот был накануне отстрижен от дохлой мышки (вот почему мышка-то не работала!)! Отрезал половину — коротыш пропал. Подключил и … о чудо — ЗАРАБОТАЛО! Подключил проводки к микросхеме 24С64 контроллера S7-200, запустил WinPic800 – чтение и … прочиталось 256 байт нулей...!!!??? 
Б...дь!




S7_200
Вот здесь и происходил процесс.





Фаза пятая — Победа!




Скачал программу http://www.ic-prog.com/. Запустил и …, о чудо, прочитал таки дамп. Выглядит начало довольно прикольно!




S7_200




Дальше дело техники, как написано в ссылке №1. Используем Unlocks7_200and300.exe для извлечения пароля из дампа. Выкачиваем проект Step-7 Micro/Win и пристально его изучаем. Победа!





Фаза шестая — изучение кода из поднебесной.




Программа управления, собственно ничего хитрого собой не представляет. Обычное «релейное» управление всякой всячиной, типа гидравлики, насосами, клапанами и прочей дрянью, но... Присутствует код таймера на 360 рабочих смен по 8 часов. Таймер считает только тогда, когда включен какой-то выход, типа включения гидронасоса усилителя давления, то есть когда станок работает. Когда таймер досчитывает до конца, устанавливается флаг с адресом M13.0 :), типа, все ребята, платите денежки! Что это, как не вымогательство! Сбросить флаг невозможно никаким образом, кроме подключения отладчика, для чего нужен пароль! 
Насколько это некрасиво и кто запрограммировал это, либо китайцы, либо наши посредники из Москвы мне, естественно, неведомо... Но хочется сказать: Ну и козлы же вы, ребята!
PS: Что интересно, на корпусе ПЛК маркером написано 360D. Сначала я принял это за пароль, потом конечно, стал понятен реальный смысл этой надписи :).
Кстати, первый вариант программатора, скорей всего, был рабочий. Виной всему был этот гнилой огрызок кабеля от мышки!