Что значит дилетанский? Это правильный вариант, а дилетанским можно назвать
подход программистов Метакома, которые допустили такую ошибку.
Что касается неправильной работы, то это легко объяснить:
возьмём для примера случай, когда контрольная сумма не хранится в памяти
и не проверяется, а в памяти хранится просто 4 байта номера ключа.
Мы просто замыкаем считыватель. Контроллер домофона считает, что есть
сигнал присутствия ключа, подаёт команду 33h и считывает 64 бита номера
ключа. То есть считает все нули.
Всегда есть возможность, что в пустых ячейках памяти будут тоже нули,
программа тупо проверит считанных 4 байта и даст команду на открытие.
Такой же вариант с "универсальным" ключом FF.
Если ключ записан полностью, то в младшем байте будет записан код семейства,
а в старшем контрольная сумма всех семи младших байтов (CRC
.
При этом очень мала вероятность, что в нужных ячейках окажется правильная
контрольная сумма и правильный код семейства.
В нашем случае код ключа, состоящий из всех нулей не будет принят и
"универсальный" ключ с FF тоже не сработает.
Если же добавить ещё байт признака ключа, как это сделано в Z5R, то работа будет
ещё надёжней и мы сможем отличать простые ключи, блокировочные, ключи охраны, мастер ключи и т.п.