From 680433820190cca9441042cb835fb0d229f674a3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 14 Nov 2016 21:41:18 +0100 Subject: [PATCH] FIX: 'LF PYRAMID' the crc8_MAXIM and crc16_DNP was calling the wrong crc method. (update2 is the older and correct version). This solves the pyrmid issue with wrong checksums calculated. Thanks to @rookieatall @marshmellow42 for pointing out the bug. ref: http://www.proxmark.org/forum/viewtopic.php?id=4006 --- common/crc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/crc.c b/common/crc.c index 47e21426..f9a15234 100644 --- a/common/crc.c +++ b/common/crc.c @@ -68,7 +68,6 @@ void crc_update(crc_t *crc, uint32_t data, int data_width) } } - uint32_t crc_finish(crc_t *crc) { uint32_t val = crc->state; if (crc->refout) val = reflect(val, crc->order); @@ -96,7 +95,7 @@ uint32_t CRC8Maxim(uint8_t *buff, size_t size) { crc_t crc; crc_init_ref(&crc, 8, 0x31, 0, 0, TRUE, TRUE); for ( int i=0; i < size; ++i) - crc_update(&crc, buff[i], 8); + crc_update2(&crc, buff[i], 8); return crc_finish(&crc); } @@ -139,7 +138,7 @@ uint32_t CRC16_DNP(uint8_t *buff, size_t size) { crc_t crc; crc_init_ref(&crc, 16, 0x3d65, 0, 0xffff, TRUE, TRUE); for ( int i=0; i < size; ++i) - crc_update(&crc, buff[i], 8); + crc_update2(&crc, buff[i], 8); return BSWAP_16(crc_finish(&crc)); } -- 2.39.2