WiP - 'lf t55xx restore' - read a dump file and restore it to a t55xx card

This commit is contained in:
iceman1001 2019-10-08 15:24:06 +02:00
commit c4249ecbb8
3 changed files with 116 additions and 8 deletions

View file

@ -328,6 +328,25 @@ int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, s
}
break;
}
case jsfT55x7: {
JsonSaveStr(root, "FileType", "t55x7");
uint8_t id[4] = {0};
memcpy(id, data, 4);
JsonSaveBufAsHexCompact(root, "$.Card.ID", id, sizeof(id));
for (size_t i = 0; i < (datalen / 4); i++) {
char path[PATH_MAX_LENGTH] = {0};
sprintf(path, "$.blocks.%zu", i);
JsonSaveBufAsHexCompact(root, path, data + (i * 4), 4);
}
break;
}
case jsf14b:
case jsf15:
case jsfLegic:
case jsfT5555:
default:
break;
}
int res = json_dump_file(root, fileName, JSON_INDENT(2));
@ -660,6 +679,27 @@ int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_
*datalen = sptr;
}
if (!strcmp(ctype, "t55x7")) {
size_t sptr = 0;
for (size_t i = 0; i < (maxdatalen / 4); i++) {
if (sptr + 4 > maxdatalen) {
retval = PM3_EMALLOC;
goto out;
}
char path[30] = {0};
sprintf(path, "$.blocks.%zu", i);
size_t len = 0;
JsonLoadBufAsHex(root, path, &udata[sptr], 4, &len);
if (!len)
break;
sptr += len;
}
*datalen = sptr;
}
PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), fileName);
out:
json_decref(root);
@ -1057,10 +1097,10 @@ int searchFile(char **foundpath, const char *pm3dir, const char *searchname, con
if (is_directory(searchname))
return PM3_EINVARG;
char *filename = filenamemcopy(searchname, suffix);
if (filename == NULL)
return PM3_EMALLOC;
if (strlen(filename) == 0) {
free(filename);
return PM3_EFILE;