Краткая предыстория


В течении некоторого времени использования одной из систем управления тех. процессом возникла необходимость редакции проекта 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.

Послесловие


По иронии судьбы или возможно даже по причине “буйной” фантазии разработчика кода, в моем случае, ключ отличался от пароля доступа к Панели Оператора системы управления, всего лишь на один символ. А именно — знак подчеркивания.

Всем удачи!

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


  1. jov
    04.04.2016 13:56
    +1

    Вы автор проекта DecryptSourceProtection?


    1. TheWriting
      04.04.2016 16:02
      +1

      К сожалению нет. Просто использовал его как инструмент.


      1. Kit123
        05.04.2016 09:53

        У меня проект в 16 версии Rslogix5000 и сохраняет он файл с расширением .L5K
        А страничка потом ругается An XML parser error occurred, did you use a .L5X file?


        1. dserj5
          05.04.2016 22:16

          Я ставил 21 версию, затем свои проекты 13-ой и 15-ой версии сохранял в *.L5K.
          Потом открывал в 21-ой и пересохранял в L5X. Ну а далее по статье.


  1. segrus
    04.04.2016 23:51

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


    1. jov
      05.04.2016 00:12

      программатор, как таковой, достать не проблема, но без лицензии он пашет только в режиме read-only


      1. segrus
        05.04.2016 00:17

        лицензии мы найдем. железка нужна.


        1. jov
          05.04.2016 14:46

          это софт. Какой у контроллера интерфейс подключения? rs-232? usb?


  1. Kit123
    05.04.2016 09:37

    Для L61 нужен программатор? У нас стоят L62. Шнурок rs232 или через модуль en2t по ethernet.
    Автору… а что у вас за агрегаты? У нас Trent60 и RB211.


    1. Olmish
      06.04.2016 16:12

      Интерфйс там RS232, но свой собственный шнурок, похож на PS/2.


  1. TheWriting
    05.04.2016 20:33

    Я подключался обычным ПК через ethernet модуль в контроллере. Система Управления Горением.


    1. segrus
      06.04.2016 07:48

      По-моему во времена нашего контроллера самого понятия Ethernet не было..) он ооооочень древний. Там какой-то круглый разъём, типа как в советских мафонах раньше были и всё. к сожалению, я пока не могу попасть на работу, посмотреть. но пробовали втыкать туда шнурок от Delta через COM порт, не видит.