From 98af9ddf8ca969ce45b3e6078cb8f39573a99ee9 Mon Sep 17 00:00:00 2001 From: "adam@algroup.co.uk" Date: Sat, 5 Sep 2009 13:10:17 +0000 Subject: [PATCH] fix wrong terminology - LRC/CRC and calulate result instead of matching (thanks Henryk!) --- tools/xorcheck.py | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/tools/xorcheck.py b/tools/xorcheck.py index 9cbc7a1e..37aa27ce 100755 --- a/tools/xorcheck.py +++ b/tools/xorcheck.py @@ -1,6 +1,6 @@ #!/usr/bin/python -# xorcheck.py - find xor values for 8-bit CRC +# xorcheck.py - find xor values for 8-bit LRC # # Adam Laurie # http://rfidiot.org/ @@ -25,12 +25,12 @@ import os if(len(sys.argv) < 3): print - print '\t'+sys.argv[0] + ' - Generate final byte for XOR CRC' + print '\t'+sys.argv[0] + ' - Generate final byte for XOR LRC' print - print 'Usage: ' + sys.argv[0] + ' ... ' + print 'Usage: ' + sys.argv[0] + ' ... ' print - print '\tSpecifying the bytes of a UID with a known CRC will find the last byte value' - print '\tneeded to generate that CRC with a rolling XOR. All bytes should be specified in HEX.' + print '\tSpecifying the bytes of a UID with a known LRC will find the last byte value' + print '\tneeded to generate that LRC with a rolling XOR. All bytes should be specified in HEX.' print print 'Example:' print @@ -38,19 +38,15 @@ if(len(sys.argv) < 3): print print 'Should produce the output:' print - print '\tTarget (BA) matched with final byte value: 5A' + print '\tTarget (BA) matched with final LRC XOR byte value: 5A' print os._exit(True) target= int(sys.argv[len(sys.argv) - 1],16) -for candidate in range(256): - crc= 0x00 - for i in range(len(sys.argv) - 2): - crc ^= int(sys.argv[i + 1],16) - crc ^= candidate - if (crc == target): - print - print 'Target (%02X) matched with final byte value: %02X' % (target,candidate) - print - +lrc= 0x00 +for i in range(len(sys.argv) - 1): + lrc ^= int(sys.argv[i + 1],16) +print +print 'Target (%02X) requires final LRC XOR byte value: %02X' % (target,lrc) +print -- 2.39.2