Коротка передісторія
Протягом деякого часу використання однієї з систем управління тех. процесом виникла необхідність редакції проекту 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.
Післямова
За іронією долі або можливо навіть через «буйну» фантазію розробника коду, в моєму випадку, ключ відрізнявся від пароля доступу до Панелі Оператора системи управління, всього лише на один символ. А саме - знак підкреслення.
Всім удачі!