Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: Ковырялся тут по теме защиты от «тиражирования»

  1. #1
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию Ковырялся тут по теме защиты от «тиражирования»

    Вроде были вопросы о том, как сделать программу работоспособной только на одном/нескольких контроллерах, то есть предотвратить её выполнение на других контроллерах той же модели с той же прошивкой. Консенсус был таков, что уникальных ключей у идентичных контроллеров нет, и нужно использовать внешний (аппаратный) ключ.

    Но кажется, у меня получилось организовать чисто программную проверку заводского MAC-адреса ПЛК серий 110 и 160. Вкратце: заводской MAC-адрес обнаружился по адресам 2069CD2E у ПЛК160 и 2060E5B0 у ПЛК110-32.

    Подробнее... Я поставил задачу найти заводской MAC-адрес в оперативной памяти ПЛК после того, как адрес в файле local_addres.dat был изменён (естественно, не натыкаясь на константы в своей же программе). На коленке был написан вот такой сканирующий память код:
    Код:
    VAR
    	i, g, c: DWORD;
    	go: BOOL;
    	mac0: ARRAY[0..5] OF BYTE;
    END_VAR
    VAR CONSTANT
    	MAC: ARRAY[0..5] OF BYTE := 16#6A, 16#77, 16#00, 16#00, 16#00, 16#F8;
    END_VAR
    
    IF go THEN
    	g := i + 2000;
    	FOR i := i TO g DO
    		SysMemCpy(ADR(mac0), i, SIZEOF(mac0));
    		go := NOT(mac0[0] = MAC[0] AND mac0[1] = MAC[1] AND mac0[5] = MAC[5] AND i <> ADR(MAC));
    		IF NOT go THEN
    			c := i;
    			i := i + 1;
    			EXIT;
    		END_IF
    	END_FOR
    END_IF
    В константах записан заводской адрес контроллера с изменёнными 4 и 5 байтами. Программа ищет совпадение в памяти по первому, второму и шестому байтам. Если при нахождении адреса мы наблюдаем в mac0 заводской адрес, и после перезагрузки результат получается тот же самый, то можно из своей программы удостоверяться в подлинности контроллера по этому адресу. Что-то вроде genuine := SysMemCmp(16#2060E5B0, ADR(MAC), SIZEOF(MAC)) = 0; Конечно, в боевой программе MAC-адрес лучше хранить не в открытом виде как показано выше, а хэшем константы с солью, чтобы исключить атаку тупой подменой байтов в бинарнике с пересчётом контрольной суммы. Обход такой защиты уже может оказаться нетривиальным и оттого нецелесообразным.

    Дальше исследовать способ предлагаю заинтересованным в защите лицам.

  2. #2
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,822

    По умолчанию

    У меня ПЛК160, версия прошивки 2.15.3
    Захват-1.png
    Ваша программа ничего не находит. Затыкается, причем на разных "i".
    Захват-2.png
    Захват-3.png
    Захват-4.png

    После чего происходит перезагрузка контроллера.
    Чтение по адресу 16#2069CD2E всегда дает 00:00:00:00:00:00
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Близко к началу берёте. Там, судя по всему, недопустимые диапазоны — у меня тоже крэшилось. Попробуйте от 16#20000000 до 16#20900000 просканировать. И не забудьте предварительно в local_addres.dat что-нибудь левое прописать и перезагрузиться, чтобы ложных совпадений в районе 20300000 не было. И прошивки у меня от 2011 года — там адреса другие, видимо.
    Последний раз редактировалось Yegor; 16.09.2015 в 14:27.

  4. #4
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,822

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Близко к началу берёте. Там, судя по всему, недопустимые диапазоны — у меня тоже крэшилось. Попробуйте от 16#20000000 до 16#20900000 просканировать. И не забудьте предварительно в local_addres.dat что-нибудь левое прописать и перезагрузиться, чтобы ложных совпадений в районе 20300000 не было. И прошивки у меня от 2011 года — там адреса другие, видимо.
    Получилось.
    Для версии прошивки 2.15.3 в ПЛК160 адрес заводского MAC обнаружился по адресу 16#2056E959.
    В local_addres.dat оригинальный МАС изменил, ПЛК перезагружал.
    Однако возникает вопрос, ведь ПЛК я перепрошил, а если при перепрошивке я бы указал другой МАС, отличный от заводского то, что бы я получил по адресу 16#2056E959? Оригинальный заводской или тот, что укажу при перепрошивке.
    Для справки МАС, указанный в local_addres.dat нашелся по адресу 16#203801A0
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Если перепрошивка меняет этот адрес, то тема объявляется закрытой

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    мне кажется нужно искать тогда не мак адрес, а например серийник процессора, правда не представляю как узнать настоящий, не разглядывал разобранный плк
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #7
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Ну, метод можно обобщить и, вооружившись двумя-тремя одинаковыми ПЛК, искать хоть что-нибудь уникальное. Только для удобства надо будет снять как можно более полный дамп.

  8. #8

    По умолчанию

    Итак, товарищи пионеры.
    С одной стороны Вы копаете в верном направлении.
    С другой на другой версии ПЛК/ПО значение MAC будет в другом адресе. Т.ч. защита без модификации работает только на одной модели (включая модификацию) и одной версии прошивки.
    И наконец, зачем такие сложности, если можно просто почитать local_addres.dat?

    P.S. Серийника на этих процессорах нет
    P.P.S. Т.к. файл в открытом доступе - ломается на раз. Гораздо надёжнее читать файл с паролем изнутри запароленного ПЛК.
    Тролль-наседка, добрый, нежный и ласковый

  9. #9
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,612

    По умолчанию

    Все предлагают разные способы защиты, а где производители, почему молчат? Им ведь проще проработать данный вопрос.

  10. #10
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    С другой на другой версии ПЛК/ПО значение MAC будет в другом адресе.
    Ну, предполагается, что заинтересованная в защите сторона найдёт время всякий раз отыскивать новый адрес.
    читать файл с паролем изнутри запароленного ПЛК
    А пароль спасёт от всяких plc_io и прочих поделок типа моего самопального шелла? Завтра попробую.

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Вопросы по теме метрология и сертификация
    от Феоктистов М.В. в разделе Метрология сертификация
    Ответов: 143
    Последнее сообщение: 25.11.2023, 08:44
  2. Ответов: 0
    Последнее сообщение: 28.05.2015, 12:53
  3. Windows zver Извините, что не по теме
    от Vitamin в разделе Трёп (Курилка)
    Ответов: 26
    Последнее сообщение: 11.02.2015, 16:26
  4. Ответов: 3
    Последнее сообщение: 01.02.2012, 11:54
  5. P––2 — работа в режиме защиты от превышения темпе
    от Котельщик в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 03.02.2007, 12:37

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •