also a helper function to take a hexstring and calc the crc on it, was added inside utils.lua
Call it inside a lua-script like this:
local utils = require('utils')
local data = '
01020304'
local crc = utils.Crc8Legic(data)
print (uid, ('%02x'):format(crc))
+ ------------ CRC-16 ccitt checksums\r
+ -- Takes a hex string and calculates a crc16\r
+ Crc8Legic = function(s)\r
+ if s == nil then return nil end\r
+ if #s == 0 then return nil end\r
+ if type(s) == 'string' then\r
+ local utils = require('utils')\r
+ local asc = utils.ConvertHexToAscii(s)\r
+ local hash = core.crc8legic(asc)\r
+ return hash\r
+ end\r
+ return nil\r
+ end,\r
+ \r
------------ CRC-16 ccitt checksums\r
-- Takes a hex string and calculates a crc16\r
Crc16 = function(s)\r
------------ CRC-16 ccitt checksums\r
-- Takes a hex string and calculates a crc16\r
Crc16 = function(s)\r
------------ CRC-64 ecma checksums\r
-- Takes a hex string and calculates a crc64 ecma\r
Crc64 = function(s)\r
------------ CRC-64 ecma checksums\r
-- Takes a hex string and calculates a crc64 ecma\r
Crc64 = function(s)\r
//-----------------------------------------------------------------------------
// Copyright (C) 2013 m h swende <martin at swende.se>
//-----------------------------------------------------------------------------
// Copyright (C) 2013 m h swende <martin at swende.se>
+// Modified 2015,2016, iceman
//
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
// at your option, any later version. See the LICENSE.txt file for the text of
//
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
// at your option, any later version. See the LICENSE.txt file for the text of
//-----------------------------------------------------------------------------
// Some lua scripting glue to proxmark core.
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Some lua scripting glue to proxmark core.
//-----------------------------------------------------------------------------
-
-#include <lua.h>
-#include <lualib.h>
-#include <lauxlib.h>
-#include "proxmark3.h"
-#include "usb_cmd.h"
-#include "cmdmain.h"
-#include "util.h"
-#include "nonce2key/nonce2key.h"
-#include "../common/iso15693tools.h"
-#include "iso14443crc.h"
-#include "../common/crc16.h"
-#include "../common/crc64.h"
-#include "../common/sha1.h"
-#include "aes.h"
-#include "cmdcrc.h"
/**
* The following params expected:
* UsbCommand c
/**
* The following params expected:
* UsbCommand c
return 1;// return 1 to signal one return value
}
return 1;// return 1 to signal one return value
}
+static int l_crc8legic(lua_State *L)
+{
+ size_t size;
+ const char *p_str = luaL_checklstring(L, 1, &size);
+
+ uint16_t retval = CRC8Legic( (uint8_t*) p_str, size);
+ lua_pushinteger(L, (int) retval);
+ return 1;
+}
+
static int l_crc16(lua_State *L)
{
size_t size;
static int l_crc16(lua_State *L)
{
size_t size;
{"aes128_decrypt_ecb", l_aes128decrypt_ecb},
{"aes128_encrypt", l_aes128encrypt_cbc},
{"aes128_encrypt_ecb", l_aes128encrypt_ecb},
{"aes128_decrypt_ecb", l_aes128decrypt_ecb},
{"aes128_encrypt", l_aes128encrypt_cbc},
{"aes128_encrypt_ecb", l_aes128encrypt_ecb},
+ {"crc8legic", l_crc8legic},
{"crc16", l_crc16},
{"crc64", l_crc64},
{"sha1", l_sha1},
{"crc16", l_crc16},
{"crc64", l_crc64},
{"sha1", l_sha1},
#define SCRIPTING_H__
#include <lua.h>
#define SCRIPTING_H__
#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
+#include "proxmark3.h"
+#include "usb_cmd.h"
+#include "cmdmain.h"
+#include "util.h"
+#include "nonce2key/nonce2key.h"
+#include "../common/iso15693tools.h"
+#include "iso14443crc.h"
+#include "../common/crc.h"
+#include "../common/crc16.h"
+#include "../common/crc64.h"
+#include "../common/sha1.h"
+#include "aes.h"
+#include "cmdcrc.h"
/**
* @brief set_libraries loads the core components of pm3 into the 'pm3'
/**
* @brief set_libraries loads the core components of pm3 into the 'pm3'