mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-13 16:53:00 -07:00
reveng- iceman1001 s scripting updates
This commit is contained in:
parent
2e16354693
commit
53ee28cb3a
3 changed files with 32 additions and 31 deletions
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
};
|
||||
|
||||
|
|
|
@ -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,30 +39,29 @@ 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)
|
||||
end
|
||||
|
||||
if 1 == 1 then
|
||||
return
|
||||
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
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue