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

Тема: защита прошивок

  1. #1

    По умолчанию защита прошивок

    Доброго времени суток! Наверно тема поднималась не раз.
    Хочу с вами поделиться мыслями.
    Например поставлена задача для ПЛК 100.
    Будет в цехе работать 50 шт. ПЛК 100 с одинаковой задачей.
    Как заказчику передать готовый щит с ПЛК 100 и залитой в него программой, и быть уверенным, что его пряморукие программеры не зальют в остальные 49 шт. ПЛК 100 эту прошивку?
    А заказчику надо "посмотреть", как будет работать установка.
    Я давно придерживаюсь принципа: Программу, программно, не защитишь.
    И, например мы, используем физический ключ. Программу нужно и можно защищать только аппараткой.

    В RS232 ПЛК 100 устанавливаем заранее собранный типа "HASP" ключ.
    Собран он на ATmega8 например. И он обменивается данными с ПЛК 100.
    Для разгрузки СОМ порта контроллера, можно использовать АС3м, чтоб перевести ключ на RS485. И придать ему адрес. В программе контроллера прописывается периодическое обращение к ключу. Если его нет, программа останавливается.

    При продаже следующих 49 шт. ПЛК 100, программа в контроллере меняется и он работает без ключа.

    Такой "HASP" ключ легко изготовить самому.
    Спасибо за внимание.

  2. #2

    По умолчанию

    достаточно интересный способ, спасибо за информацию.

  3. #3
    Пользователь
    Регистрация
    11.08.2008
    Адрес
    Астрахань
    Сообщений
    58

    По умолчанию

    Да, решение хорошее. Но есть один момент - ключ с плк работает по 232-му интерфейсу, соответственно, порт плк открываем с помощью syslibcom. Теперь, если плк и ключ работают длительное время, то, вытащив ключ из плк, обнаруживаем, что плк по-прежнему получает данные от ключа из порта, в течение приблизительно 30 секунд. Хотелось бы сократить этот интервал до минимума - вытащил ключ - передача пректратилась. Вопрос: что это, буфер порта или что-то другое? И как с этим бороться

  4. #4

    По умолчанию

    ??? что-то у вас не так. буфер в порте есть, но если вы его прочитали - он очистится. другое дело если читает вы реже чем приходят байты - но тут надо просто чаще читать

  5. #5
    Пользователь
    Регистрация
    11.08.2008
    Адрес
    Астрахань
    Сообщений
    58

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    ??? что-то у вас не так. буфер в порте есть, но если вы его прочитали - он очистится. другое дело если читает вы реже чем приходят байты - но тут надо просто чаще читать


    Об этом мы не подумали . Тогда другой вопрос: как читать чаще, если и так syscomread выполняется каждый цикл?

  6. #6
    Пользователь
    Регистрация
    10.01.2007
    Адрес
    Красноярск
    Сообщений
    138

    По умолчанию

    Читайте несколько раз за скан

    WHILE <здесь можно ограничить чтение, например, не более 20 байт за скан> DO
    pbuf:=GetByte(id);
    IF pbuf<>0
    <сохраняем в буфер>;
    ELSE EXIT;
    END_IF;
    END_WHILE

  7. #7

    По умолчанию

    Толком, объясните, как обнулять буффер. Контроллер ждёт символ перевода каретки, для того, чтоб обнулить буфер?
    Например у нас идёт с ключа бесконечный поток цифр.
    1234567890123456789012345... и т.д. Контроллер, поймав например 45678, (строка приёма определена длиной 5 символов) по алгоритму смотрит, что в этой строке последущая цифра больше на 1 предыдущей. Если это так, программа продолжает работать по плану А.
    Мы вынимаем ключ, за какой-то надобностью в этой строке по-прежнему остаётся 45678. И через, как nikita сказал, примерно 30 сек строка обнуляется. Программа далее работает, как нам надо, по плану В.
    Вставляем в порт ключ, строка уже приобретает вновь, какое-то пойманное в порт значение, например 23456, всё повторяется заново.

    Но эти 30 секунд не прибавляют нам настроения!

  8. #8

    По умолчанию

    у вас явная ошибка алгоритма работы с портом. старайтесь читать весь аппаратный буфер, тогда там не будут накапливаться ошибки. при открытии порта вы явно указываете размер аппаратного буфера... нет смысла делать его очень большим, лучше читать чаще. когда вы читаете буфер порта в цикле будет лучше если все принятые символы заберуться из него и он очиститься, бог знает правильно ли устроена у него очередь и хватает ли времени в цикле на ее обслуживание.
    далее, обрабатываете принятые символы и очищаете уже программный буфер.... в этом случае у вас ничего не накопиться лишнего никогда ))

    (*Получаем данные из порта*)
    bytes_read := SysComRead( com_num, ADR( BUFF_SERIAL ), 255, 0 ); (* СЧИТАТЬ СИМВОЛЫ ПОЛУЧЕННЫЕ МЕЖДУ ОПРОСАМИ *)

    - т.е. если в аппаратном буфере меньше чем 255 символов, все они переносяться в программный буфер, а аппаратный очиститься.... а если в аппаратном больше чем 255, то очередь в нем должна сдвинуться.. а правильно ли она это сделает?

    и не забывайте очищать программный буфер после вытаскивания из него значений... в выше приведенной строке при отсутствии новых символов содерживое массива BUFF_SERIAL меняться не будет!!! что похоже у вас и происходит... а по истечению какого-то времени порт ловит помеху и считывает ошибочный символ, которого вы не замечаете, но значение в буфере обновиться
    Последний раз редактировалось Дмитрий Артюховский; 10.12.2009 в 18:17.

  9. #9

    По умолчанию

    Цитата Сообщение от hilih Посмотреть сообщение
    Доброго времени ........
    готовый щит с ПЛК 100 и залитой в него программой, и быть уверенным, что его пряморукие программеры не зальют в остальные 49 шт. ПЛК 100 эту прошивку?
    .................................................. ..............................................
    Спасибо за внимание.
    какая глупость
    - это я вам скажу, как кустарь самоучка
    если есть кто-то с какими-то прямыми руками, то два варианта:
    1. сделать такой же ключик защиты - проше некуда. или Вы думаете, что ни кто не узнает "Ваш Уникальный обмен между плк-ключ", а после не подцепит PIC вместо вашей Atmeg-и?
    2. зная алгоритм работы, не наклепает "свою" аналогичную программу ...........

  10. #10

    По умолчанию

    Цитата Сообщение от k.i.v. Посмотреть сообщение
    ...
    2. зная алгоритм работы, не наклепает "свою" аналогичную программу ...........
    будет именно так, скажу я вам.

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

Ваши права

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