[Из песочницы] Как взломать защиту проекта PLC Allen-Bradley,
Краткая предыстория
В течении некоторого времени использования одной из систем управления тех. процессом возникла необходимость редакции проекта PLC. Так как, система была установлена американской компанией, то проект был реализован на контроллере Allen Bradley, а именно 1756-L61. Совпадение? Не думаю.
Хотя любовь американцев к Allen Bradley — это скорее просто мое наблюдение. И ни в коем случае не реклама этого производителя контроллеров.
Ближе к делу. Секции проекта были защищены от редактирования, в связи с «мудрой» политикой разработчика в стиле «Ничего не трогайте, без нас! Это нарушит стандарты безопасности эксплуатации управляемого агрегата. И т.д.»
Признаюсь, никто не ставил перед собой цель менять технологическую логику объекта.
Речь шла только о создании пары-тройки переменных для последующего вывода на Панель Оператора с возможностью изменения уставки.
Но защита не позволяла даже создать новую переменную вместо константы. Поэтому желание взлома защиты захлестнуло полностью.
Приступим
Для подключения к контроллеру использовал RSLogix 5000 V19.01.00 (CPR 9 SR 3).
Серый фон редактора проекта показывает запрет на редактирование секции.
Заходим File→ Save as… и сохраняем файл в формате XML RSLogix 5000 .L5X:
Открываем сохраненный проект *.L5X в текстовом редакторе, например Notepad++.
Копируем содержимое и переходим на онлайн дескриптор: skdatmonster.github.io/DecryptSourceProtection/index.html. Вставляем содержимое в левое окно.
Внимание! Копирование может занят некоторое время. Ожидаем в предвкушении. Мой файл был размером 1,9 MB: это заняло порядка 15–20 реальных секунд.
Скопировалось? Нажимаем «Decrypt→».
Получаем картинку схожую с этой. Где » Unpacked encoded data»- неудачная попытка декриптирования. Скролим немного ниже — Hallelujah! Вот он — декриптированный ключ.
Теперь мы готовы перейти к второй части, а именно, к снятию защиты с каждой секции проекта.
С помощью Notepad++, создаем файл разблокировки sk.dat и вставляем в него уже известный нам ключ снятия защиты проекта.
Заходим в Tools → Security →Configure Source Protection. Нажимаем «Specify» и выбираем путь к нашему файлу sk.dat.
Далее, все еще проще — выбираем секцию проекта и нажимаем «Unprotect».
Атрибуты Source Key и Viewable буду исчезать, подтверждая факт разблокировки секции. Таким образом, так делаем с каждой, интересной для нас, в плане редактирования секцией.
Подключаемся online к нашему контроллеру — он предложит выгрузить проект. Соглашаемся.
И через пару минут, после выгрузки проекта, заходим в любую секцию, с которой предварительно сняли защиту. Вуаля!
Белый фон редактора кода проекта подтверждает нам, что теперь, мы можем редактировать секцию. Цель достигнута.
В случае, последующего перемещения или удаления файла с ключем снятия защиты проекта, редактирование будет запрещено. Следовательно, вам прийдется повторить действия по созданию нового файла sk.dat.
Послесловие
По иронии судьбы или возможно даже по причине «буйной» фантазии разработчика кода, в моем случае, ключ отличался от пароля доступа к Панели Оператора системы управления, всего лишь на один символ. А именно — знак подчеркивания.
Всем удачи!