]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
reveng- iceman1001 s scripting updates
authormarshmellow42 <marshmellowrf@gmail.com>
Wed, 10 Jun 2015 01:21:51 +0000 (21:21 -0400)
committermarshmellow42 <marshmellowrf@gmail.com>
Wed, 10 Jun 2015 01:21:51 +0000 (21:21 -0400)
client/cmdmain.c
client/scripting.c
client/scripts/e.lua

index c479e151e41f7bacd23a15da0ea0d28b14795ee2..21886ca003fc8cec88c358fb0cb85daa4b24834a 100644 (file)
@@ -34,9 +34,10 @@ static int CmdHelp(const char *Cmd);
 static int CmdQuit(const char *Cmd);
 static int CmdRev(const char *Cmd);
  // for testing reveng api - cmdcrc.c
+/*
 static int CmdrevengT(const char *Cmd);
 static int CmdrevengC(const char *Cmd);
-
+*/
 
 //For storing command that are received from the device
 static UsbCommand cmdBuffer[CMD_BUFFER_SIZE];
@@ -84,6 +85,7 @@ int CmdRev(const char *Cmd)
   CmdCrc(Cmd);
   return 0;
 }
+/*
  // for testing reveng api - cmdcrc.c
 int CmdrevengT(const char *Cmd)
 {
@@ -92,7 +94,7 @@ int CmdrevengT(const char *Cmd)
 int CmdrevengC(const char *Cmd)
 {
   return CmdrevengTestC(Cmd);
-}
+}*/
 
 /**
  * @brief This method should be called when sending a new command to the pm3. In case any old
index 414f5315b45c16ccee3d86096314f95205f7564f..cc6498ce5997a52a85adef7a645a6d067c7c3bde 100644 (file)
@@ -393,7 +393,7 @@ static int l_reveng_models(lua_State *L){
 
        char *models[80];
        int count = 0;
-       lua_Integer  in_width = luaL_checkinteger(L, 1);
+       int in_width = luaL_checkinteger(L, 1);
        
        if( in_width > 89 ) return returnToLuaWithError(L,"Width cannot exceed 89, got %d", in_width);
 
@@ -412,6 +412,13 @@ static int l_reveng_models(lua_State *L){
        return 1;
 }
 
+//Called with 4 parameters.
+// inModel   ,string containing the crc model name: 'CRC-8'
+// inHexStr  ,string containing the hex representation of the data that will be used for CRC calculations.
+// reverse   ,int 0/1  (bool) if 1, calculate the reverse CRC
+// endian    ,char,  'B','b','L','l','t','r' describing if Big-Endian or Little-Endian should be used in different combinations.
+//
+// outputs:  string with hex representation of the CRC result
 static int l_reveng_RunModel(lua_State *L){
        //-c || -v
        //inModel = valid model name string - CRC-8
@@ -422,19 +429,14 @@ static int l_reveng_RunModel(lua_State *L){
        //result = calculated crc hex string    
        char result[50];
        
-       size_t dataLen;
-       const char *inModel = luaL_checklstring(L, 1, &dataLen);
-       if ( dataLen < 4 ) return returnToLuaWithError(L,"Can't find model, got %s", inModel);
-       
-       const char *inHexStr = luaL_checklstring(L, 2, &dataLen);
-       if ( dataLen < 4 ) return returnToLuaWithError(L,"Hex string too short, got %d", dataLen);
-       
-       int reverse = luaL_checkinteger(L, 3);  
-       const char endian = luaL_checklstring(L, 4, &dataLen)[0];
+       const char *inModel = luaL_checkstring(L, 1);
+       const char *inHexStr = luaL_checkstring(L, 2);
+       bool reverse =  lua_toboolean(L, 3);
+       const char endian = luaL_checkstring(L, 4)[0];
 
        //PrintAndLog("mod: %s, hex: %s, rev %d", inModel, inHexStr, reverse);
        //int RunModel(char *inModel, char *inHexStr, bool reverse, char endian, char *result)
-       int ans = RunModel( (char *)inModel, (char *)inHexStr, (bool)reverse, endian, result);
+       int ans = RunModel( (char *)inModel, (char *)inHexStr, reverse, endian, result);
        if (!ans)       
                return returnToLuaWithError(L,"Reveng failed");
 
@@ -442,7 +444,6 @@ static int l_reveng_RunModel(lua_State *L){
        return 1;
 }
 
-
 /**
  * @brief Sets the lua path to include "./lualibs/?.lua", in order for a script to be
  * able to do "require('foobar')" if foobar.lua is within lualibs folder.
@@ -490,7 +491,6 @@ int set_pm3_libraries(lua_State *L)
                {"sha1",                        l_sha1},
                {"reveng_models",               l_reveng_models},
                {"reveng_runmodel",             l_reveng_RunModel},
-
                {NULL, NULL}
        };
 
index 4dd714901fe9a4e5c569211da9a6bd647ce5fc3b..bca8af45305dd89539ea90a15801c86356f28aad 100644 (file)
@@ -1,15 +1,15 @@
 local getopt = require('getopt')
 local utils = require('utils')
 
-example = "script calculates many checksums (CRC) over the provided hex input"
+example = "script calculates many different checksums (CRC) over the provided hex input"
 author = "Iceman"
 desc =
 [[
-This script calculates many checksums (CRS) over the provided hex input. 
+This script calculates many checksums (CRC) over the provided hex input. 
 
 Arguments:
        -b                              data in hex
-       -w                              width of the CRC algorithm. <optional> defaults to all known CRC presets.
+       -w                              bitwidth of the CRC family of algorithm. <optional> defaults to all known CRC presets.
 Examples : 
        script run e -b 010203040506070809
        script run e -b 010203040506070809 -w 16
@@ -39,31 +39,30 @@ end
 -- The main entry point
 function main(args)
 
-       local data = '01020304'
+       local data
        local width = 0
 
        -- Read the parameters
        for o, a in getopt.getopt(args, 'hb:w:') do
                if o == "h" then return help() end
-               if o == "b" then data = utils.ConvertHexToa end
+               if o == "b" then data = a end
                if o == "w" then width = a end
        end
 
-       print('Width of CRC: '..width..'  bytes: '..data)
-       print('')
-       print('Model','CRC', 'CRC_Reverse')
+       data = data or '01020304'
        
+       print( string.rep('-',60) )
+       print('Bit width of CRC | '..width)
+       print('Bytes            | '..data)
+       print('')
+       print( ('%-20s| %-16s| %s'):format('Model','CRC', 'CRC reverse'))
+       print( string.rep('-',60) )
        local lists = core.reveng_models(width)
        for _,i in pairs(lists) do
-               local one = core.reveng_runmodel(i, data, 0,0)
-               local two = core.reveng_runmodel(i, data, 1,0)
-               
-               print(i, one, two)
+               local one = core.reveng_runmodel(i, data, false, '0')
+               local two = core.reveng_runmodel(i, data, true, '0')
+               print( ('%-20s| %-16s| %s'):format(i, one:upper(), two:upper()) )
        end
-       
-       if 1 == 1 then
-        return
-       end 
 end
 
 main(args)
\ No newline at end of file
Impressum, Datenschutz