//Push the retval on the stack
lua_pushinteger(L,retval);
//Push the key onto the stack
- lua_pushlstring(L,(const char *) &key,sizeof(key));
+ uint8_t dest_key[8];
+ num_to_bytes(key,sizeof(dest_key),&dest_key);
+
+ //printf("Pushing to lua stack: %012"llx"\n",key);
+ lua_pushlstring(L,(const char *) &dest_key,sizeof(dest_key));
return 2; //Two return values
}
lua_settop(L, 0);
printf("Arguments discarded, stack now contains %d elements", lua_gettop(L));
UsbCommand response = {CMD_MIFARE_READBL, {1337, 1338, 1339}};
- printf("Now returning a UsbCommand as a string");
- lua_pushlstring(L,(const char *)&response,sizeof(UsbCommand));
- return 1;
+ printf("Now returning a uint64_t as a string");
+ uint64_t x = 0xDEADBEEF;
+ uint8_t destination[8];
+ num_to_bytes(x,sizeof(x),&destination);
+ lua_pushlstring(L,(const char *)&x,sizeof(x));
+ lua_pushlstring(L,(const char *)&destination,sizeof(destination));
+
+ return 2;
}
local key, cnt
res,err = mfcrack()
if not res then return oops(err) end
- _,key = bin.unpack("H6",res)
+ -- The key is actually 8 bytes, so a
+ -- 6-byte key is sent as 00XXXXXX
+ -- This means we unpack it as first
+ -- two bytes, then six bytes actual key data
+ -- We can discard first and second return values
+ _,_,key = bin.unpack("H2H6",res)
print("Key ", key)
-- Use nested attack
end
end
+end
-- Call the main
main(args)