ADD: added the crc8legic to Lua. call it with core.crc8legic

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))
This commit is contained in:
iceman1001 2016-02-22 17:50:32 +01:00
parent c0f15a05b3
commit a75d63f19b
3 changed files with 43 additions and 16 deletions

View file

@ -1,5 +1,6 @@
//-----------------------------------------------------------------------------
// 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
@ -7,23 +8,8 @@
//-----------------------------------------------------------------------------
// 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 "scripting.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
@ -369,6 +355,16 @@ static int l_aes128encrypt_ecb(lua_State *L)
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;
@ -510,6 +506,7 @@ int set_pm3_libraries(lua_State *L)
{"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},