mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-21 22:54:40 +08:00
add T=0 to sc raw
command
This commit is contained in:
parent
e567b74fa0
commit
f0c3482799
1 changed files with 14 additions and 5 deletions
|
@ -15,14 +15,15 @@ int usage_sm_raw(void) {
|
||||||
PrintAndLogEx(NORMAL, "Usage: sc raw [h|r|c] d <0A 0B 0C ... hex>");
|
PrintAndLogEx(NORMAL, "Usage: sc raw [h|r|c] d <0A 0B 0C ... hex>");
|
||||||
PrintAndLogEx(NORMAL, " h : this help");
|
PrintAndLogEx(NORMAL, " h : this help");
|
||||||
PrintAndLogEx(NORMAL, " r : do not read response");
|
PrintAndLogEx(NORMAL, " r : do not read response");
|
||||||
PrintAndLogEx(NORMAL, " a : active smartcard without select");
|
PrintAndLogEx(NORMAL, " a : active smartcard without select (reset sc module)");
|
||||||
PrintAndLogEx(NORMAL, " s : active smartcard with select");
|
PrintAndLogEx(NORMAL, " s : active smartcard with select (get ATR)");
|
||||||
PrintAndLogEx(NORMAL, " t : executes TLV decoder if it possible");
|
PrintAndLogEx(NORMAL, " t : executes TLV decoder if it possible");
|
||||||
|
PrintAndLogEx(NORMAL, " 0 : use protocol T=0");
|
||||||
PrintAndLogEx(NORMAL, " d <bytes> : bytes to send");
|
PrintAndLogEx(NORMAL, " d <bytes> : bytes to send");
|
||||||
PrintAndLogEx(NORMAL, "");
|
PrintAndLogEx(NORMAL, "");
|
||||||
PrintAndLogEx(NORMAL, "Examples:");
|
PrintAndLogEx(NORMAL, "Examples:");
|
||||||
PrintAndLogEx(NORMAL, " sc raw d 00a404000e315041592e5359532e444446303100 - `1PAY.SYS.DDF01` PPSE directory");
|
PrintAndLogEx(NORMAL, " sc raw s 0 d 00a404000e315041592e5359532e444446303100 - `1PAY.SYS.DDF01` PPSE directory with get ATR");
|
||||||
PrintAndLogEx(NORMAL, " sc raw d 00a404000e325041592e5359532e444446303100 - `2PAY.SYS.DDF01` PPSE directory");
|
PrintAndLogEx(NORMAL, " sc raw 0 d 00a404000e325041592e5359532e444446303100 - `2PAY.SYS.DDF01` PPSE directory");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int usage_sm_reader(void) {
|
int usage_sm_reader(void) {
|
||||||
|
@ -362,6 +363,7 @@ int CmdSmartRaw(const char *Cmd) {
|
||||||
int hexlen = 0;
|
int hexlen = 0;
|
||||||
bool active = false;
|
bool active = false;
|
||||||
bool active_select = false;
|
bool active_select = false;
|
||||||
|
bool useT0 = false;
|
||||||
uint8_t cmdp = 0;
|
uint8_t cmdp = 0;
|
||||||
bool errors = false, reply = true, decodeTLV = false, breakloop = false;
|
bool errors = false, reply = true, decodeTLV = false, breakloop = false;
|
||||||
uint8_t data[USB_CMD_DATA_SIZE] = {0x00};
|
uint8_t data[USB_CMD_DATA_SIZE] = {0x00};
|
||||||
|
@ -385,6 +387,10 @@ int CmdSmartRaw(const char *Cmd) {
|
||||||
decodeTLV = true;
|
decodeTLV = true;
|
||||||
cmdp++;
|
cmdp++;
|
||||||
break;
|
break;
|
||||||
|
case '0':
|
||||||
|
useT0 = true;
|
||||||
|
cmdp++;
|
||||||
|
break;
|
||||||
case 'd': {
|
case 'd': {
|
||||||
switch (param_gethex_to_eol(Cmd, cmdp+1, data, sizeof(data), &hexlen)) {
|
switch (param_gethex_to_eol(Cmd, cmdp+1, data, sizeof(data), &hexlen)) {
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -425,7 +431,10 @@ int CmdSmartRaw(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hexlen > 0) {
|
if (hexlen > 0) {
|
||||||
c.arg[0] |= SC_RAW;
|
if (useT0)
|
||||||
|
c.arg[0] |= SC_RAW_T0;
|
||||||
|
else
|
||||||
|
c.arg[0] |= SC_RAW;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(c.d.asBytes, data, hexlen );
|
memcpy(c.d.asBytes, data, hexlen );
|
||||||
|
|
Loading…
Reference in a new issue