![]() |
![]() |
|||||||||||||||
Анализ работы счетчика СЕ101
Автор: Panda_Y2K Что то стало скучновато, и решил тоже отметиться на конкурсе. :) На этот раз проанализируем работу счетчика электрической энергии эне*****ра СЕ***101 на предмет уязвимости от постороннего вмешательства. Сразу скажу, что статья предназначена исключительно для образовательных целей, а работникам соответствующих служб может оказать помощь в отлове так сказать мошенников :). Пациент Итак приступим. Указанный выше счетчик - собран на никому неизвестной (кроме разработчиков) микросхеме, о которой соответственно в нете ничего нет, но это нас не должно останавливать на пути познания :). Исследуя работу устройства путем подключения к нему нагрузки 1-3КВт узнаем, что микросхема на своей 22й ноге мигает светодиодом (который выведен на лицевую панель) и еще один в оптопаре передает сигнал на специально выведенные клеммы для снятия показаний электриками (каким-то своим прибором). Каждые 16 миганий внутри этой адской микросхемы что то срабатывает и она переключает счетный механизм на одно положение. схема устройства Механизм считает только в одну сторону соответственно, так, что скрутить показания без его разбора не получится. Вращает механизм устройство (что то вроде бифазного шагового двигателя). У него два вывода, если на один подать +5, на другой 0, механизм шагнет на шаг вперед, чтобы шагнуть еще на шаг, напряжения (выводы) необходимо поменять местами. Итак нарисовалась схема. Управление мы берем на себя, использовать будем контроллер ATTINY13. Схема доработки Отсоединяем вывод 22 микросхемы от резистора R26 и подключаем к выводу 7 контроллера, резистор R26 подключаем к выводу 5 контроллера. Далее перезаем две дорожки идущие к счетному механизму и соединяем ноги 2 и 3 контроллера с управлением счетным механизмом. Общий провод не сложно найти, питание всей схемы осуществляется от встроенного стабилизатора 78l05.
Вот такая простенькая программа зашивается в контроллер: #include <TINY13.H> #define INPUT PINB.2 unsigned int code; //********************************************************************************** if (code == 0x0209) k_div = 254; //Save 50% energy GIFR = 0x40; interrupt [TIM0_OVF] void timer0_interrupt_subroutine(void) // Declare your global variables here void main(void) // Input/Output Ports initialization // Timer/Counter 0 initialization // External Interrupt(s) initialization // Timer(s)/Counter(s) Interrupt(s) initialization // Global enable interrupts if (fr != INPUT) fr = INPUT;
Программа считает количество импульсов пришедших с выв. микросхемы счетчика и в зависимости от установок управляет счетным механизмом. Установка производится ИК пультом стандарта RC5. Жирненьким в тексте программы выделены коды на пульте для установки режима энергосбережения. Соответственно код 29 - учитывается 50% импульсов, код 35 - учитывается 25% имульсов, код 42 - учитывается 12.5% импульсов и код 57 - учитываются все импульсы, точно так как без устройства. При включении устройство находится именно в этом режиме, соответственно если перезагрузить контроллер (выключить и включить автоматы), то устройство будет учитывать все импульсы. Для уменьшения показаний есть еще одна уязвимость - это кварцевый резонатор. Его можно поставить на более низкую частоту, но этот аспект работы счетчика не проверялся. PS Не рекомендуется к практическому использованию. Желаю всем за электроэнергию платить честно, что и сам делаю. Это все...
Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |