mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-04-12 23:40:05 +08:00
mfu dump - beginning of additions
This commit is contained in:
parent
5b99376a8f
commit
ae8303c13c
1 changed files with 49 additions and 23 deletions
|
@ -946,7 +946,8 @@ int CmdHF14AMfUDump(const char *Cmd){
|
||||||
size_t fileNlen = 0;
|
size_t fileNlen = 0;
|
||||||
bool errors = false;
|
bool errors = false;
|
||||||
bool swapEndian = false;
|
bool swapEndian = false;
|
||||||
|
bool manualPages = false;
|
||||||
|
uint8_t startPage = 0;
|
||||||
while(param_getchar(Cmd, cmdp) != 0x00)
|
while(param_getchar(Cmd, cmdp) != 0x00)
|
||||||
{
|
{
|
||||||
switch(param_getchar(Cmd, cmdp))
|
switch(param_getchar(Cmd, cmdp))
|
||||||
|
@ -972,10 +973,29 @@ int CmdHF14AMfUDump(const char *Cmd){
|
||||||
if (fileNlen > FILE_PATH_SIZE-5) fileNlen = FILE_PATH_SIZE-5;
|
if (fileNlen > FILE_PATH_SIZE-5) fileNlen = FILE_PATH_SIZE-5;
|
||||||
cmdp += 2;
|
cmdp += 2;
|
||||||
break;
|
break;
|
||||||
|
case 'p':
|
||||||
|
case 'P':
|
||||||
|
startPage = param_get8(Cmd, cmdp+1);
|
||||||
|
manualPages = true;
|
||||||
|
cmdp += 2;
|
||||||
|
break;
|
||||||
|
case 'q':
|
||||||
|
case 'Q':
|
||||||
|
Pages = param_get8(Cmd, cmdp+1);
|
||||||
|
cmdp += 2;
|
||||||
|
manualPages = true;
|
||||||
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
|
case 'S':
|
||||||
swapEndian = true;
|
swapEndian = true;
|
||||||
cmdp++;
|
cmdp++;
|
||||||
break;
|
break;
|
||||||
|
case 't':
|
||||||
|
case 'T':
|
||||||
|
//key type - ul-c or ev1/ntag
|
||||||
|
//TODO
|
||||||
|
cmdp += 2;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
PrintAndLog("Unknown parameter '%c'", param_getchar(Cmd, cmdp));
|
PrintAndLog("Unknown parameter '%c'", param_getchar(Cmd, cmdp));
|
||||||
errors = true;
|
errors = true;
|
||||||
|
@ -993,12 +1013,13 @@ int CmdHF14AMfUDump(const char *Cmd){
|
||||||
TagTypeUL_t tagtype = GetHF14AMfU_Type();
|
TagTypeUL_t tagtype = GetHF14AMfU_Type();
|
||||||
if (tagtype == UL_ERROR) return -1;
|
if (tagtype == UL_ERROR) return -1;
|
||||||
|
|
||||||
|
if (!manualPages)
|
||||||
for (uint8_t idx = 0; idx < MAX_UL_TYPES; idx++)
|
for (uint8_t idx = 0; idx < MAX_UL_TYPES; idx++)
|
||||||
if (tagtype & UL_TYPES_ARRAY[idx])
|
if (tagtype & UL_TYPES_ARRAY[idx])
|
||||||
Pages = UL_MEMORY_ARRAY[idx]+1;
|
Pages = UL_MEMORY_ARRAY[idx]+1;
|
||||||
|
|
||||||
ul_print_type(tagtype, 0);
|
ul_print_type(tagtype, 0);
|
||||||
PrintAndLog("Dumping tag memory...");
|
PrintAndLog("Reading tag memory...");
|
||||||
/*
|
/*
|
||||||
if ( tagtype & UL ) {
|
if ( tagtype & UL ) {
|
||||||
Pages = 16;
|
Pages = 16;
|
||||||
|
@ -1020,7 +1041,8 @@ int CmdHF14AMfUDump(const char *Cmd){
|
||||||
PrintAndLog("Dumping unknown Ultralight, using default values.");
|
PrintAndLog("Dumping unknown Ultralight, using default values.");
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
UsbCommand c = {CMD_MIFAREUC_READCARD, {0,Pages}};
|
if (!hasPwd || (tagtype & UL_C)){
|
||||||
|
UsbCommand c = {CMD_MIFAREUC_READCARD, {startPage,Pages}};
|
||||||
if ( hasPwd ) {
|
if ( hasPwd ) {
|
||||||
c.arg[2] = 1;
|
c.arg[2] = 1;
|
||||||
memcpy(c.d.asBytes, key, 16);
|
memcpy(c.d.asBytes, key, 16);
|
||||||
|
@ -1039,6 +1061,10 @@ int CmdHF14AMfUDump(const char *Cmd){
|
||||||
PrintAndLog("Failed reading block: (%02x)", i);
|
PrintAndLog("Failed reading block: (%02x)", i);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
PrintAndLog("EV1 and NTAG pwd mode not ready yet");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Load lock bytes.
|
// Load lock bytes.
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue