Статистика
Время:
Зарегистрированных: 83732
Последним зарегистрирован: koceto
Рекорд посещаемости: 12585
Групп пользователей: 4
 Группы:
[Admin] [Cоучастник] [Автор] [Модератор]
 Сейчас на сайте
 Всего: 353
 Гостей: 324
 Анонимных: 2
 Пользователей: 27
 Зарегистрированные:
Werewolf saliery flatron vidocq 23rus bulat alexr171 Rikki maugly Mexico RA4FKV denic1 vitalik_b Aleks07111971 romeo22 IYS alikrost Z-RAY-Z m0d0 Andrey DiSlord Carwizard Dima_chen ilya-1m dim@ lock feliks
  Ответить Новая тема Новый опрос

> Nice-Flor-s, анализируем ролинг код
}{obit
Сообщение: # 704492   Sep 29 2016, 10:55 AM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




Если кто не в курсе, это динамический код компании Nice, применяемый в пультах дистанционного управления автоматикой ворот и шлагбаумов.
Информации по этой кодировке в открытом доступе мне найти не удалось, скорее всего из-за того, что профит с ее взлома никакой, а сложность высокая.
Пару лет назад мне обломилась халява в виде двух пультов этого типа, один пульт был тут же вскрыт, внутри обнаружился контроллер PIC16f526 подключенный по схеме:
CODE
pin  4 /MCLR - RC генератор импульса сброса
pin  5 (RC5) - удержание включения питания
pin  6 (RC4) - передатчик
pin  7 (RC3) - вход кнопки 1-го канала
pin  8 (RC2) - вход кнопки 2-го канала
pin  9 (RC1) - вход кнопки 3-го канала
pin 10 (RC0) - вход кнопки 4-го канала
pin 11 (AN2) - делитель напряжения питания

Был подключен осциллограф и срисована времянка.
После нажатия кнопки формируется импульс 25.2ms затем пауза 104.8ms и затем передается 5 или более кодовых посылок.
Кодовая посылка начинается с импульса 1.48ms и паузы 1.48ms затем 52 информационных бита и заканчивается импульсом 1.48ms, пауза между посылками 19ms.
Информационные биты кодируются (условно): 1 - импульс 980us пауза 480us, 0 - импульс 480us пауза 980us.
Первые четыре бита соответствуют нажатой кнопке 0001-кнопка 1, 0010-кнопка 2, 0011-нажаты обе кнопки.
Если держать кнопку нажатой, следующие четыре бита меняются так: 1100,1111,1110,1001,1000,1011,1010,0101,0100,0111,0110,0001,0000,0011,0010,1101 и далее по кругу.
Внимательно посмотрев на эту последовательность я заксорил каждый код на 1101 и получил 1,2,3,4,5,6,7,8,9,0 и далее по кругу - это счетчик повторов кода посылки.
Оставшиеся биты посылки не изменяются пока кнопка нажата, но в следующий раз они будут уже совсем другие.
Пробуем считать прошивку контроллера - читаются только первые 64 байта, как и ожидалось, стоит защита от чтения.
Дисассемблер показал переход в глубь защищенного от чтения кода и процедуру измерения напряжения на входе AN2 с усреднением результата (интересно...).
Немного позже было собрано устройство, захватывающее с радиоканала код нажатой кнопки и скидывающее его в лог, вот несколько строк того лога:
CODE
2-0010-1100-00101100111110001100010011100010000100011010-2
2-0010-1100-01010111011001100011010110010011011000001101-2
2-0010-1100-01100010000101100001000010100110010101011110-2
2-0010-1100-10110100111010100100011001110000100000110011-2
2-0010-1100-11101011001011001111011100100001110100100110-2
2-0010-1100-00011111111101011010001011010100001001111001-2
2-0010-1100-11100110101010000111000000100110110101010110-2
2-0010-1100-11000100100101010100011100000001111100100100-2
2-0010-1100-11111100100110101100010100110011110000000111-2
 2 - это стартовый и стоповый биты,
 тетрады кода кнопки и счетчика я выделил,
 так же убраны повторяющиеся коды с каждого нажатия.

На тот момент больше ничего понять не получилось и свободное время неожиданно закончилось, совсем закончилось.

Но, буквально на днях, мне снова попались старые записи и из любопытства я продолжил копаться в том логе.
И так разбиваем посылку на тетрады и нумеруем их по порядку, чтобы было понятнее.
CODE
-00---01---02---03---04---05---06---07---08---09---10---11---12-
0010-1100-0010-1100-1111-1000-1100-0100-1110-0010-0001-0001-1010
0010-1100-0101-0111-0110-0110-0011-0101-1001-0011-0110-0000-1101
0010-1100-0110-0010-0001-0110-0001-0000-1010-0110-0101-0101-1110

Интересно что операция XOR между тетрадами 02и08, 02и10, 02и12, 07и09, 09и11 одной посылки имеет одинаковый результат с аналогичными операциями в остальных посылках (очень интересно...).
Выводы делать пока не буду.
PMEmail Poster
Top
QASANDR
Сообщение: # 704493   Sep 29 2016, 11:23 AM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1758
Пользователь №: 39677
Регистрация: 25-November 08
Место жительства: Красноярск



уважаемый Хобит, вы схемку выложите пожалуйста


--------------------
Не смотреть телевизор очень легко - у нас его вообще нет. Беда в том, что постоянно приходится иметь дело с телезрителями. Они повсюду.
PM
Top
Ferrum-1827
Сообщение: # 704528   Sep 29 2016, 06:29 PM
Quote Post


Дедушка
**********

Группа: Автор
Сообщений: 12654
Пользователь №: 55667
Регистрация: 10-November 09
Место жительства: BY



Интересное начало...


--------------------
image
Правильно заданный вопрос - почти ответ
PMUsers Website
Top
P32L
Сообщение: # 704562   Sep 29 2016, 09:50 PM
Quote Post


Соучастник
****

Группа: Cоучастник
Сообщений: 773
Пользователь №: 104521
Регистрация: 4-January 14
Место жительства: RUS35,29



В тему...
Форматы CAME и NICE.

Отличаются друг от друга длительностями импульсов. Для реализации передатчиков используются микросхемы кодеров Holtek HT-12E – в этом случае в брелоках устанавливают микропереключатели, которыми задается номер брелока. Могут иметь одну или несколько кнопок – микросхема кодера позволяет реализовать от 1 до 4 кнопок. Встречались и в старых пейджерах, там выводы кнопок использовались для кодирования серийного номера. Длительности импульсов задаются резистором в обвязке кодера. Встречаются кодеры без наборного поля, серийный номер прошивается в микросхему производителем.

Кодовая посылка состоит из 12 бит. Перед началом кода идет пилотный период (состоящий из 36 интервалов низкого уровня) и стартовый импульс (состоящий из 1 интервала высокого уровня). Именно длительность стартового импульса указывает, какой временной интервал используется при формировании сигнала. После стартового бита начинается сама посылка, начало бита – с низкого уровня. После окончания последнего импульса кодовое слово повторяется, начиная с пилотного периода. При коротком нажатии на кнопку передаются 4 кодовых слова, при удержании кнопки посылки циклически повторяются (сериями по 4 кодовых слова).

Возможное количество кодовых комбинаций – 4096.

Длительности импульсов CAME:

Лог. «1» – 640мкс низкий уровень (два интервала), 320мкс высокий (один интервал)

Лог. «0» – 320мкс низкий уровень (один интервал), 640мкс высокий (два интервала).

Пилотный период – 11520мкс , стартовый импульс – 320 мкс.

Длительности импульсов NICE:

Лог. «1» – 1400мкс низкий уровень (два интервала), 700мкс высокий (один интервал)

Лог. «0» – 700мкс низкий уровень (один интервал), 1400мкс высокий (два интервала).

Пилотный период – 25200мкс , стартовый импульс – 700 мкс.

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

В данном формате сигналов существуют и 24-битные кодеры, которые отличаются от 12-битных принципом формирования логических нулей и единиц. Пример такого кодера – микросхемы серии Holtek HT-601х, отличающиеся количеством реализованных кнопок. По сути кодер реализует те же 12 бит кода, но каждый логический бит представляется в виде двух циклов импульсов. Кроме того, кодер подразумевает три вида логических битов – «единица», «ноль» и «свободный» («open»). Тип бита определяется замыканием соответствующего вывода микросхемы на минус или плюс питания, «свободные» биты реализуются, если вывод микросхемы остается неподключенным. ВременнЫе параметры передаваемых сигналов формируются по такому же принципу, как и в 12-битном кодере.

Формат PT-2240 (Princeton)

Кодеры этого формата состоят из 24 информационных битов, за которыми следует бит синхронизации, состоящий из одного интервала высокого уровня и 31 интервала низкого уровня. Длительность высокого уровня указывает временной интервал, который лежит в основе формируемого кода. ВременнЫе параметры задаются резистором в обвязке кодера. Код может содержать 2, 3, 4, 6 или 8 команд (кодов кнопок), в зависимости от типа микросхемы. Кодовое слово не имеет преамбулы, самый первый бит в посылке является информационным. Серийный номер кодера (биты адреса) программируются изготовителем.

Длительности импульсов:

Лог. «1» – 1350мкс высокий уровень (три интервала), 450мкс низкий (один интервал),

Лог. «0» – 450мкс высокий уровень (один интервал), 1350мкс низкий (три интервала).

Бит синхронизации – 450мкс высокий уровень, 13950мкс низкий.

Формат PT-2262 (Princeton)

Количество бит (24 цикла импульсов) и принцип формирования временнЫх интервалов аналогичен РТ-2240. Основное отлчие состоит в формировании информационных битов – для получения серийного номера (битов адреса) используются выводы микросхемы кодера. В зависимости от состояния вывода (подключен к плюсу питания, к минусу или оставлен неподключенным) бит может принимать значение 1, 0 или «плавающий» («floating bit»). Каждый информационный бит кодируется двумя циклами импульсов по тому же принципу, как и в 24-битных кодерах Holtek HT-601х. В зависимости от схемы подключения микросхемы кодера может быть реализовано от 0 (передача только битов адреса) до 6 кодов управления (кодов кнопок), соответственно количество битов адреса может быть от 12 до 6. Биты кодов управления не могут быть «плавающими». При нажатии кнопки брелока кодер формирует посылку, состоящую из 4 кодовых слов, при удержании кнопки брелока посылки из 4 слов циклически повторяются.

ВременнЫе параметры задаются резистором в обвязке кодера.

Длительности импульсов:

Лог. «1» – 1200мкс высокий, 400мкс низкий, 1200мкс высокий, 400мкс низкий

Лог. «0» – 400мкс высокий, 1200мкс низкий, 400мкс высокий, 1200мкс низкий

«Плавающий» – 400мкс высокий, 1200мкс низкий, 1200мкс высокий, 400мкс низкий

Бит синхронизации – 400мкс высокий уровень, 12400мкс низкий.

источник

Это сообщение отредактировал P32L - Sep 29 2016, 09:51 PM
PMEmail Poster
Top
}{obit
Сообщение: # 704591   Sep 30 2016, 12:20 PM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




Продолжим.
Посылок у меня в логе более 300 и все проверять вручную это совсем не вариант.
Поэтому я взял небольшую паузу, чтобы написать программку для автоматизации этого процесса.
А заодно и разные варианты декодирования посылки проверить.
Больше всего мне понравился такой:
CODE
Byte0 = Byte0 xor (Byte3 & 0x0F);
Byte4 = Byte4 xor (Byte3); // Id0?
Byte5 = Byte5 xor (Byte3); // Id1?

На байты я поделил посылку следующим образом:
CODE
--keys-rcnt--??--[----------hop-----------]-[-Pult-ID-16bit-]--
-------[?byte-0]-[byte-1]-[byte-2]-[byte-3]-[byte-4]-[byte-5]--  K-b0-b1-b2-b3-b4-b5  K-b0-b1-b2-b3-b4-b5
---00---01---02---03--04---05--06---07--08---09--10---11--12---  -------------------  -------------------
S-0010-1100-0010-11001111-10001100-01001110-00100001-00011010-s  2-C2-CF-8C-4E-21-1A  2-CC-CF-8C-4E-6F-54
S-0010-1100-0101-01110110-01100011-01011001-00110110-00001101-s  2-C5-76-63-59-36-0D  2-CC-76-63-59-6F-54
S-0010-1100-0110-00100001-01100001-00001010-01100101-01011110-s  2-C6-21-61-0A-65-5E  2-CC-21-61-0A-6F-54
S-0010-1100-1011-01001110-10100100-01100111-00001000-00110011-s  2-CB-4E-A4-67-08-33  2-CC-4E-A4-67-6F-54
S-0010-1100-1110-10110010-11101111-01110010-00011101-00100110-s  2-CE-B2-EF-72-1D-26  2-CC-B2-EF-72-6F-54
S-0010-1100-0001-11111111-01011010-00101101-01000010-01111001-s  2-C1-FF-5A-2D-42-79  2-CC-FF-5A-2D-6F-54

Вторая колонка - это посылка записанная в HEX формате, третья - посылка поле XOR'а.
В результате младшая тетрада байта 0, а также байты 4 и 5 получились одинаковые, во всех посылках.
Скорее всего, байты 4 и 5 содержат, спрятанный от нас, идентификатор пульта.
Что находится в младшей тетраде байта 0 - не знаю, но явно что то постоянное или очень редко изменяющееся.
Основная загадка это байты 1,2,3 - однозначно, здесь закодирован счетчик посылок, но явной системы я не вижу.
PMEmail Poster
Top
ivasi
Сообщение: # 704592   Sep 30 2016, 02:06 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 2041
Пользователь №: 26804
Регистрация: 2-December 07






--------------------
#define TRUE FALSE //счастливой отладки
Снимаю, порчу.
[/CODE]
PMEmail Poster
Top
ivasi
Сообщение: # 704594   Sep 30 2016, 02:13 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 2041
Пользователь №: 26804
Регистрация: 2-December 07






--------------------
#define TRUE FALSE //счастливой отладки
Снимаю, порчу.
[/CODE]
PMEmail Poster
Top
}{obit
Сообщение: # 765309   Jan 26 2018, 12:01 PM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




На фрикер клубе камрад stallion_x в своем блоге опубликовал статью с анализом протокола Flor-s.
Формат пакета Nice Flor-s: START-P0-P1-P2-P3-P4-P5-P6-P7-STOP
P0 (4-бита) - позиционный код кнопки - 1:0x1, 2:0x2, 3:0x4, 4:0x8;
P1 (4-бита) - номер повтора пакета, вычисляется по формуле:
P1 = 0xF ^ P0 ^ n; где n меняется от 1 до 15, затем 0, и далее по кругу.
кнопка 1: {0xF,0xC,0xD,0xA,0xB,0x8,0x9,0x6,0x7,0x4,0x5,0x2,0x3,0x0,0x1,0xE};
кнопка 2: {0xC,0xF,0xE,0x9,0x8,0xB,0xA,0x5,0x4,0x7,0x6,0x1,0x0,0x3,0x2,0xD};
кнопка 3: {0xA,0x9,0x8,0xF,0xE,0xD,0xC,0x3,0x2,0x1,0x0,0x7,0x6,0x5,0x4,0xB};
кнопка 4: {0x6,0x5,0x4,0x3,0x2,0x1,0x0,0xF,0xE,0xD,0xC,0xB,0xA,0x9,0x8,0x7};
P2 (4-бита) - часть серийного номера, P2 = (K ^ S3) & 0xF;
P3 (байт) - старшая часть зашифрованного индекса.
P4 (байт) - младшая часть зашифрованного индекса.
P5 (байт) - часть серийного номера, P5 = K ^ S2;
P6 (байт) - часть серийного номера, P6 = K ^ S1;
P7 (байт) - часть серийного номера, P7 = K ^ S0;
K (байт) - зависит от P3 и P4, K = Fk(P3, P4);
S3,S2,S1,S0 - серийный номер пульта 28 бит.

Функция Fk() нам не известна, значит подслушать с эфира настоящий серийный номер пульта не получится.
Подбирать серийный номер длиной 28 бит - не вариант, но мы можем получить с эфира часть номера...

Берем P1, P5, P6 и P7 из подслушанного пакета и вычисляем часть номера с потерей одного полного байта:
X3 = [P1 ^ P7] = [(K ^ S3) ^ (K ^ S0)] = S3 ^ S0;
X2 = [P5 ^ P7] = [(K ^ S2) ^ (K ^ S0)] = S2 ^ S0;
X1 = [P5 ^ P7] = [(K ^ S1) ^ (K ^ S0)] = S1 ^ S0;
Здесь мы пожертвовали S0 и теперь его придется подбирать, это всего 256 вариантов, уже вполне реально.

Допусти мы имеем некоторое количество правильных комбинаций P3n, P4n и Кn тогда мы можем собрать новый пакет для каждого значения S0:
P0 (4-бита) - позиционный код кнопки;
P1 (4-бита) - вычисляются по известной методике.
P2 (4-бита) = [Kn ^ S3] = [Kn ^ (S3 ^ S0) ^ S0] = (Kn ^ X3 ^ S0) & 0xF;
P3 (байт) = P3n;
P4 (байт) = P4n;
P5 (байт) = [Kn ^ S2] = [Kn ^ (S2 ^ S0) ^ S0] = Kn ^ X2 ^ S0;
P6 (байт) = [Kn ^ S1] = [Kn ^ (S1 ^ S0) ^ S0] = Kn ^ X1 ^ S0;
P7 (байт) = Kn ^ S0;

У меня есть чип, снятый из оригинального пульта, и решил я снять с него полное кольцо пакетов 65536 штук, по моим прикидкам можно справиться часов за 7, это только опрос.
А еще нужно сделать макет и написать прошивку...
PMEmail Poster
Top
}{obit
Сообщение: # 765753   Jan 30 2018, 10:12 AM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




Размерность индекса, действительно, оказалась 16 бит. Однако, полную таблицу снять не получилось.
Дойдя до максимального значения индекса, чип "заблокировался" и теперь передает только 12 последних команд.
Очевидные способы, типа закоротить тест-поинт, не позволяют обнулить индекс, если кто-то знает как это сделать - подскажите (в личку, если не для распространения).

Получается что дойдя до максимального индекса, каждый пульт начнет передавать только 12 последних команд.
И в случае перехвата они, с большой вероятностью, будут приниматься автоматикой как настоящие.
Последние 12 команд с моего чипа:
1-F-F-2D-54-83-EC-D7
1-F-F-DD-A6-23-4C-77
1-F-4-AF-BF-C8-A7-9C
1-F-6-6D-7E-EA-85-BE
1-F-1-CD-67-BD-D2-E9
1-F-0-E1-FE-6C-03-38
1-F-2-A2-FD-8E-E1-DA
1-F-4-27-DB-E8-87-BC
1-F-1-C9-50-AD-C2-F9
1-F-C-3A-2F-40-2F-14
1-F-C-45-B5-C0-AF-94
1-F-4-60-BA-68-07-3C
PMEmail Poster
Top
}{obit
Сообщение: # 765873   Jan 31 2018, 09:30 AM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




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

Запоминаем некоторое количество команд своего пульта.
Строим таблицу - последовательно сохраняем байты P3, P4 и P5 из каждой команды.
Принимаем команду с эфира и ищем пару байт P3, P4 в нашей таблице.
Если нашли - извлекаем серийный номер с помощью байта P5 из таблицы.
Теперь можно вычислять следующие команды.
Берем следующую ячейку таблицы и запаковываем найденный серийный номер с помощью байта P5.
Теперь байты P3, P4 и запакованный серийный номер дают нам, следующую за перехваченной, команду.

Успешность метода зависит от длины построенной таблицы.
Для создания аналога алгоритмического граба - таблица должна занимать 192кб в памяти контроллера или 256кб во внешнем флеше.
PMEmail Poster
Top
ArduinoS
Сообщение: # 767259   Feb 14 2018, 10:13 AM
Quote Post





Группа: Cоучастник
Сообщений: 5
Пользователь №: 123147
Регистрация: 14-February 18




Памяти дохрена надо и успех зависит от приема нескольких посылок ((
PM
Top
}{obit
Сообщение: # 777147   May 15 2018, 01:23 PM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




Напомню формат пакета Nice Flor-s: START-P0-P1-P2-P3-P4-P5-P6-P7-STOP
байты P3-P4 - зашифрованный индекс, байт P5 - часть серийного номера (P5 = K xor S2)
S2 - не меняется (для конкретного пульта), K - зависит от индекса.

Заметил еще одну закономерность, если сделать (P4 xor P5) на выходе получаем строго периодическую последовательность из 256 байт:
CODE
8C,CF,D2,84,03,81,8E,C5,DB,CD,C8,CC,C8,CD,25,6C,C3,9F,69,22,4A,87,35,27,24,C2,D2,13,73,9D,0F,6D,
CC,27,3A,EB,E4,49,EE,A5,33,55,50,6C,50,6D,5D,14,63,B7,11,BA,9A,1F,AD,5F,BC,4A,B2,53,33,FD,4F,E5,
AC,9F,82,DB,5C,E9,56,95,8B,8D,88,8C,88,8D,D5,0C,83,6F,11,D2,32,C7,C5,F7,D4,C2,3A,6B,C3,9D,77,85,
24,FF,E2,BB,B4,01,BE,7D,EB,2D,28,14,28,15,3D,E4,1B,F7,C1,FA,4A,EF,ED,27,FC,A2,B2,E3,4B,15,FF,E5,
AC,3F,22,F3,E4,49,EE,0D,2B,A5,A0,14,A0,15,4D,E4,1B,A7,01,3A,1A,D7,2D,1F,3C,E2,AA,FB,53,0D,E7,85,
B4,D7,CA,1B,2C,29,26,C5,C3,DD,D8,FC,D8,FD,D5,7C,F3,DF,29,EA,82,07,FD,37,EC,A2,22,73,DB,85,6F,C5,
3C,57,4A,BB,AC,19,A6,65,43,55,50,E4,50,E5,0D,9C,EB,77,41,EA,5A,AF,FD,EF,EC,52,D2,13,53,BD,0F,FD,
CC,9F,82,73,44,F1,4E,8D,8B,BD,B8,9C,B8,9D,AD,3C,93,A7,D9,92,72,D7,85,77,94,DA,92,73,33,FD,6F,75,

В эту таблицу подмешан S2 моего чипа, который я не знаю, поэтому выпилить его не получится.
Некоторые коды здесь повторяются несколько раз, а другие отсутствуют совсем.
Поэтому на роль таблицы перестановок для функции шифрования она не подходит, а вот как зависимость К от индекса - самое то.

Пример для последних 12 команд моего чипа, это самый конец таблицы:
CODE
54 xor 83 = D7
A6 xor 23 = 85
BF xor C8 = 77
7E xor EA = 94
67 xor BD = DA
FE xor 6C = 92
FD xor 8E = 73
DB xor E8 = 33
50 xor AD = FD
2F xor 40 = 6F
B5 xor C0 = 75

и только последняя команда выбивается из общего ряда:
CODE
BA xor 68 = D2

скорее всего она соответствует индексу 0 или 2, чтобы сбросить индекс сохраненный в приемнике.

В полученной таблице всего 141 уникальный код, а это значит что количество попыток, в атаке с подбором, можно сократить с 256 до 141.
PMEmail Poster
Top
}{obit
Сообщение: # 778796   Jun 4 2018, 10:31 AM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




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

Рассмотрим ситуацию, когда хозяин пульта открывает ворота, заезжает и закрывает за собой ворота.
В этом случае мы приняли две команды и мы знаем, что индекс у этих команд отличается на 1.
Берем из нашей таблицы два последовательных кода, с их помощью извлекаем из команд серийные номера и сравниваем между собой.
Если номера совпадают - запоминаем, если нет - пропускаем. Проверяем таким образом все 256 вариантов парных кодов.
Результат зависит от зашифрованного в командах индекса, всего комбинаций команд также 256.
Из них 19 дают на выходе 1 серийный номер, остальные - от 2 до 12 серийных номеров.
Таким образом перехватив и обработав 2 последовательные команды, количество попыток при подборе серийного номера можно сократить до 12.

Но и это еще не все, можно рассмотреть случай перехвата 3 и более последовательных команд.
Правда, для этого нужно будет ставить помеху, чтобы вынудить хозяина повторно нажать кнопку пульта.
Помеху лучше всего ставить на 1-2 бита в байте P3, но так чтобы собственный приемник успешно принял P4 и всю оставшуюся часть команды.
3 команды: 188 комбинаций дают 1 серийный номер, остальные - 2 или 4 серийных номера.
4 команды: 228 комбинаций дают 1 серийный номер, остальные - 2 или 4 серийных номера.
5 команды: 244 комбинаций дают 1 серийный номер, остальные - 2 или 4 серийных номера.
6 команд: в любом случае получаем 1 серийный номер.

Вот такая "надежная" защита оказалась у протокола Nice Flor-s.
PMEmail Poster
Top
Pavel1948
Сообщение: # 780948   Jun 26 2018, 11:49 AM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 109546
Регистрация: 2-February 15




Ребят я не знаю насколько это верно но на cybergho.st виде прошивку которая открывает в том числе и nice flor s под брелок zx940. Там есть разные какие-то 45 кбб 33 кб. Я решил взять 7 кб и дизассемблерить. Собственно пока с помощью отладчика mplab x я гонял по программе и примерно нашел кусок кода готорый зацикливается (ожидает нажатия 1 из 4 кнопок которые как я определил по дизассемблеру висят на портах d 5,6,7,4). Кто хочет помочь мне дизассемблерить эту прошивку и могу ли я ее скинуть? (мой аваст вирусов не обнаружил). Будет даже хорошо проверить в самом брелке, но у меня его нет.
PMEmail Poster
Top
Pavel1948
Сообщение: # 781888   Jul 6 2018, 05:40 PM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 109546
Регистрация: 2-February 15




Кто нить пробовал словить шесть посылок и декодировать серийник и счетчик?
PMEmail Poster
Top
Mvd2
Сообщение: # 850216   May 10 2020, 09:34 AM
Quote Post





Группа: Cоучастник
Сообщений: 5
Пользователь №: 130078
Регистрация: 10-May 20




QUOTE (Pavel1948 @ Jul 6 2018, 05:40 PM)
Кто нить пробовал словить шесть посылок и декодировать серийник и счетчик?

Пробовал словить и больше посылок, только не понятно как вычислить счетчик и коэффициенты для получения серийного номера. S/n известен, более того уже даже открывашку
сделал. Осталось только s/n из эфира вычисоить. Есть приблуда, которая его из 3х посылок
вычисляет, но это не Наш метод. Может у кого есть содержимое eprom приемника с известным sn, поделитесь.

Это сообщение отредактировал Mvd2 - May 10 2020, 09:35 AM
PMEmail Poster
Top
23rus
Сообщение: # 850244   May 10 2020, 02:43 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 2384
Пользователь №: 108178
Регистрация: 1-November 14




QUOTE (Mvd2 @ May 10 2020, 09:34 AM)
QUOTE (Pavel1948 @ Jul 6 2018, 05:40 PM)
Кто нить пробовал словить шесть посылок и декодировать серийник и счетчик?

Пробовал словить и больше посылок, только не понятно как вычислить счетчик и коэффициенты для получения серийного номера. S/n известен, более того уже даже открывашку
сделал. Осталось только s/n из эфира вычисоить. Есть приблуда, которая его из 3х посылок
вычисляет, но это не Наш метод. Может у кого есть содержимое eprom приемника с известным sn, поделитесь.

Сейчас делаю граб как раз только на шлагбаумны
(( зае**али эти шлаги))
Вся статика есть + есть шлаги с keeloq ( есть. с мануфаками )

В проекте остался один FLOR S ...вон он , снятый c моих ворот лежит в тумбочке: приемник с флешкой (она вставляется в приемнике) + 2 пульта.
Щас закончу в проекте сохранение в EEPROM и займусь FLORом..
Погляжу скока еще в камне места останется ....
Если интересно буду оповещать _

Сразу хочу предупредить что важен еще не только сам протокол в статике НО и интервалы
посылок, которые нужно проанализировать и сохранить на выброс к каждому конкретному шлагу..
Эти "Грабли" уже проверены __ wink.gif

Это сообщение отредактировал 23rus - May 10 2020, 02:45 PM
PMEmail Poster
Top
Mvd2
Сообщение: # 850314   May 11 2020, 01:45 PM
Quote Post





Группа: Cоучастник
Сообщений: 5
Пользователь №: 130078
Регистрация: 10-May 20




таблица соответствия коэффициента ki есть у кого-нибудь, можете поделиться ?
PMEmail Poster
Top
Mvd2
Сообщение: # 850562   May 13 2020, 02:55 AM
Quote Post





Группа: Cоучастник
Сообщений: 5
Пользователь №: 130078
Регистрация: 10-May 20




QUOTE (Mvd2 @ May 11 2020, 01:45 PM)
таблица соответствия коэффициента ki есть у кого-нибудь, можете поделиться ?

Составляю свою таблицу, уже с 10 пакета расшифровываю.
PMEmail Poster
Top
Nikitos210
Сообщение: # 862325   Sep 25 2020, 02:06 PM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




нашел в продаже вот такой дубликатор, в т.ч. и динамичного нашего кода
и заказал его
https://aliexpress.ru/item/32621470571.html...5311.1576838789

я предполагаю, что если ему дать одну из первых(по счётчику) посылку

то он запомнит пульт и воспроизведет все 65536 посылок, потом его можно будет повторно перепрограммировать этой же первой посылкой (само собой выплескиваем в эфир её ардуиной или на чем сделали на fs1000a)
чтобы не запарывать основной пульт переполнением счётчика

так же могу поделится 1000 посылками счетчика с серийником в подряд, больше пока не делал

если кто то со мной поделится аналогично таблицой против не буду. пишите в ЛС
PMEmail Poster
Top
Nikitos210
Сообщение: # 862773   Sep 29 2020, 10:43 AM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




QUOTE (}{obit @ May 15 2018, 01:23 PM)
Напомню формат пакета Nice Flor-s: START-P0-P1-P2-P3-P4-P5-P6-P7-STOP
байты P3-P4 - зашифрованный индекс, байт P5 - часть серийного номера (P5 = K xor S2)
S2 - не меняется (для конкретного пульта), K - зависит от индекса.

Заметил еще одну закономерность, если сделать (P4 xor P5) на выходе получаем строго периодическую последовательность из 256 байт:
CODE
8C,CF,D2,84,03,81,8E,C5,DB,CD,C8,CC,C8,CD,25,6C,C3,9F,69,22,4A,87,35,27,24,C2,D2,13,73,9D,0F,6D,
CC,27,3A,EB,E4,49,EE,A5,33,55,50,6C,50,6D,5D,14,63,B7,11,BA,9A,1F,AD,5F,BC,4A,B2,53,33,FD,4F,E5,
AC,9F,82,DB,5C,E9,56,95,8B,8D,88,8C,88,8D,D5,0C,83,6F,11,D2,32,C7,C5,F7,D4,C2,3A,6B,C3,9D,77,85,
24,FF,E2,BB,B4,01,BE,7D,EB,2D,28,14,28,15,3D,E4,1B,F7,C1,FA,4A,EF,ED,27,FC,A2,B2,E3,4B,15,FF,E5,
AC,3F,22,F3,E4,49,EE,0D,2B,A5,A0,14,A0,15,4D,E4,1B,A7,01,3A,1A,D7,2D,1F,3C,E2,AA,FB,53,0D,E7,85,
B4,D7,CA,1B,2C,29,26,C5,C3,DD,D8,FC,D8,FD,D5,7C,F3,DF,29,EA,82,07,FD,37,EC,A2,22,73,DB,85,6F,C5,
3C,57,4A,BB,AC,19,A6,65,43,55,50,E4,50,E5,0D,9C,EB,77,41,EA,5A,AF,FD,EF,EC,52,D2,13,53,BD,0F,FD,
CC,9F,82,73,44,F1,4E,8D,8B,BD,B8,9C,B8,9D,AD,3C,93,A7,D9,92,72,D7,85,77,94,DA,92,73,33,FD,6F,75,

В эту таблицу подмешан S2 моего чипа, который я не знаю, поэтому выпилить его не получится.

В Вашей таблице перепутан местами 4 и 5 байт 84,03
QUOTE
В эту таблицу подмешан S2 моего чипа, который я не знаю
- EE там подмешан

таблица XOR EE
CODE

8C,CF,D2,03,84,81,8E,C5,DB,CD,C8,CC,C8,CD,25,6C,
C3,9F,69,22,4A,87,35,27,24,C2,D2,13,73,9D,0F,6D,
CC,27,3A,EB,E4,49,EE,A5,33,55,50,6C,50,6D,5D,14,
63,B7,11,BA,9A,1F,AD,5F,BC,4A,B2,53,33,FD,4F,E5,
AC,9F,82,DB,5C,E9,56,95,8B,8D,88,8C,88,8D,D5,0C,
83,6F,11,D2,32,C7,C5,F7,D4,C2,3A,6B,C3,9D,77,85,
24,FF,E2,BB,B4,01,BE,7D,EB,2D,28,14,28,15,3D,E4,
1B,F7,C1,FA,4A,EF,ED,27,FC,A2,B2,E3,4B,15,FF,E5,
AC,3F,22,F3,E4,49,EE,0D,2B,A5,A0,14,A0,15,4D,E4,
1B,A7,01,3A,1A,D7,2D,1F,3C,E2,AA,FB,53,0D,E7,85,
B4,D7,CA,1B,2C,29,26,C5,C3,DD,D8,FC,D8,FD,D5,7C,
F3,DF,29,EA,82,07,FD,37,EC,A2,22,73,DB,85,6F,C5,
3C,57,4A,BB,AC,19,A6,65,43,55,50,E4,50,E5,0D,9C,
EB,77,41,EA,5A,AF,FD,EF,EC,52,D2,13,53,BD,0F,FD,
CC,9F,82,73,44,F1,4E,8D,8B,BD,B8,9C,B8,9D,AD,3C,
93,A7,D9,92,72,D7,85,77,94,DA,92,73,33,FD,6F,75,


Вот голая таблица, без примеси
CODE

62,21,3C,ED,6A,6F,60,2B,35,23,26,22,26,23,CB,82,
2D,71,87,CC,A4,69,DB,C9,CA,2C,3C,FD,9D,73,E1,83,
22,C9,D4,05,0A,A7,00,4B,DD,BB,BE,82,BE,83,B3,FA,
8D,59,FF,54,74,F1,43,B1,52,A4,5C,BD,DD,13,A1,0B,
42,71,6C,35,B2,07,B8,7B,65,63,66,62,66,63,3B,E2,
6D,81,FF,3C,DC,29,2B,19,3A,2C,D4,85,2D,73,99,6B,
CA,11,0C,55,5A,EF,50,93,05,C3,C6,FA,C6,FB,D3,0A,
F5,19,2F,14,A4,01,03,C9,12,4C,5C,0D,A5,FB,11,0B,
42,D1,CC,1D,0A,A7,00,E3,C5,4B,4E,FA,4E,FB,A3,0A,
F5,49,EF,D4,F4,39,C3,F1,D2,0C,44,15,BD,E3,09,6B,
5A,39,24,F5,C2,C7,C8,2B,2D,33,36,12,36,13,3B,92,
1D,31,C7,04,6C,E9,13,D9,02,4C,CC,9D,35,6B,81,2B,
D2,B9,A4,55,42,F7,48,8B,AD,BB,BE,0A,BE,0B,E3,72,
05,99,AF,04,B4,41,13,01,02,BC,3C,FD,BD,53,E1,13,
22,71,6C,9D,AA,1F,A0,63,65,53,56,72,56,73,43,D2,
7D,49,37,7C,9C,39,6B,99,7A,34,7C,9D,DD,13,81,9B,
PMEmail Poster
Top
Nikitos210
Сообщение: # 863037   Oct 1 2020, 03:15 PM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




насчёт 256 кбайт памяти для сохранения всех кодов пульта.

т. к. младший байт счётчика цикличный, сохранять его не нужно.
только 256 байт таблицы, далее серийник 4 байта
старший байт счетчика 65536 значений и K 65536 значений.
Получается уже 129кб + 4 байта, но всё равно это много.
т. к. в pic16f526 НЕТУ столько памяти, там 1024 асм строчки.
операции там от силы битовые
алгоритм должен быть простым.
Делать открывашку с Фокусом переполнением счётчика не вариант.
а значит нужно понять как он работает, из 2048 мной изученных посылок
старший байт совместно с младшим^ K не повторяется ни разу.
нужно больше посылок, который у меня пока нет.
PMEmail Poster
Top
Nikitos210
Сообщение: # 863479   Oct 6 2020, 04:32 PM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




снял все 65536 посылок, но счётчик обнулился и заново пошел
причём повторяет первые посылки
так что на моём пульте нет никакой защиты от переполнения счётчика.

может быть у Вас EEPROM сдох

Это сообщение отредактировал Nikitos210 - Oct 6 2020, 04:44 PM
PMEmail Poster
Top
Nikitos210
Сообщение: # 863547   Oct 7 2020, 03:46 PM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




проанализировал посылки

начальный индекс 0 а не 1 !

после 65535
выдаётся 65536 посылка причём с 256ым индексом 3C
потом счетчик стартует не с 0 а с 3 индекса и до 255 потом с 0 и так далее
на 256 раз появляется 256 индекс

Это сообщение отредактировал Nikitos210 - Oct 7 2020, 03:48 PM
PMEmail Poster
Top
}{obit
Сообщение: # 863575   Oct 7 2020, 08:52 PM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




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

Запилил утилиту анализа посылок на основе полной таблицы индексов, может поможет в анализе посылок. Использовать только для изучения протокола!!!

Присоединённый файл ( Кол-во скачиваний: 36 )
Присоединённый файл  NiceFlors.zip
PMEmail Poster
Top
Nikitos210
Сообщение: # 863695   Oct 9 2020, 08:53 AM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




Наверно у Вас был оригинальный пульт где переполнился счётчик

мыслим так: 2 байта это 0..65535
65536 это 3 байта. их там нет
соответственно нулевой индекс это 256ой лишний табличный индекс
1ый и 2ой индекс зарезервировали разработчики
поэтому счётчик у меня стартует с индекса 3, потом до 65535

соответственно предположим, что шлагбаум будет видеть N следующих посылок
например 10 или 100
соответственно когда мы достигли 0го значения, шлагбаум откроется на 3..3+N посылку
а в начале статьи даётся по кругу 0,65524,65525 ... 65535 посылки
это не прокатит
шифросчётчик с индексами 1 и 2
соответсвенно
DFAB
D803
у меня не встретились, все остальные комбинации пульт отдал
Ваша прога выдаёт на них
1-F-6-DF-AB-CC-DD-22 #F0514EB Index: 65535
1-F-2-D8-03-68-79-86 #4A5BA4 Index: 0

нумерация индекса это наша придумка, можно как угодно считать

за Вашу прогу отдельное спасибо.

а Алго то удалось разгадать или по табличке?

Это сообщение отредактировал Nikitos210 - Oct 9 2020, 08:57 AM
PMEmail Poster
Top
Nikitos210
Сообщение: # 863707   Oct 9 2020, 10:53 AM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




месяц назад бы её
прогу, лучше уберите её из паблика
PMEmail Poster
Top
Nikitos210
Сообщение: # 863751   Oct 9 2020, 03:26 PM
Quote Post





Группа: Cоучастник
Сообщений: 8
Пользователь №: 130909
Регистрация: 22-September 20




с индексом разобрался, там всё просто
посылок с индексом 0 и 1 нету
[0]:1 F S DFAB S2S1S0 Tc:40 Ix:000 Reserved Not used
[1]:1 F S D803 S2S1S0 Tc:A7 Ix:001 Reserved Not used
и шифросчётчиков тоже нету таких.

стартует с (я её считал 65536 ) со второй
1 F S 60BA S2S1S0 Tc=3C Ix:002 Start.
и до 65535. потом снова со второй.

Это сообщение отредактировал Nikitos210 - Oct 9 2020, 03:27 PM
PMEmail Poster
Top
}{obit
Сообщение: # 863899   Oct 11 2020, 08:35 PM
Quote Post





Группа: Cоучастник
Сообщений: 9
Пользователь №: 108245
Регистрация: 6-November 14




Алгоритм, анализируя только посылки пульта не разгадать, поэтому таблица.
Индексы, это не наша придумка, это так в оригинале.
D803 - индекс 0, видимо действительно зарезервирован
DFAB - индекс 65535 или 0xFFFF, что соответствует незаписанной флеш, поэтому не использкется.
PMEmail Poster
Top

Настройки темы Ответить Шустрый ответ Новая тема Новый опрос


 




    РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум   banner DIPTRACE - САМЫЙ ЛУЧШИЙ ТАКСИРОВЩИК ПЕЧАТНЫХ ПЛАТ
Portal-X