mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-27 09:37:15 +08:00
ndef parser vcard now handles xvcard
This commit is contained in:
parent
b993236be2
commit
f02daaa1cb
1 changed files with 16 additions and 6 deletions
|
@ -25,6 +25,7 @@
|
||||||
#define NDEF_WIFIAPPL "application/vnd.wfa"
|
#define NDEF_WIFIAPPL "application/vnd.wfa"
|
||||||
#define NDEF_BLUEAPPL "application/vnd.bluetooth"
|
#define NDEF_BLUEAPPL "application/vnd.bluetooth"
|
||||||
#define NDEF_VCARDTEXT "text/vcard"
|
#define NDEF_VCARDTEXT "text/vcard"
|
||||||
|
#define NDEF_XVCARDTEXT "text/x-vcard"
|
||||||
|
|
||||||
static const char *TypeNameFormat_s[] = {
|
static const char *TypeNameFormat_s[] = {
|
||||||
"Empty Record",
|
"Empty Record",
|
||||||
|
@ -510,8 +511,8 @@ static int ndefDecodeMime_wifi(NDEFHeader_t *ndef) {
|
||||||
static int ndefDecodeMime_vcard(NDEFHeader_t *ndef) {
|
static int ndefDecodeMime_vcard(NDEFHeader_t *ndef) {
|
||||||
PrintAndLogEx(INFO, _CYAN_("VCARD details"));
|
PrintAndLogEx(INFO, _CYAN_("VCARD details"));
|
||||||
if (ndef->PayloadLen > 1) {
|
if (ndef->PayloadLen > 1) {
|
||||||
PrintAndLogEx(INFO, "Data... " _YELLOW_("%.*s"), (int)ndef->PayloadLen, ndef->Payload);
|
PrintAndLogEx(INFO, "");
|
||||||
PrintAndLogEx(INFO, ">>> decorder, to be implemented <<<");
|
PrintAndLogEx(INFO, "%.*s", (int)ndef->PayloadLen, ndef->Payload);
|
||||||
}
|
}
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -629,20 +630,29 @@ static int ndefDecodePayload(NDEFHeader_t *ndef) {
|
||||||
PrintAndLogEx(INFO, "- decoder to be impl -");
|
PrintAndLogEx(INFO, "- decoder to be impl -");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case tnfMIMEMediaRecord:
|
case tnfMIMEMediaRecord: {
|
||||||
PrintAndLogEx(INFO, "MIME Media Record");
|
PrintAndLogEx(INFO, "MIME Media Record");
|
||||||
|
if (ndef->TypeLen == 0) {
|
||||||
|
PrintAndLogEx(INFO, "type length is zero");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (str_startswith((const char *)ndef->Type, NDEF_WIFIAPPL)) {
|
char begin[ndef->TypeLen];
|
||||||
|
memcpy(begin, ndef->Type, ndef->TypeLen);
|
||||||
|
str_lower(begin);
|
||||||
|
|
||||||
|
if (str_startswith(begin, NDEF_WIFIAPPL)) {
|
||||||
ndefDecodeMime_wifi(ndef);
|
ndefDecodeMime_wifi(ndef);
|
||||||
}
|
}
|
||||||
if (str_startswith((const char *)ndef->Type, NDEF_VCARDTEXT)) {
|
if (str_startswith(begin, NDEF_VCARDTEXT) || str_startswith(begin, NDEF_XVCARDTEXT)) {
|
||||||
ndefDecodeMime_vcard(ndef);
|
ndefDecodeMime_vcard(ndef);
|
||||||
}
|
}
|
||||||
if (str_startswith((const char *)ndef->Type, NDEF_BLUEAPPL)) {
|
if (str_startswith(begin, NDEF_BLUEAPPL)) {
|
||||||
ndefDecodeMime_bt(ndef);
|
ndefDecodeMime_bt(ndef);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case tnfAbsoluteURIRecord:
|
case tnfAbsoluteURIRecord:
|
||||||
PrintAndLogEx(INFO, "Absolute URI Record");
|
PrintAndLogEx(INFO, "Absolute URI Record");
|
||||||
PrintAndLogEx(INFO, " payload : %.*s", (int)ndef->PayloadLen, ndef->Payload);
|
PrintAndLogEx(INFO, " payload : %.*s", (int)ndef->PayloadLen, ndef->Payload);
|
||||||
|
|
Loading…
Reference in a new issue