Fixed error with mifare_autopwn where keys were reversed, see http://www.proxmark.org/forum/viewtopic.php?pid=8494#p8494

This commit is contained in:
martin.holst@gmail.com 2013-10-09 19:08:17 +00:00
parent b1231445c7
commit b969713989
2 changed files with 20 additions and 5 deletions

View file

@ -151,7 +151,11 @@ static int l_nonce2key(lua_State *L){
//Push the retval on the stack //Push the retval on the stack
lua_pushinteger(L,retval); lua_pushinteger(L,retval);
//Push the key onto the stack //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 return 2; //Two return values
} }
@ -173,9 +177,14 @@ static int l_foobar(lua_State *L)
lua_settop(L, 0); lua_settop(L, 0);
printf("Arguments discarded, stack now contains %d elements", lua_gettop(L)); printf("Arguments discarded, stack now contains %d elements", lua_gettop(L));
UsbCommand response = {CMD_MIFARE_READBL, {1337, 1338, 1339}}; UsbCommand response = {CMD_MIFARE_READBL, {1337, 1338, 1339}};
printf("Now returning a UsbCommand as a string"); printf("Now returning a uint64_t as a string");
lua_pushlstring(L,(const char *)&response,sizeof(UsbCommand)); uint64_t x = 0xDEADBEEF;
return 1; 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;
} }

View file

@ -171,7 +171,12 @@ function main(args)
local key, cnt local key, cnt
res,err = mfcrack() res,err = mfcrack()
if not res then return oops(err) end 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) print("Key ", key)
-- Use nested attack -- Use nested attack
@ -182,5 +187,6 @@ function main(args)
end end
end end
end
-- Call the main -- Call the main
main(args) main(args)