Ниже приведены основные факты, а в следующем посте мы разберем возможные атаки с целью более эффективного подавления FPV на базе этой прошивки.
1. Настройки радио
SF CR Пакетов/с Длина, байт
7 4/6 LI 200 8
8 4/6 LI 25 8
9 4/6 LI 50 8
10 4/8 LI 25 9
12 4/5 LI 20 9
12 4/8 LI 10 9
2. Частотные диапазоны
№ Имя Начало Конец Ширина
0 2.1_2.3 2120,0 2300,0 180,0
1 2.15_2.35 2150,4 2351,6 201,2
2 2.2_2.4 2200,4 2401,7 201,3
3 2.25_2.45 2250,4 2451,8 201,4
4 2.3_2.5 2300,4 2502,4 202,0
5 2.35_2.55 2350,4 2551,4 201,0
6 2.4_2.6 2400,4 2601,4 201,0
7 2.45_2.65 2450,4 2659,4 209,0
8 2.5_2.7 2500,4 2701,4 201,0
9 2.2_2.6_W 2200,4 2609,4 409,0Прошивка определяет 10 частотных диапазонов шириной от 180 и до 409 МГц. В каждом диапазон всего 4090 каналов. Расстояние между центрами каналов от 44 и до 100 кГц, то есть соседние каналы пересекаются по частоте.
3. Алгоритм генерации ППРЧ
Шестибайтный UID определяет начальное состояние и постоянное приращение генератора псевдослучайных чисел PCG-XSH-RR 64/32, выходы которого используются для формирования таблицы из 4090 каналов.
После начального заполнения таблицы и закрепления позиций канала синхронизации выполняются 4026 последовательных обменов: каждый незакреплённый элемент меняется местами с псевдослучайно выбранным незакреплённым элементом; диапазон выбора не сужается, поэтому это не классический алгоритм перемешивания Фишера-Йетса (Fisher–Yates, именно этот алгоритм используется в стандартном ELRS).
Номер канала сихронизации также определяется значением UID, и закрепляется в позициях 0, 64, 128, ..., 4032 - эти позиции не участвуют в обменах.
4. Пакет синхронизации (SYNC)
Пакет синхронизации не зашифрован: после демодуляции радиосигнала значения его полей доступны открыто. Формат пакета отличается от стандартного ExpressLRS 3.5.0 и 4.0: используются пакеты длиной 8 или 9 байт (8 или 13 в стандарте), указатель позиции в таблице ППРЧ расширен с 8 до 12 бит, а вместо непосредственно передаваемых значений байтов UID в стандарте здесь присутствуют два первых байта SHA-256 от UID.
Для контроля целостности используется CRC-14 - такая же, как и в стандарте для 8-байтовых пакетов, с начальным значением, зависящим от UID. В 9-байтном формате CRC также остается 14-битной, но охватывает дополнительный байт данных.
Указатель позиции в таблице ППРЧ, который передается в пакете синхронизации, позволяет переопределить следующий канал (при условии прохождении остальных проверок: CRC-14, SHA-256 от UID). То есть в отличие от MILELRS, где обработка sync пакетов просто отключена на стороне приемника, тут можно нарушить синхронизацию между FPV и пультом/НСУ, используя специально составленный пакет.
5. RC пакеты
RC пакеты также не шифруются и используют ту же CRC-14, начальные значения которой зависят от UID. Особенностью RC пакетов является то, что в расчет CRC дополнительно подмешивают младшие 6 бит протокольного счетчика (сам счетчик 8-битный и передается в SYNC пакете).
Продолжение (возможные практические атаки на Barvinok) - https://t.me/tishina_lab/34