Як зламати захист проекту 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.

Післямова

За іронією долі або можливо навіть через «буйну» фантазію розробника коду, в моєму випадку, ключ відрізнявся від пароля доступу до Панелі Оператора системи управління, всього лише на один символ. А саме - знак підкреслення.

Всім удачі!