]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/lualibs/utils.lua
ADD: started to add a legic detection to "HF SEARCH"
[proxmark3-svn] / client / lualibs / utils.lua
index a968fde2a90c3b2218b6e67aa005bdeec7486db6..39f8bca2041b3a7509496868403a2950672de565 100644 (file)
@@ -37,9 +37,7 @@ local Utils =
        ------------ FILE READING\r
        ReadDumpFile = function (filename)\r
        \r
        ------------ FILE READING\r
        ReadDumpFile = function (filename)\r
        \r
-               if filename == nil then \r
-                       return nil, 'Filename is empty'\r
-               end\r
+               filename = filename or 'dumpdata.bin'\r
                if #filename == 0 then\r
                        return nil, 'Filename length is zero'\r
                end\r
                if #filename == 0 then\r
                        return nil, 'Filename length is zero'\r
                end\r
@@ -71,6 +69,32 @@ local Utils =
                return outResults\r
        end,\r
        \r
                return outResults\r
        end,\r
        \r
+       ----ISO14443-B CRC\r
+       Crc14b = 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
+                       return utils.ConvertAsciiToHex(\r
+                                                       core.iso14443b_crc(s)\r
+                                                       )\r
+               end\r
+               return nil              \r
+       end,\r
+       \r
+       ------------ CRC-8 Legic checksums\r
+       -- Takes a hex string and calculates a crc8\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
        \r
        ------------ CRC-16 ccitt checksums\r
        -- Takes a hex string and calculates a crc16\r
@@ -86,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
@@ -99,7 +124,33 @@ local Utils =
                end\r
                return nil\r
        end,\r
                end\r
                return nil\r
        end,\r
-       \r
+\r
+       ------------ SHA1 hash\r
+       -- Takes a string and calculates a SHA1 hash\r
+       Sha1 = 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.sha1(s)\r
+                       return hash\r
+               end\r
+               return nil\r
+       end,    \r
+       -- Takes a hex string and calculates a SHA1 hash\r
+       Sha1Hex = 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.sha1(asc)\r
+                       return hash\r
+               end\r
+               return nil\r
+       end,    \r
+\r
        \r
        -- input parameter is a string\r
        -- Swaps the endianess and returns a number,  \r
        \r
        -- input parameter is a string\r
        -- Swaps the endianess and returns a number,  \r
@@ -157,20 +208,18 @@ local Utils =
        ---\r
        -- Convert Byte array to string of hex\r
        ConvertBytesToHex = function(bytes)\r
        ---\r
        -- Convert Byte array to string of hex\r
        ConvertBytesToHex = function(bytes)\r
-               if #bytes == 0 then\r
-                       return ''\r
-               end\r
+               if bytes == nil then return '' end\r
+               if #bytes == 0 then return '' end\r
                local s={}\r
                local s={}\r
-               for i = 1, #(bytes) do\r
+               for i = 1, #bytes do\r
                        s[i] = string.format("%02X",bytes[i]) \r
                end\r
                return table.concat(s)\r
        end,    \r
        -- Convert byte array to string with ascii\r
     ConvertBytesToAscii = function(bytes)\r
                        s[i] = string.format("%02X",bytes[i]) \r
                end\r
                return table.concat(s)\r
        end,    \r
        -- Convert byte array to string with ascii\r
     ConvertBytesToAscii = function(bytes)\r
-               if #bytes == 0 then\r
-                       return ''\r
-               end\r
+               if bytes == nil then return '' end\r
+               if #bytes == 0 then return '' end\r
                local s={}\r
                for i = 1, #(bytes) do\r
                        s[i] = string.char(bytes[i]) \r
                local s={}\r
                for i = 1, #(bytes) do\r
                        s[i] = string.char(bytes[i]) \r
@@ -209,13 +258,23 @@ local Utils =
        end,\r
        \r
        ConvertHexToAscii = function(s)\r
        end,\r
        \r
        ConvertHexToAscii = function(s)\r
+               if s == nil then return '' end\r
+               if #s == 0 then return '' end\r
                local t={}\r
                local t={}\r
-               if s == nil then return t end\r
-               if #s == 0 then return t end\r
                for k in s:gmatch"(%x%x)" do\r
                        table.insert(t, string.char(tonumber(k,16)))\r
                end\r
                for k in s:gmatch"(%x%x)" do\r
                        table.insert(t, string.char(tonumber(k,16)))\r
                end\r
-               return  table.concat(t) \r
+               return table.concat(t)  \r
+       end,\r
+       \r
+       ConvertAsciiToHex = function(s)         \r
+               if s == nil then return '' end\r
+               if #s == 0 then return '' end\r
+               local t={}\r
+               for k in s:gmatch"(.)" do\r
+                       table.insert(t, string.format("%02X", string.byte(k)))\r
+               end\r
+               return table.concat(t)\r
        end,\r
        \r
        Chars2num = function(s)\r
        end,\r
        \r
        Chars2num = function(s)\r
@@ -242,6 +301,15 @@ local Utils =
                return n\r
        end,\r
        \r
                return n\r
        end,\r
        \r
+       -- a simple implementation of a sleep command. Thanks to Mosci\r
+       -- takes number of seconds to sleep\r
+       Sleep = function(n)\r
+               local clock = os.clock\r
+               local t0 = clock()\r
+               while clock() - t0 <= n do end\r
+               return nil      \r
+       end,\r
+       \r
        -- function convertStringToBytes(str)\r
        -- local bytes = {}\r
        -- local strLength = string.len(str)\r
        -- function convertStringToBytes(str)\r
        -- local bytes = {}\r
        -- local strLength = string.len(str)\r
Impressum, Datenschutz