mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-19 12:59:44 -07:00
hf emv pse
and sketch for the other commands
This commit is contained in:
parent
24e0d538d1
commit
a4662ca9f9
1 changed files with 50 additions and 67 deletions
|
@ -20,7 +20,7 @@ int CmdHFEMVSelect(const char *cmd) {
|
||||||
|
|
||||||
CLIParserInit("hf 14a select",
|
CLIParserInit("hf 14a select",
|
||||||
"Executes select applet command",
|
"Executes select applet command",
|
||||||
"Usage:\n\thf emv select -s a00000000101 -> select card, select applet\n\thf emv select -s -t a00000000101 -> select card, select applet, show result in TLV\n");
|
"Usage:\n\thf emv select -s a00000000101 -> select card, select applet\n\thf emv select -st a00000000101 -> select card, select applet, show result in TLV\n");
|
||||||
|
|
||||||
void* argtable[] = {
|
void* argtable[] = {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
|
@ -64,7 +64,7 @@ int CmdHFEMVSearch(const char *cmd) {
|
||||||
|
|
||||||
CLIParserInit("hf 14a select",
|
CLIParserInit("hf 14a select",
|
||||||
"Tries to select all applets from applet list:\n",
|
"Tries to select all applets from applet list:\n",
|
||||||
"Usage:\n\thf emv search -s -> select card and search\n\thf emv search -s -t -> select card, search and show result in TLV\n");
|
"Usage:\n\thf emv search -s -> select card and search\n\thf emv search -st -> select card, search and show result in TLV\n");
|
||||||
|
|
||||||
void* argtable[] = {
|
void* argtable[] = {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
|
@ -105,74 +105,37 @@ int CmdHFEMVSearch(const char *cmd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int UsageCmdHFEMVPPSE(void) {
|
|
||||||
PrintAndLog("HELP : Executes PSE/PPSE select command. It returns list of applet on the card:\n");
|
|
||||||
PrintAndLog("Usage: hf emv pse [-s][-k][-1][-2][-a][-t]\n");
|
|
||||||
PrintAndLog(" Options:");
|
|
||||||
PrintAndLog(" -s : select card");
|
|
||||||
PrintAndLog(" -k : keep field for next command");
|
|
||||||
PrintAndLog(" -1 : ppse (1PAY.SYS.DDF01)");
|
|
||||||
PrintAndLog(" -2 : pse (2PAY.SYS.DDF01)");
|
|
||||||
PrintAndLog(" -a : show APDU reqests and responses\n");
|
|
||||||
PrintAndLog(" -t : TLV decode results\n");
|
|
||||||
PrintAndLog("Samples:");
|
|
||||||
PrintAndLog(" hf emv pse -s -1 -> select, get pse");
|
|
||||||
PrintAndLog(" hf emv pse -s -k -2 -> select, get ppse, keep field");
|
|
||||||
PrintAndLog(" hf emv pse -s -t -2 -> select, get ppse, show result in TLV");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CmdHFEMVPPSE(const char *cmd) {
|
int CmdHFEMVPPSE(const char *cmd) {
|
||||||
|
|
||||||
|
|
||||||
|
CLIParserInit("hf 14a pse",
|
||||||
|
"Executes PSE/PPSE select command. It returns list of applet on the card:\n",
|
||||||
|
"Usage:\n\thf emv pse -s1 -> select, get pse\n\thf emv pse -st2 -> select, get ppse, show result in TLV\n");
|
||||||
|
|
||||||
|
void* argtable[] = {
|
||||||
|
arg_param_begin,
|
||||||
|
arg_lit0("sS", "select", "activate field and select card"),
|
||||||
|
arg_lit0("kK", "keep", "keep field ON for next command"),
|
||||||
|
arg_lit0("1", "pse", "pse (1PAY.SYS.DDF01) mode"),
|
||||||
|
arg_lit0("2", "ppse", "ppse (2PAY.SYS.DDF01) mode (default mode)"),
|
||||||
|
arg_lit0("aA", "apdu", "show APDU reqests and responses"),
|
||||||
|
arg_lit0("tT", "tlv", "TLV decode results of selected applets"),
|
||||||
|
arg_param_end
|
||||||
|
};
|
||||||
|
CLIExecWithReturn(cmd, argtable, true);
|
||||||
|
|
||||||
|
bool activateField = arg_get_lit(1);
|
||||||
|
bool leaveSignalON = arg_get_lit(2);
|
||||||
uint8_t PSENum = 2;
|
uint8_t PSENum = 2;
|
||||||
bool activateField = false;
|
if (arg_get_lit(3))
|
||||||
bool leaveSignalON = false;
|
|
||||||
bool decodeTLV = false;
|
|
||||||
|
|
||||||
if (strlen(cmd) < 1) {
|
|
||||||
UsageCmdHFEMVPPSE();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetAPDULogging(false);
|
|
||||||
|
|
||||||
int cmdp = 0;
|
|
||||||
while(param_getchar(cmd, cmdp) != 0x00) {
|
|
||||||
char c = param_getchar(cmd, cmdp);
|
|
||||||
if ((c == '-') && (param_getlength(cmd, cmdp) == 2))
|
|
||||||
switch (param_getchar_indx(cmd, 1, cmdp)) {
|
|
||||||
case 'h':
|
|
||||||
case 'H':
|
|
||||||
UsageCmdHFEMVPPSE();
|
|
||||||
return 0;
|
|
||||||
case 's':
|
|
||||||
case 'S':
|
|
||||||
activateField = true;
|
|
||||||
break;
|
|
||||||
case 'k':
|
|
||||||
case 'K':
|
|
||||||
leaveSignalON = true;
|
|
||||||
break;
|
|
||||||
case 'a':
|
|
||||||
case 'A':
|
|
||||||
SetAPDULogging(true);
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
case 'T':
|
|
||||||
decodeTLV = true;
|
|
||||||
break;
|
|
||||||
case '1':
|
|
||||||
PSENum = 1;
|
PSENum = 1;
|
||||||
break;
|
if (arg_get_lit(4))
|
||||||
case '2':
|
|
||||||
PSENum = 2;
|
PSENum = 2;
|
||||||
break;
|
bool APDULogging = arg_get_lit(5);
|
||||||
default:
|
bool decodeTLV = arg_get_lit(6);
|
||||||
PrintAndLog("Unknown parameter '%c'", param_getchar_indx(cmd, 1, cmdp));
|
CLIParserFree();
|
||||||
return 1;
|
|
||||||
}
|
SetAPDULogging(APDULogging);
|
||||||
cmdp++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// exec
|
// exec
|
||||||
uint8_t buf[APDU_RES_LEN] = {0};
|
uint8_t buf[APDU_RES_LEN] = {0};
|
||||||
|
@ -193,6 +156,26 @@ int CmdHFEMVPPSE(const char *cmd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CmdHFEMVGPO(const char *cmd) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CmdHFEMVReadRecord(const char *cmd) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CmdHFEMVAC(const char *cmd) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CmdHFEMVGenerateChallenge(const char *cmd) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CmdHFEMVInternalAuthenticate(const char *cmd) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int UsageCmdHFEMVExec(void) {
|
int UsageCmdHFEMVExec(void) {
|
||||||
PrintAndLog("HELP : Executes EMV contactless transaction:\n");
|
PrintAndLog("HELP : Executes EMV contactless transaction:\n");
|
||||||
PrintAndLog("Usage: hf emv exec [-s][-a][-t][-f][-v][-c][-x][-g]\n");
|
PrintAndLog("Usage: hf emv exec [-s][-a][-t][-f][-v][-c][-x][-g]\n");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue