mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-07-15 01:23:04 -07:00
fix: darkside also take blockno / keytype arguments. Think that block 0 might be lock in the access rights.
This commit is contained in:
parent
b31fd98055
commit
ef136096a3
1 changed files with 33 additions and 21 deletions
|
@ -136,8 +136,7 @@ static int l_WaitForResponseTimeout(lua_State *L){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int returnToLuaWithError(lua_State *L, const char* fmt, ...)
|
static int returnToLuaWithError(lua_State *L, const char* fmt, ...) {
|
||||||
{
|
|
||||||
char buffer[200];
|
char buffer[200];
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args,fmt);
|
va_start(args,fmt);
|
||||||
|
@ -150,11 +149,30 @@ static int returnToLuaWithError(lua_State *L, const char* fmt, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_mfDarkside(lua_State *L){
|
static int l_mfDarkside(lua_State *L){
|
||||||
// blockno, keytype
|
|
||||||
|
uint8_t blockno = 0;
|
||||||
uint64_t key;
|
uint8_t keytype = 0;
|
||||||
|
uint64_t key = 0;
|
||||||
int retval = mfDarkside(0, 0, &key);
|
size_t size;
|
||||||
|
|
||||||
|
//Check number of arguments
|
||||||
|
int n = lua_gettop(L);
|
||||||
|
switch (n) {
|
||||||
|
case 2:{
|
||||||
|
const char *p_keytype = luaL_checklstring(L, 2, &size);
|
||||||
|
if(size != 2) return returnToLuaWithError(L,"Wrong size of keytype, got %d bytes, expected 1", (int) size);
|
||||||
|
sscanf(p_keytype, "%x", &keytype);
|
||||||
|
}
|
||||||
|
case 1: {
|
||||||
|
const char *p_blockno = luaL_checklstring(L, 1, &size);
|
||||||
|
if(size != 2) return returnToLuaWithError(L,"Wrong size of blockno, got %d bytes, expected 2", (int) size);
|
||||||
|
sscanf(p_blockno, "%02x", &blockno);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default : break;
|
||||||
|
}
|
||||||
|
|
||||||
|
int retval = mfDarkside(blockno, keytype, &key);
|
||||||
|
|
||||||
//Push the retval on the stack
|
//Push the retval on the stack
|
||||||
lua_pushinteger(L,retval);
|
lua_pushinteger(L,retval);
|
||||||
|
@ -178,8 +196,7 @@ static int l_clearCommandBuffer(lua_State *L){
|
||||||
* @param L
|
* @param L
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
static int l_foobar(lua_State *L)
|
static int l_foobar(lua_State *L) {
|
||||||
{
|
|
||||||
//Check number of arguments
|
//Check number of arguments
|
||||||
int n = lua_gettop(L);
|
int n = lua_gettop(L);
|
||||||
printf("foobar called with %d arguments" , n);
|
printf("foobar called with %d arguments" , n);
|
||||||
|
@ -190,7 +207,7 @@ static int l_foobar(lua_State *L)
|
||||||
// UsbCommand response = {CMD_MIFARE_READBL, {1337, 1338, 1339}};
|
// UsbCommand response = {CMD_MIFARE_READBL, {1337, 1338, 1339}};
|
||||||
|
|
||||||
printf("Now returning a uint64_t as a string");
|
printf("Now returning a uint64_t as a string");
|
||||||
uint64_t x = 0xDEADBEEF;
|
uint64_t x = 0xDEADC0DE;
|
||||||
uint8_t destination[8];
|
uint8_t destination[8];
|
||||||
num_to_bytes(x,sizeof(x),destination);
|
num_to_bytes(x,sizeof(x),destination);
|
||||||
lua_pushlstring(L,(const char *)&x,sizeof(x));
|
lua_pushlstring(L,(const char *)&x,sizeof(x));
|
||||||
|
@ -204,8 +221,7 @@ static int l_foobar(lua_State *L)
|
||||||
* @param L
|
* @param L
|
||||||
* @return boolean, true if kbhit, false otherwise.
|
* @return boolean, true if kbhit, false otherwise.
|
||||||
*/
|
*/
|
||||||
static int l_ukbhit(lua_State *L)
|
static int l_ukbhit(lua_State *L) {
|
||||||
{
|
|
||||||
lua_pushboolean(L,ukbhit() ? true : false);
|
lua_pushboolean(L,ukbhit() ? true : false);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -215,24 +231,22 @@ static int l_ukbhit(lua_State *L)
|
||||||
* @param L
|
* @param L
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
static int l_CmdConsole(lua_State *L)
|
static int l_CmdConsole(lua_State *L) {
|
||||||
{
|
|
||||||
CommandReceived((char *)luaL_checkstring(L, 1));
|
CommandReceived((char *)luaL_checkstring(L, 1));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_iso15693_crc(lua_State *L)
|
static int l_iso15693_crc(lua_State *L) {
|
||||||
{
|
|
||||||
// uint16_t Iso15693Crc(uint8_t *v, int n);
|
// uint16_t Iso15693Crc(uint8_t *v, int n);
|
||||||
size_t size;
|
size_t size;
|
||||||
const char *v = luaL_checklstring(L, 1, &size);
|
const char *v = luaL_checklstring(L, 1, &size);
|
||||||
|
// iceman, should be size / 2 ?!?
|
||||||
uint16_t retval = Iso15693Crc((uint8_t *) v, size);
|
uint16_t retval = Iso15693Crc((uint8_t *) v, size);
|
||||||
lua_pushinteger(L, (int) retval);
|
lua_pushinteger(L, (int) retval);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_iso14443b_crc(lua_State *L)
|
static int l_iso14443b_crc(lua_State *L) {
|
||||||
{
|
|
||||||
/* void ComputeCrc14443(int CrcType,
|
/* void ComputeCrc14443(int CrcType,
|
||||||
const unsigned char *Data, int Length,
|
const unsigned char *Data, int Length,
|
||||||
unsigned char *TransmitFirst,
|
unsigned char *TransmitFirst,
|
||||||
|
@ -241,7 +255,6 @@ static int l_iso14443b_crc(lua_State *L)
|
||||||
unsigned char buf[USB_CMD_DATA_SIZE] = {0x00};
|
unsigned char buf[USB_CMD_DATA_SIZE] = {0x00};
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
const char *data = luaL_checklstring(L, 1, &size);
|
const char *data = luaL_checklstring(L, 1, &size);
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < size; i += 2)
|
for (int i = 0; i < size; i += 2)
|
||||||
sscanf(&data[i], "%02x", (unsigned int *)&buf[i / 2]);
|
sscanf(&data[i], "%02x", (unsigned int *)&buf[i / 2]);
|
||||||
|
@ -256,8 +269,7 @@ static int l_iso14443b_crc(lua_State *L)
|
||||||
Simple AES 128 cbc hook up to OpenSSL.
|
Simple AES 128 cbc hook up to OpenSSL.
|
||||||
params: key, input
|
params: key, input
|
||||||
*/
|
*/
|
||||||
static int l_aes128decrypt_cbc(lua_State *L)
|
static int l_aes128decrypt_cbc(lua_State *L) {
|
||||||
{
|
|
||||||
//Check number of arguments
|
//Check number of arguments
|
||||||
int i;
|
int i;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue