[ Home ]
CRC RevEng: arbitrary-precision CRC calculator and algorithm finder
Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018,
2019, 2020, 2021, 2022, 2024 Gregory Cook
This file is part of CRC RevEng.
CRC RevEng is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
CRC RevEng is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with CRC RevEng. If not, see <https://www.gnu.org/licenses/>.
3.0.6 7 August 2024
- Added algorithm
CRC-64/NVME
from the CRC Catalogue (thanks
to Don MacAskill).
3.0.5 27 August 2022
- Added alias
CRC-16/BLUETOOTH
from the CRC Catalogue.
3.0.4 24 August 2022
- Added algorithm
CRC-64/REDIS
from the CRC Catalogue (thanks
to Johann N. Löfflmann).
3.0.3 8 May 2022
- Added algorithm
CRC-16/M17
from the CRC Catalogue (thanks to
Mark Adler).
3.0.2 12 January 2022
- Reading a file which exceeds the size limit of polynomials
causes an error.
3.0.1 11 January 2022
- Added algorithms
CRC-32/MEF
and CRC-64/MS
from the CRC
catalogue (thanks to Greg Nelson, Grammatech Inc.)
3.0.0 4 January 2022
- Reduces or eliminates brute force search for POLY in many
cases by finding the greatest common divisor of differences
between codewords (thanks to Dram).
2.1.2 24 December 2021
- Added algorithm
CRC-8/HITAG
from the CRC Catalogue (thanks to
Philippe Teuwen).
2.1.1 14 August 2020
- Updated project URL.
- Added Chafix utility for ARM Tube OS binary.
2.1.0 7 December 2019
- Added -1 switch to skip equivalent forms.
- WIDTH may be specified before or after -i, -p, -q or -x.
- Warnings are given if POLY has no +1 term or if a search
is attempted with fewer than 4 codeword samples.
2.0.3 21 November 2019
- Added
tomtorfs-wrapper
.
- Revised poly class definitions and function entry conditions
in
poly.c
.
- Added DFSfix utility for ARM Tube OS binary.
2.0.2 2 November 2019
- The memory allocation expands geometrically while reading
polynomials from files; this improves performance on large
files but memory overhead is increased during the read.
- The argument index is initialized at run time, allowing
RISC OS and ARM Tube OS users to reinvoke CRC RevEng from
memory using *Go.
- Replaced
getopt
library.
- Removed underscores from system calls.
- Updated documentation.
2.0.1 9 May 2019
- Improved robustness of
reveng()
.
2.0.0 6 May 2019
- Much faster brute force search for generator polynomials if
the most compact difference between right-aligned arguments is
not more than twice the specified WIDTH.
1.6.3 20 April 2019
- Added algorithm
CRC-32/CD-ROM-EDC
from the CRC Catalogue.
- Model class of
CRC-16/ARC
, CRC-16/GSM
changed to 'attested'.
- Error message advises that a positive -P may also precede -s.
1.6.2 5 March 2019
- Added algorithm
CRC-8/MIFARE-MAD
from the CRC Catalogue.
1.6.1 28 December 2018
mnovel()
clears the model's class flags.
1.6.0 21 November 2018
- Added 2 new algorithms,
CRC-8/NRSC-5
, CRC-16/NRSC-5
, from the
CRC Catalogue.
- Renamed 31 algorithms; added 24 aliases to the old names.
- Added 10 other aliases.
- Added class descriptors to
models[]
.
1.5.3 26 July 2018
- Added algorithm
CRC-24/OS-9
from the CRC Catalogue.
- Optimised
prev()
(thanks to Jörg Stippa).
- Optimised definition of
struct malias
.
- Renamed
NOFORCE
to ALWPCK
.
1.5.2 20 June 2017
- Added 3 new algorithms,
CRC-8/BLUETOOTH
, CRC-17/CAN-FD
,
CRC-21/CAN-FD
, from the CRC Catalogue.
1.5.1 18 February 2017
- Added 8 new algorithms,
CRC-3/GSM
, CRC-6/GSM
, CRC-8/GSM-A
,
CRC-8/GSM-B
, CRC-10/GSM
, CRC-12/GSM
, CRC-14/GSM
, CRC-16/GSM
,
from the CRC Catalogue.
- -G is ignored if a generator polynomial is specified, so that
it serves as a general fast-run switch. The brute force
search pass is then allowed to return results on the
polynomial.
- Revised calculation of residue for crossed-endian algorithms.
1.5.0 8 February 2017
- Added algorithm
CRC-64/GO-ISO
and 2 new aliases,
CRC-64/ECMA-182
, CRC-64/GO-ECMA
, from the CRC Catalogue.
- Added a residue field to Williams model output records.
- Added -G switch to skip the brute force search pass.
1.4.4 27 July 2016
- Added 5 new algorithms,
CRC-8/AUTOSAR
, CRC-8/OPENSAFETY
,
CRC-16/OPENSAFETY-A
, CRC-16/OPENSAFETY-B
and CRC-32/AUTOSAR
from the CRC Catalogue.
- Added a build option to verify the order of the preset and
alias tables at compile time.
1.4.3 14 July 2016
- Added algorithm
CRC-16/CMS
from the CRC Catalogue.
1.4.2 8 July 2016
- Added algorithm
CRC-16/PROFIBUS
from the CRC Catalogue.
1.4.1a 29 June 2016
- Fixed a regression that caused the Windows release to crash
on older systems.
1.4.1 27 June 2016
- -P sets the Width value just like -k.
pcmp()
quickly returns when the comparands are identical.
- Added resources for the Windows executable.
1.4.0 24 February 2016
- Added 11 new algorithms,
CRC-4/INTERLAKEN
, CRC-7/UMTS
,
CRC-8/LTE
, CRC-8/SAE-J1850
, CRC-11/UMTS
, CRC-16/LJ1200
,
CRC-24/BLE
, CRC-24/INTERLAKEN
, CRC-24/LTE-A
, CRC-24/LTE-B
,
CRC-30/CDMA
, and 4 new aliases, CRC-12/UMTS
, CRC-16/LTE
,
CRC-16/UMTS
, CRC-32/INTERLAKEN
, from the CRC Catalogue.
- Eliminated string comparison when testing if a model name is
an alias.
- Split off presets into
preset.c
.
- Eliminated bogus calls to
bsearch()
in preset.c
.
1.3.1 31 July 2015
- Numerical (not raw) arguments and option parameters accept and
discard hexadecimal prefixes 0x, $ and &.
- Compacted preset alias table.
1.3.0 9 April 2015
- Added -z switch to accept direct binary strings.
1.2.0a 11 February 2014
- ARM Tube OS binary included.
1.2.0 28 January 2014
- Reintroduced third-party
getopt
library for RISC OS.
- Compacted preset model table and resolved pointer cast
warnings.
1.1.5 14 January 2014
- Corrected
CRC-40/GSM
based on new evidence (thanks to Mark
Cammidge, Peralex).
- Added
CRC-8/DVB-S2
from the CRC catalogue (thanks to Hartmut
Brandt, German Aerospace Center).
- Added the new alias
CRC-8/AES
from the CRC catalogue.
- Further efficiencies in the polynomial handling code when
BMP_BIT
is a power of two.
1.1.4 14 October 2013
- Added
CRC-13/BBC
and six cdma2000 algorithms from the CRC
catalogue.
1.1.3 28 September 2013
- Attempts to search for non-Williams compliant models (with -M)
are refused.
- The Init or XorOut value is solved using the shortest
argument.
- Enabled more efficient polynomial handling code when
BMP_BIT
is a power of two.
1.1.2 11 June 2013
- Preset model checking in -s matches Init and Xorout values
given as 0. The input model is canonicalised in all modes
before processing (based on WIDTH for -s, based on POLY for
the other modes).
- The first progress message is omitted for tidier output.
BMP_BIT
and BMP_SUB
are validated at compile time.
1.1.1 22 April 2013
- Polynomials in progress messages are printed in the correct
format for -p and -q.
1.1.0 9 February 2013
- Added -q option, removed hidden -W option.
- Prints progress messages during search.
1.05 20 January 2013
- Corrected a transcription error in the Poly value of
CRC-82/DARC
. Most architectures were unaffected.
- The Perl script now automatically generates code for the large
polynomial bitmaps used in the preset model tables.
1.04 18 January 2013
- -s checks even a fully specified model against the supplied
arguments.
- Fixed internal searches for first and last significant terms
on machines with non-power-of-2 word lengths.
1.03 19 July 2012
- Added algorithm
CRC-8/EBU
from the CRC catalogue.
1.02 16 July 2012
- Added algorithm
CRC-15/MPT1327
from the CRC catalogue.
- Added a Perl script to relink the preset model tables.
- Search iterates through the solutions of Init slightly more
efficiently.
1.01 28 May 2012
- Source code constrained to characters in the ANSI C
repertoire.
$
in the Williams model records replaced with 0x
.
- Unused parameter removed from
modpol()
.
1.00 25 May 2012
- Removed two parity models not in the CRC catalogue.
- Init values are reverse engineered by Ewing's method, which
runs in O(n3) time and is therefore much faster on wide CRCs.
- Attempts to do a crossed-endian search are refused. Crossed-
endian searching had not been properly implemented since
version 0.13.
- -D dumps the parameters of all models as well as their names.
0.62 12 April 2012
- Added algorithm
CRC-31/PHILIPS
from the CRC catalogue.
0.61 3 March 2012
- Reads files properly when the -a parameter is at maximum.
- Prints Williams model records in a single-line format.
0.60 20 February 2012
- Corrected algorithm
CRC-6/DARC
per the CRC catalogue.
- Standard input is read in binary mode under MinGW.
- The user is advised to use reveng -D if a preset is not found.
- The third-party
getopt
library has been removed.
- Revised documentation.
0.50 7 September 2011
- Argument files are read once.
- Multiple argument files may be passed on standard input, with
EOF between them.
0.44 28 August 2011
- Added algorithm
CRC-64/XZ
from the CRC catalogue.
0.43 27 August 2011
- Fixed Init/Xorout reflection logic in -V and -v.
- Searches wider than one machine word now proceed.
- Aborts if compiled with the wrong values of
BMPBIT
and BMPSUB
,
which can cause searches to malfunction.
0.42 3 May 2011
- Removed redundant
#include
from bmpbit.c
.
0.41 30 April 2011
- Added algorithms
CRC-16/TMS37157
and CRC-A
and the new alias
CRC-B
from the CRC catalogue.
0.40 10 February 2011
- Made the preset model definitions ANSI C compliant.
- The default is now to right-justify the output whenever
RefOut = False, and to left-justify it whenever RefOut = True.
This reconciles the output with the output of other
calculators.
0.31 4 February 2011
- Corrected a transcription error in the Check value of
CRC-32/BZIP2
.
- Added 3 new aliases from the CRC catalogue.
- Removed redundancies from the usage text.
0.30 18 January 2011
- Fixed all ANSI C warnings.
- Does not crash when -w is set to a small negative value.
0.21 15 January 2011
- Added -k and -P options.
- Invalid characters in hexadecimal arguments cause an error.
- More efficient parsing of hexadecimal arguments.
- Renamed some compile options. Added
NOFORCE
.
0.20 11 January 2011
- Renamed some switches. Added -V switch to reverse an
algorithm (-v reverses the arguments and resulting CRC as
well, and its reversed model cannot be dumped with -d.)
- With -f specified, a STRING equal to - (dash) causes an
argument to be read from standard input.
- Option -m now matches model names case-insensitively.
0.13 8 January 2011
- Fixed calculation of Init from a known XorOut.
- Should successfully find models when RefIn and RefOut
differ.
0.12 7 January 2011
- Added options -m and -X.
- Forced -W and delisted the switch (still accepted) as narrow
search is broken.
- Changed behaviour of preset scanning in -S to list all
matching models and filter against specified parameters.
0.11 5 January 2011
- Fixed memory management during either-endian search.
0.10 5 January 2011
Greg Cook,
https://reveng.sourceforge.io/changes.htm Last updated 8 August 2024
Hosting by
[ Top of page ]