Skip to content

Commit d04848c

Browse files
committed
mobib updates
1 parent 03f4f06 commit d04848c

File tree

1 file changed

+114
-80
lines changed

1 file changed

+114
-80
lines changed

client/src/cmdhf14b.c

Lines changed: 114 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -2719,32 +2719,32 @@ static int CmdHF14BCalypsoRead(const char *Cmd) {
27192719
CLIParserFree(ctx);
27202720

27212721
transport_14b_apdu_t cmds[] = {
2722-
{"01.Select ICC ", "\x94\xa4\x08\x00\x04\x3f\x00\x00\x02", 9},
2723-
{"02.ICC ", "\x94\xb2\x01\x04\x1d", 5},
2724-
{"03.Select EnvHol ", "\x94\xa4\x08\x00\x04\x20\x00\x20\x01", 9},
2725-
{"04.EnvHol1 ", "\x94\xb2\x01\x04\x1d", 5},
2726-
{"05.Select EvLog ", "\x94\xa4\x08\x00\x04\x20\x00\x20\x10", 9},
2727-
{"06.EvLog1 ", "\x94\xb2\x01\x04\x1d", 5},
2728-
{"07.EvLog2 ", "\x94\xb2\x02\x04\x1d", 5},
2729-
{"08.EvLog3 ", "\x94\xb2\x03\x04\x1d", 5},
2730-
{"09.Select ConList ", "\x94\xa4\x08\x00\x04\x20\x00\x20\x50", 9},
2731-
{"10.ConList ", "\x94\xb2\x01\x04\x1d", 5},
2732-
{"11.Select Contra ", "\x94\xa4\x08\x00\x04\x20\x00\x20\x20", 9},
2733-
{"12.Contra1 ", "\x94\xb2\x01\x04\x1d", 5},
2734-
{"13.Contra2 ", "\x94\xb2\x02\x04\x1d", 5},
2735-
{"14.Contra3 ", "\x94\xb2\x03\x04\x1d", 5},
2736-
{"15.Contra4 ", "\x94\xb2\x04\x04\x1d", 5},
2737-
{"16.Select Counter ", "\x94\xa4\x08\x00\x04\x20\x00\x20\x69", 9},
2738-
{"17.Counter ", "\x94\xb2\x01\x04\x1d", 5},
2739-
{"18.Select SpecEv ", "\x94\xa4\x08\x00\x04\x20\x00\x20\x40", 9},
2740-
{"19.SpecEv1 ", "\x94\xb2\x01\x04\x1d", 5},
2741-
{"20.Select Purse ", "\x00\xa4\x00\x00\x02\x10\x15", 7},
2742-
{"21.Purse1 ", "\x00\xb2\x01\x04\x1d", 5},
2743-
{"22.Purse2 ", "\x00\xb2\x02\x04\x1d", 5},
2744-
{"23.Purse3 ", "\x00\xb2\x03\x04\x1d", 5},
2745-
{"24.Select Top Up ", "\x00\xa4\x00\x00\x02\x10\x14", 7},
2746-
{"25.Topup1 ", "\x00\xb2\x01\x04\x1d", 5},
2747-
{"26.Select 1TIC.ICA", "\x00\xa4\x04\x00\x08\x31\x54\x49\x43\x2e\x49\x43\x41", 13},
2722+
{"Select ICC", "\x94\xa4\x08\x00\x04\x3f\x00\x00\x02", 9},
2723+
{"- ICC", "\x94\xb2\x01\x04\x1d", 5},
2724+
{"Select EnvHol", "\x94\xa4\x08\x00\x04\x20\x00\x20\x01", 9},
2725+
{"- EnvHol1", "\x94\xb2\x01\x04\x1d", 5},
2726+
{"Select EvLog", "\x94\xa4\x08\x00\x04\x20\x00\x20\x10", 9},
2727+
{"- EvLog1", "\x94\xb2\x01\x04\x1d", 5},
2728+
{"- EvLog2", "\x94\xb2\x02\x04\x1d", 5},
2729+
{"- EvLog3", "\x94\xb2\x03\x04\x1d", 5},
2730+
{"Select ConList", "\x94\xa4\x08\x00\x04\x20\x00\x20\x50", 9},
2731+
{"- ConList", "\x94\xb2\x01\x04\x1d", 5},
2732+
{"Select Contra", "\x94\xa4\x08\x00\x04\x20\x00\x20\x20", 9},
2733+
{"- Contra1", "\x94\xb2\x01\x04\x1d", 5},
2734+
{"- Contra2", "\x94\xb2\x02\x04\x1d", 5},
2735+
{"- Contra3", "\x94\xb2\x03\x04\x1d", 5},
2736+
{"- Contra4", "\x94\xb2\x04\x04\x1d", 5},
2737+
{"Select Counter", "\x94\xa4\x08\x00\x04\x20\x00\x20\x69", 9},
2738+
{"- Counter", "\x94\xb2\x01\x04\x1d", 5},
2739+
{"Select SpecEv", "\x94\xa4\x08\x00\x04\x20\x00\x20\x40", 9},
2740+
{"- SpecEv1", "\x94\xb2\x01\x04\x1d", 5},
2741+
{"Select Purse", "\x00\xa4\x00\x00\x02\x10\x15", 7},
2742+
{"- Purse1", "\x00\xb2\x01\x04\x1d", 5},
2743+
{"- Purse2", "\x00\xb2\x02\x04\x1d", 5},
2744+
{"- Purse3", "\x00\xb2\x03\x04\x1d", 5},
2745+
{"Select Top Up", "\x00\xa4\x00\x00\x02\x10\x14", 7},
2746+
{"- Topup1", "\x00\xb2\x01\x04\x1d", 5},
2747+
{"Select 1TIC.ICA", "\x00\xa4\x04\x00\x08\x31\x54\x49\x43\x2e\x49\x43\x41", 13},
27482748
};
27492749

27502750
/*
@@ -2802,7 +2802,7 @@ static int CmdHF14BCalypsoRead(const char *Cmd) {
28022802
continue;
28032803
}
28042804

2805-
PrintAndLogEx(INFO, "%s - %s", cmds[i].desc, sprint_hex(response, resplen));
2805+
PrintAndLogEx(INFO, "%-22s - %s", cmds[i].desc, sprint_hex(response, resplen - 2));
28062806
activate_field = false;
28072807
}
28082808

@@ -2819,67 +2819,102 @@ static int CmdHF14BMobibRead(const char *Cmd) {
28192819
);
28202820
void *argtable[] = {
28212821
arg_param_begin,
2822+
arg_lit0("o", "old", "for old cards"),
28222823
arg_param_end
28232824
};
28242825
CLIExecWithReturn(ctx, Cmd, argtable, true);
2826+
bool old = arg_get_lit(ctx, 1);
28252827
CLIParserFree(ctx);
28262828

2827-
transport_14b_apdu_t cmds[] = {
2828-
{"01.SELECT AID 1TIC.ICA", "\x00\xa4\x04\x00\x08\x31\x54\x49\x43\x2e\x49\x43\x41", 13},
2829-
{"02.Select ICC file a", "\x00\xa4\x00\x00\x02\x3f\x00", 7},
2830-
{"03.Select ICC file b", "\x00\xa4\x00\x00\x02\x00\x02", 7},
2831-
{"04.ICC", "\x00\xb2\x01\x04\x1d", 5},
2832-
{"05.Select Holder file", "\x00\xa4\x00\x00\x02\x3f\x1c", 7},
2833-
{"06.Holder1", "\x00\xb2\x01\x04\x1d", 5},
2834-
{"07.Holder2", "\x00\xb2\x02\x04\x1d", 5},
2835-
{"08.Select EnvHol file a", "\x00\xa4\x00\x00\x00", 5},
2836-
{"09.Select EnvHol file b", "\x00\xa4\x00\x00\x02\x20\x00", 7},
2837-
{"10.Select EnvHol file c", "\x00\xa4\x00\x00\x02\x20\x01", 7},
2838-
{"11.EnvHol1", "\x00\xb2\x01\x04\x1D", 5},
2839-
{"11.EnvHol2", "\x00\xb2\x02\x04\x1D", 5},
2840-
{"12.Select EvLog file", "\x00\xa4\x00\x00\x02\x20\x10", 7},
2841-
{"13.EvLog1", "\x00\xb2\x01\x04\x1D", 5},
2842-
{"14.EvLog2", "\x00\xb2\x02\x04\x1D", 5},
2843-
{"15.EvLog3", "\x00\xb2\x03\x04\x1D", 5},
2844-
{"16.Select ConList file", "\x00\xa4\x00\x00\x02\x20\x50", 7},
2845-
{"17.ConList", "\x00\xb2\x01\x04\x1D", 5},
2846-
{"18.Select Contra file", "\x00\xa4\x00\x00\x02\x20\x20", 7},
2847-
{"19.Contra1", "\x00\xb2\x01\x04\x1D", 5},
2848-
{"20.Contra2", "\x00\xb2\x02\x04\x1D", 5},
2849-
{"21.Contra3", "\x00\xb2\x03\x04\x1D", 5},
2850-
{"22.Contra4", "\x00\xb2\x04\x04\x1D", 5},
2851-
{"23.Contra5", "\x00\xb2\x05\x04\x1D", 5},
2852-
{"24.Contra6", "\x00\xb2\x06\x04\x1D", 5},
2853-
{"25.Contra7", "\x00\xb2\x07\x04\x1D", 5},
2854-
{"26.Contra8", "\x00\xb2\x08\x04\x1D", 5},
2855-
{"27.Contra9", "\x00\xb2\x09\x04\x1D", 5},
2856-
{"28.ContraA", "\x00\xb2\x0a\x04\x1D", 5},
2857-
{"29.ContraB", "\x00\xb2\x0b\x04\x1D", 5},
2858-
{"30.ContraC", "\x00\xb2\x0c\x04\x1D", 5},
2859-
{"31.Select Counter file", "\x00\xa4\x00\x00\x02\x20\x69", 7},
2860-
{"32.Counter", "\x00\xb2\x01\x04\x1D", 5},
2861-
{"33.Select LoadLog file a", "\x00\xa4\x00\x00\x00", 5},
2862-
{"34.Select LoadLog file b", "\x00\xa4\x00\x00\x02\x10\x00", 7},
2863-
{"35.Select LoadLog file c", "\x00\xa4\x00\x00\x02\x10\x14", 7},
2864-
{"36.LoadLog", "\x00\xb2\x01\x04\x1D", 5},
2865-
{"37.Select Purcha file", "\x00\xa4\x00\x00\x02\x10\x15", 7},
2866-
{"38.Purcha1", "\x00\xb2\x01\x04\x1D", 5},
2867-
{"39.Purcha2", "\x00\xb2\x02\x04\x1D", 5},
2868-
{"40.Purcha3", "\x00\xb2\x03\x04\x1D", 5},
2869-
{"41.Select SpecEv file a", "\x00\xa4\x00\x00\x00", 5},
2870-
{"42.Select SpecEv file b", "\x00\xa4\x00\x00\x02\x20\x00", 7},
2871-
{"43.Select SpecEv file c", "\x00\xa4\x00\x00\x02\x20\x40", 7},
2872-
{"44.SpecEv1", "\x00\xb2\x01\x04\x1D", 5},
2873-
{"45.SpecEv2", "\x00\xb2\x02\x04\x1D", 5},
2874-
{"46.SpecEv3", "\x00\xb2\x03\x04\x1D", 5},
2875-
{"47.SpecEv4", "\x00\xb2\x04\x04\x1d", 5},
2829+
transport_14b_apdu_t cmds_v1[] = {
2830+
{"SELECT AID 1TIC.ICA", "\x00\xa4\x04\x00\x08\x31\x54\x49\x43\x2e\x49\x43\x41", 13},
2831+
{"Select ICC file a", "\x00\xa4\x00\x00\x02\x3f\x00", 7},
2832+
{"Select ICC file b", "\x00\xa4\x00\x00\x02\x00\x02", 7},
2833+
{"- ICC", "\x00\xb2\x01\x04\x1d", 5},
2834+
{"Select Holder file", "\x00\xa4\x00\x00\x02\x3f\x1c", 7},
2835+
{"- Holder1", "\x00\xb2\x01\x04\x1d", 5},
2836+
{"- Holder2", "\x00\xb2\x02\x04\x1d", 5},
2837+
{"Select EnvHol file a", "\x00\xa4\x00\x00\x00", 5},
2838+
{"Select EnvHol file b", "\x00\xa4\x00\x00\x02\x20\x00", 7},
2839+
{"Select EnvHol file c", "\x00\xa4\x00\x00\x02\x20\x01", 7},
2840+
{"- EnvHol1", "\x00\xb2\x01\x04\x1D", 5},
2841+
{"- EnvHol2", "\x00\xb2\x02\x04\x1D", 5},
2842+
{"Select EvLog file", "\x00\xa4\x00\x00\x02\x20\x10", 7},
2843+
{"- EvLog1", "\x00\xb2\x01\x04\x1D", 5},
2844+
{"- EvLog2", "\x00\xb2\x02\x04\x1D", 5},
2845+
{"- EvLog3", "\x00\xb2\x03\x04\x1D", 5},
2846+
{"Select ConList file", "\x00\xa4\x00\x00\x02\x20\x50", 7},
2847+
{"- ConList", "\x00\xb2\x01\x04\x1D", 5},
2848+
{"Select Contra file", "\x00\xa4\x00\x00\x02\x20\x20", 7},
2849+
{"- Contra1", "\x00\xb2\x01\x04\x1D", 5},
2850+
{"- Contra2", "\x00\xb2\x02\x04\x1D", 5},
2851+
{"- Contra3", "\x00\xb2\x03\x04\x1D", 5},
2852+
{"- Contra4", "\x00\xb2\x04\x04\x1D", 5},
2853+
{"- Contra5", "\x00\xb2\x05\x04\x1D", 5},
2854+
{"- Contra6", "\x00\xb2\x06\x04\x1D", 5},
2855+
{"- Contra7", "\x00\xb2\x07\x04\x1D", 5},
2856+
{"- Contra8", "\x00\xb2\x08\x04\x1D", 5},
2857+
{"- Contra9", "\x00\xb2\x09\x04\x1D", 5},
2858+
{"- ContraA", "\x00\xb2\x0a\x04\x1D", 5},
2859+
{"- ContraB", "\x00\xb2\x0b\x04\x1D", 5},
2860+
{"- ContraC", "\x00\xb2\x0c\x04\x1D", 5},
2861+
{"Select Counter file", "\x00\xa4\x00\x00\x02\x20\x69", 7},
2862+
{"- Counter", "\x00\xb2\x01\x04\x1D", 5},
2863+
{"Select LoadLog file a", "\x00\xa4\x00\x00\x00", 5},
2864+
{"Select LoadLog file b", "\x00\xa4\x00\x00\x02\x10\x00", 7},
2865+
{"Select LoadLog file c", "\x00\xa4\x00\x00\x02\x10\x14", 7},
2866+
{"- LoadLog", "\x00\xb2\x01\x04\x1D", 5},
2867+
{"Select Purcha file", "\x00\xa4\x00\x00\x02\x10\x15", 7},
2868+
{"- Purcha1", "\x00\xb2\x01\x04\x1D", 5},
2869+
{"- Purcha2", "\x00\xb2\x02\x04\x1D", 5},
2870+
{"- Purcha3", "\x00\xb2\x03\x04\x1D", 5},
2871+
{"Select SpecEv file a", "\x00\xa4\x00\x00\x00", 5},
2872+
{"Select SpecEv file b", "\x00\xa4\x00\x00\x02\x20\x00", 7},
2873+
{"Select SpecEv file c", "\x00\xa4\x00\x00\x02\x20\x40", 7},
2874+
{"- SpecEv1", "\x00\xb2\x01\x04\x1D", 5},
2875+
{"- SpecEv2", "\x00\xb2\x02\x04\x1D", 5},
2876+
{"- SpecEv3", "\x00\xb2\x03\x04\x1D", 5},
2877+
{"- SpecEv4", "\x00\xb2\x04\x04\x1d", 5},
2878+
};
2879+
transport_14b_apdu_t cmds_v2[] = {
2880+
{"SELECT AID ??", "\x00\xa4\x04\x00\x0b\xa0\x00\x00\x02\x91\xd0\x56\x00\x01\x90\x01", 16},
2881+
{"- Holder1", "\x00\xb2\x01\xe4\x1d", 5},
2882+
{"SELECT AID 1TIC.ICA", "\x00\xa4\x04\x00\x0e\x31\x54\x49\x43\x2e\x49\x43\x41\xd0\x56\x00\x01\x91\x01\x00", 20},
2883+
{"- Contra1", "\x00\xb2\x01\x4c\x1d", 5},
2884+
{"- Contra2", "\x00\xb2\x02\x4c\x1d", 5},
2885+
{"- Contra3", "\x00\xb2\x03\x4c\x1d", 5},
2886+
{"- Contra4", "\x00\xb2\x04\x4c\x1d", 5},
2887+
{"- Contra5", "\x00\xb2\x05\x4c\x1d", 5},
2888+
{"- Contra6", "\x00\xb2\x06\x4c\x1d", 5},
2889+
{"- Contra7", "\x00\xb2\x07\x4c\x1d", 5},
2890+
{"- Contra8", "\x00\xb2\x08\x4c\x1d", 5},
2891+
{"- Counter", "\x00\xb2\x01\xcc\x24", 5},
2892+
{"- ? BC record1", "\x00\xb2\x01\xbc\x1d", 5},
2893+
{"- SpecEv1", "\x00\xb2\x01\xec\x1d", 5},
2894+
{"- ? BC record2", "\x00\xb2\x02\xbc\x1d", 5},
2895+
{"- SpecEv2", "\x00\xb2\x02\xec\x1d", 5},
2896+
{"- ? BC record3", "\x00\xb2\x03\xbc\x1d", 5},
2897+
{"- SpecEv3", "\x00\xb2\x03\xec\x1d", 5},
2898+
{"- ? BC record4", "\x00\xb2\x04\xbc\x1d", 5},
2899+
{"- SpecEv4", "\x00\xb2\x04\xec\x1d", 5},
2900+
{"- ? 0C4C", "\x00\xb2\x0c\x4c\x1d", 5},
2901+
{"- ? B4 record2", "\x00\xb2\x02\xb4\x1d", 5},
2902+
{"- ? B4 record3", "\x00\xb2\x03\xb4\x1d", 5},
2903+
{"- ? B4 record4", "\x00\xb2\x04\xb4\x1d", 5},
2904+
{"- ? B4 record5", "\x00\xb2\x05\xb4\x1d", 5},
2905+
{"- ? B4 record6", "\x00\xb2\x06\xb4\x1d", 5},
2906+
{"- ? B4 record7", "\x00\xb2\x07\xb4\x1d", 5},
2907+
{"- ? B4 record8", "\x00\xb2\x08\xb4\x1d", 5},
2908+
{"- ConList", "\x00\xb2\x01\xf4\x30", 5},
28762909
};
2877-
28782910
bool activate_field = true;
28792911
bool leave_signal_on = true;
28802912
uint8_t response[PM3_CMD_DATA_SIZE] = { 0x00 };
28812913

2882-
for (int i = 0; i < ARRAYLEN(cmds); i++) {
2914+
transport_14b_apdu_t *cmds = old ? cmds_v1 : cmds_v2;
2915+
int cmds_count = old ? ARRAYLEN(cmds_v1) : ARRAYLEN(cmds_v2);
2916+
2917+
for (int i = 0; i < cmds_count; i++) {
28832918

28842919
int user_timeout = -1;
28852920
int resplen = 0;
@@ -2906,8 +2941,7 @@ static int CmdHF14BMobibRead(const char *Cmd) {
29062941
switch_off_field_14b();
29072942
return PM3_ESOFT;
29082943
}
2909-
2910-
PrintAndLogEx(INFO, "%s - %s", cmds[i].desc, sprint_hex(response, resplen));
2944+
PrintAndLogEx(INFO, "%-22s - %s", cmds[i].desc, sprint_hex(response, resplen - 2));
29112945
activate_field = false;
29122946
}
29132947

0 commit comments

Comments
 (0)