Какой самый эффективный метод определения 16-битной контрольной суммы? [CRC Hell:-(]
В настоящее время я участвую в исследовательском проекте, связанном с прослушиванием и модификацией радиопакетов, и, к сожалению, я наткнулся на немного математической кирпичной стены.:-/
Рассматриваемые пакеты имеют 16-битную преамбулу из всех 1, за которой следует двоичный 0, за которым следуют 32 бита различных данных, за которыми следует 16-битная контрольная сумма некоторого вида, что составляет в общей сложности 65 битов на каждый радиопакет.
Я собрал несколько сотен образцов данных с помощью логического анализатора, в основном, заставляя передающее устройство сообщать о различных состояниях, и я собрал данные в Excel.
Аппаратные средства, используемые для передачи, довольно старые, примерно в начале 90-х, так что я не ожидаю ничего необычного. Сначала я просто думал, что попытаюсь понять это вручную, но мне не повезло. Подумав, что я все выяснил, используя пару XOR, OR и XAND, я понял, что моя "формула" с треском провалилась на других передатчиках с другими серийными номерами (первые 16 бит данных).
Поскольку он всего 16 бит, и я подумал, что он настолько старый, я подумал, что это может быть простой CRC, но мне еще предстоит найти формулировку, которая дает даже отдаленно правильные результаты.
Я даже нашел еще одно сообщение о Stackru от нескольких лет назад от кого-то с похожей проблемой, но ни одно из решений, которые я прочесал, похоже, не помогло.
Конечная цель состоит в том, чтобы иметь возможность создавать передачи для произвольных серийных номеров, не имея доступа к реальному физическому передатчику.
Мысли? Комментарии?
1 ответ
Вы достигли какого-либо прогресса?
Несколько полезных ссылок:
- Каталог CRC на bbcmicro.net.
- В Pycrc уже реализовано много вычислений CRC.
- CRC модели для pycrc.
- Википедия " Обычно используемые и стандартизированные_CRC"
- Полиномиальный Искатель Грубой Силы
- Параметры грубого принуждения CRC