Какой самый эффективный метод определения 16-битной контрольной суммы? [CRC Hell:-(]

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

Рассматриваемые пакеты имеют 16-битную преамбулу из всех 1, за которой следует двоичный 0, за которым следуют 32 бита различных данных, за которыми следует 16-битная контрольная сумма некоторого вида, что составляет в общей сложности 65 битов на каждый радиопакет.

Я собрал несколько сотен образцов данных с помощью логического анализатора, в основном, заставляя передающее устройство сообщать о различных состояниях, и я собрал данные в Excel.

Аппаратные средства, используемые для передачи, довольно старые, примерно в начале 90-х, так что я не ожидаю ничего необычного. Сначала я просто думал, что попытаюсь понять это вручную, но мне не повезло. Подумав, что я все выяснил, используя пару XOR, OR и XAND, я понял, что моя "формула" с треском провалилась на других передатчиках с другими серийными номерами (первые 16 бит данных).

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

Я даже нашел еще одно сообщение о Stackru от нескольких лет назад от кого-то с похожей проблемой, но ни одно из решений, которые я прочесал, похоже, не помогло.

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

Мысли? Комментарии?

1 ответ

Вы достигли какого-либо прогресса?

Несколько полезных ссылок:

  1. Каталог CRC на bbcmicro.net.
  2. В Pycrc уже реализовано много вычислений CRC.
  3. CRC модели для pycrc.
  4. Википедия " Обычно используемые и стандартизированные_CRC"
  5. Полиномиальный Искатель Грубой Силы
  6. Параметры грубого принуждения CRC
Другие вопросы по тегам