]> cvs.zerfleddert.de Git - proxmark3-svn/blame - client/scripts/e.lua
FIX: Coverity, unintended sign extention, CID #121363, (numbits << 16) becomes...
[proxmark3-svn] / client / scripts / e.lua
CommitLineData
60e86577 1local getopt = require('getopt')
2local utils = require('utils')
3
d3521467 4example = "script calculates many different checksums (CRC) over the provided hex input"
60e86577 5author = "Iceman"
6desc =
7[[
d3521467 8This script calculates many checksums (CRC) over the provided hex input.
60e86577 9
10Arguments:
11 -b data in hex
d3521467 12 -w bitwidth of the CRC family of algorithm. <optional> defaults to all known CRC presets.
60e86577 13Examples :
14 script run e -b 010203040506070809
15 script run e -b 010203040506070809 -w 16
16]]
17
18---
19-- A debug printout-function
20function dbg(args)
21 if DEBUG then
22 print("###", args)
23 end
24end
25---
26-- This is only meant to be used when errors occur
27function oops(err)
28 print("ERROR: ",err)
29 return nil,err
30end
31---
32-- Usage help
33function help()
34 print(desc)
35 print("Example usage")
36 print(example)
37end
38---
39-- The main entry point
40function main(args)
41
68ff8325 42 local data
60e86577 43 local width = 0
44
45 -- Read the parameters
46 for o, a in getopt.getopt(args, 'hb:w:') do
47 if o == "h" then return help() end
d3521467 48 if o == "b" then data = a end
60e86577 49 if o == "w" then width = a end
50 end
51
68ff8325 52 data = data or '01020304'
53
d3521467 54 print( string.rep('-',60) )
55 print('Bit width of CRC | '..width)
56 print('Bytes | '..data)
60e86577 57 print('')
d3521467 58 print( ('%-20s| %-16s| %s'):format('Model','CRC', 'CRC reverse'))
59 print( string.rep('-',60) )
60e86577 60 local lists = core.reveng_models(width)
61 for _,i in pairs(lists) do
c043981c 62 local a1 = core.reveng_runmodel(i, data, false, '0')
63 local a2 = core.reveng_runmodel(i, data, true, '0')
64 local a3 = core.reveng_runmodel(i, data, false, 'b')
65 local a4 = core.reveng_runmodel(i, data, false, 'B')
66 local a5 = core.reveng_runmodel(i, data, false, 'l')
67 local a6 = core.reveng_runmodel(i, data, false, 'L')
68 print( ('%-20s| %-16s| %-16s| %-16s| %-16s| %-16s| %-16s'):format(i, a1:upper(), a2:upper(),a3:upper(),a4:upper(),a5:upper(),a6:upper() ) )
60e86577 69 end
60e86577 70end
71
72main(args)
Impressum, Datenschutz