]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/lualibs/utils.lua
Merge remote-tracking branch 'origin/DESFireAuth'
[proxmark3-svn] / client / lualibs / utils.lua
index 15b96ee50776eb5b7a40185b3edaa7f5a029cff3..9b36dfc862239736e0f16a9fc455883dc5dcb88c 100644 (file)
@@ -33,9 +33,86 @@ local Utils =
 \r
                return answer\r
        end,\r
+       \r
+       ------------ FILE READING\r
+       ReadDumpFile = function (filename)\r
+       \r
+               if filename == nil then \r
+                       return nil, 'Filename is empty'\r
+               end\r
+               if #filename == 0 then\r
+                       return nil, 'Filename length is zero'\r
+               end\r
+\r
+               infile = io.open(filename, "rb")\r
+               if infile == nil then \r
+                       return nil, string.format("Could not read file %s",filename)\r
+               end\r
+               local t = infile:read("*all")\r
+               len = string.len(t)\r
+               local  _,hex = bin.unpack(("H%d"):format(len),t)\r
+               io.close(infile)\r
+               return hex\r
+       end,\r
+       \r
+       ------------ string split function\r
+       Split = function( inSplitPattern, outResults )\r
+               if not outResults then\r
+                       outResults = {}\r
+               end\r
+               local start = 1\r
+               local splitStart, splitEnd = string.find( self, inSplitPattern, start )\r
+               while splitStart do\r
+                       table.insert( outResults, string.sub( self, start, splitStart-1 ) )\r
+                       start = splitEnd + 1\r
+                       splitStart, splitEnd = string.find( self, inSplitPattern, start )\r
+               end\r
+               table.insert( outResults, string.sub( self, start ) )\r
+               return outResults\r
+       end,\r
+       \r
+       ------------ CRC-16 ccitt checksums\r
+       \r
+       -- Takes a hex string and calculates a crc16\r
+       Crc16 = 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.crc16(asc)\r
+                       return hash\r
+               end\r
+               return nil\r
+       end,\r
+\r
+       -- input parameter is a string\r
+       -- Swaps the endianess and returns a number,  \r
+       -- IE:  'cd7a' -> '7acd'  -> 0x7acd\r
+       SwapEndianness = function(s, len)\r
+               if s == nil then return nil end\r
+               if #s == 0 then return '' end\r
+               if  type(s) ~= 'string' then return nil end\r
+               \r
+               local retval = 0\r
+               if len == 16 then\r
+                       local t = s:sub(3,4)..s:sub(1,2)\r
+                       retval = tonumber(t,16)\r
+               elseif len == 24 then\r
+                       local t = s:sub(5,6)..s:sub(3,4)..s:sub(1,2)\r
+                       retval = tonumber(t,16)\r
+               elseif len == 32 then\r
+                       local t = s:sub(7,8)..s:sub(5,6)..s:sub(3,4)..s:sub(1,2)\r
+                       retval = tonumber(t,16)\r
+               end\r
+               return retval\r
+       end,\r
+       \r
+       ------------ CONVERSIONS\r
+       \r
        --\r
        -- Converts DECIMAL to HEX\r
-    ConvertDec2Hex = function(IN)\r
+    ConvertDecToHex = function(IN)\r
                local B,K,OUT,I,D=16,"0123456789ABCDEF","",0\r
                while IN>0 do\r
                        I=I+1\r
@@ -46,7 +123,7 @@ local Utils =
        end,\r
        ---\r
        -- Convert Byte array to string of hex\r
-       ConvertBytes2HexString = function(bytes)\r
+       ConvertBytesToHex = function(bytes)\r
                if #bytes == 0 then\r
                        return ''\r
                end\r
@@ -57,7 +134,7 @@ local Utils =
                return table.concat(s)\r
        end,    \r
        -- Convert byte array to string with ascii\r
-    ConvertBytesToAsciiString = function(bytes)\r
+    ConvertBytesToAscii = function(bytes)\r
                if #bytes == 0 then\r
                        return ''\r
                end\r
@@ -67,7 +144,7 @@ local Utils =
                end\r
                return table.concat(s)          \r
        end,     \r
-       ConvertHexStringToBytes = function(s)\r
+       ConvertHexToBytes = function(s)\r
                local t={}\r
                if s == nil then return t end\r
                if #s == 0 then return t end\r
@@ -76,7 +153,7 @@ local Utils =
                end\r
                return t\r
        end,\r
-       ConvertAsciiStringToBytes = function(s)\r
+       ConvertAsciiToBytes = function(s)\r
                local t={}\r
                if s == nil then return t end\r
                if #s == 0 then return t end\r
Impressum, Datenschutz