]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
ADD: added the crc8legic to Lua. call it with core.crc8legic
authoriceman1001 <iceman@iuse.se>
Mon, 22 Feb 2016 16:50:32 +0000 (17:50 +0100)
committericeman1001 <iceman@iuse.se>
Mon, 22 Feb 2016 16:50:32 +0000 (17:50 +0100)
      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))

client/lualibs/utils.lua
client/scripting.c
client/scripting.h

index 698017d923d28de50a5baa044d7eb51510b1699a..399c30ed5fdb564823d368d44324ebe572a13df5 100644 (file)
@@ -82,6 +82,20 @@ local Utils =
                return nil              \r
        end,\r
        \r
                return nil              \r
        end,\r
        \r
+       ------------ 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
@@ -96,6 +110,7 @@ local Utils =
                return nil\r
        end,\r
        \r
                return nil\r
        end,\r
        \r
+       \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
index 5d9ce55a716b3c8380d26c27b1a51d95e0bf682c..6eef88ba31a427b9038c439dfe035976009a815a 100644 (file)
@@ -1,5 +1,6 @@
 //-----------------------------------------------------------------------------
 // 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
@@ -7,23 +8,8 @@
 //-----------------------------------------------------------------------------
 // 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 "scripting.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
 /**
  * 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
 }
 
        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;
@@ -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},
                {"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},
index 89a866bc4a81316e98fe2d9abdd40dce422e2f47..3a3babe3d51d728d57939da624b26e9d11c0c009 100644 (file)
 #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'
Impressum, Datenschutz