@@ -2719,32 +2719,32 @@ static int CmdHF14BCalypsoRead(const char *Cmd) {
2719
2719
CLIParserFree (ctx );
2720
2720
2721
2721
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 },
2748
2748
};
2749
2749
2750
2750
/*
@@ -2802,7 +2802,7 @@ static int CmdHF14BCalypsoRead(const char *Cmd) {
2802
2802
continue ;
2803
2803
}
2804
2804
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 ));
2806
2806
activate_field = false;
2807
2807
}
2808
2808
@@ -2819,67 +2819,102 @@ static int CmdHF14BMobibRead(const char *Cmd) {
2819
2819
);
2820
2820
void * argtable [] = {
2821
2821
arg_param_begin ,
2822
+ arg_lit0 ("o" , "old" , "for old cards" ),
2822
2823
arg_param_end
2823
2824
};
2824
2825
CLIExecWithReturn (ctx , Cmd , argtable , true);
2826
+ bool old = arg_get_lit (ctx , 1 );
2825
2827
CLIParserFree (ctx );
2826
2828
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 },
2876
2909
};
2877
-
2878
2910
bool activate_field = true;
2879
2911
bool leave_signal_on = true;
2880
2912
uint8_t response [PM3_CMD_DATA_SIZE ] = { 0x00 };
2881
2913
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 ++ ) {
2883
2918
2884
2919
int user_timeout = -1 ;
2885
2920
int resplen = 0 ;
@@ -2906,8 +2941,7 @@ static int CmdHF14BMobibRead(const char *Cmd) {
2906
2941
switch_off_field_14b ();
2907
2942
return PM3_ESOFT ;
2908
2943
}
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 ));
2911
2945
activate_field = false;
2912
2946
}
2913
2947
0 commit comments