⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.txt

📁 基于cortex arm stm32f103RB的智能卡(SmartCard)程序。编译通过
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;149          }
;;;150          /* Send APDU Command for ICCID selection */
;;;151          SC_ADPU.Header.CLA = SC_CLA_GSM11;
00016c  702e              STRB     r6,[r5,#0]  ; SC_ADPU
;;;152          SC_ADPU.Header.INS = SC_SELECT_FILE;
00016e  f885f885          STRB     r8,[r5,#1]  ; SC_ADPU
;;;153          SC_ADPU.Header.P1 = 0x00;
000172  70ac              STRB     r4,[r5,#2]  ; SC_ADPU
;;;154          SC_ADPU.Header.P2 = 0x00;
000174  70ec              STRB     r4,[r5,#3]  ; SC_ADPU
;;;155          SC_ADPU.Body.LC = 0x02;
;;;156    
;;;157          for(i = 0; i < SC_ADPU.Body.LC; i++)
000176  4b8d              LDR      r3,|L3.940|
000178  f885f885          STRB     r9,[r5,#4]  ; SC_ADPU
00017c  1d1b              ADDS     r3,r3,#4
00017e  613c              STR      r4,[r7,#0x10]  ; i
                  |L3.384|
;;;158          {
;;;159            SC_ADPU.Body.Data[i] = ICCID[i];
000180  6938              LDR      r0,[r7,#0x10]  ; i
000182  5c19              LDRB     r1,[r3,r0]
000184  182a              ADDS     r2,r5,r0
000186  7151              STRB     r1,[r2,#5]
000188  1c40              ADDS     r0,r0,#1
00018a  6138              STR      r0,[r7,#0x10]  ; i
00018c  7929              LDRB     r1,[r5,#4]  ; SC_ADPU
00018e  4281              CMP      r1,r0
000190  d8f6              BHI      |L3.384|
000192  e003              B        |L3.412|
                  |L3.404|
;;;160          }
;;;161          while(i < LCmax) 
;;;162          {    
;;;163            SC_ADPU.Body.Data[i++] = 0;
000194  1829              ADDS     r1,r5,r0
000196  714c              STRB     r4,[r1,#5]
000198  1c40              ADDS     r0,r0,#1
00019a  6138              STR      r0,[r7,#0x10]  ; i
                  |L3.412|
00019c  2814              CMP      r0,#0x14
00019e  d3f9              BCC      |L3.404|
;;;164          }
;;;165          SC_ADPU.Body.LE = 0;
;;;166    
;;;167          SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
0001a0  4a80              LDR      r2,|L3.932|
0001a2  766c              STRB     r4,[r5,#0x19]  ; SC_ADPU
0001a4  f1a2f1a2          SUB      r1,r2,#0x1a
0001a8  a802              ADD      r0,sp,#8
0001aa  f7fff7ff          BL       SC_Handler
                  |L3.430|
;;;168        }
;;;169    
;;;170        /* Read Binary in ICCID --------------------------------------------------*/
;;;171        if(SC_Responce.SW1 == SC_EF_SELECTED)
0001ae  f89bf89b          LDRB     r0,[r11,#0x14]  ; SC_Responce
0001b2  289f              CMP      r0,#0x9f
0001b4  d10d              BNE      |L3.466|
;;;172        {
;;;173          SC_ADPU.Header.CLA = SC_CLA_GSM11;
0001b6  702e              STRB     r6,[r5,#0]  ; SC_ADPU
;;;174          SC_ADPU.Header.INS = SC_READ_BINARY;
0001b8  20b0              MOVS     r0,#0xb0
0001ba  7068              STRB     r0,[r5,#1]  ; SC_ADPU
;;;175          SC_ADPU.Header.P1 = 0x00;
0001bc  70ac              STRB     r4,[r5,#2]  ; SC_ADPU
;;;176          SC_ADPU.Header.P2 = 0x00;
0001be  70ec              STRB     r4,[r5,#3]  ; SC_ADPU
;;;177          SC_ADPU.Body.LC = 0x00;
0001c0  712c              STRB     r4,[r5,#4]  ; SC_ADPU
;;;178    
;;;179          SC_ADPU.Body.LE = 10;
0001c2  200a              MOVS     r0,#0xa
;;;180    
;;;181          SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
0001c4  4a77              LDR      r2,|L3.932|
0001c6  7668              STRB     r0,[r5,#0x19]  ; SC_ADPU
0001c8  f1a2f1a2          SUB      r1,r2,#0x1a
0001cc  a802              ADD      r0,sp,#8
0001ce  f7fff7ff          BL       SC_Handler
                  |L3.466|
;;;182        }
;;;183    
;;;184        /* Select GSMDir ---------------------------------------------------------*/    
;;;185        if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED)
0001d2  f8bbf8bb          LDRH     r0,[r11,#0x14]  ; SC_Responce
0001d6  ba40              REV16    r0,r0
0001d8  4550              CMP      r0,r10
0001da  d12d              BNE      |L3.568|
;;;186        {
;;;187          /* Copy the ICCID File content into ICCID_Content buffer */
;;;188          for(i = 0; i < SC_ADPU.Body.LE; i++)
0001dc  4a71              LDR      r2,|L3.932|
0001de  613c              STR      r4,[r7,#0x10]  ; i
0001e0  3a2d              SUBS     r2,r2,#0x2d
0001e2  7e6b              LDRB     r3,[r5,#0x19]
0001e4  4620              MOV      r0,r4
0001e6  e004              B        |L3.498|
                  |L3.488|
;;;189          {
;;;190            ICCID_Content[i] =  SC_Responce.Data[i];
0001e8  f81bf81b          LDRB     r1,[r11,r0]
0001ec  5411              STRB     r1,[r2,r0]
0001ee  1c40              ADDS     r0,r0,#1
0001f0  6138              STR      r0,[r7,#0x10]  ; i
                  |L3.498|
0001f2  4283              CMP      r3,r0
0001f4  d8f8              BHI      |L3.488|
;;;191          }
;;;192          /* Send APDU Command for GSMDir selection */ 
;;;193          SC_ADPU.Header.CLA = SC_CLA_GSM11;
0001f6  702e              STRB     r6,[r5,#0]  ; SC_ADPU
;;;194          SC_ADPU.Header.INS = SC_SELECT_FILE;
0001f8  f885f885          STRB     r8,[r5,#1]  ; SC_ADPU
;;;195          SC_ADPU.Header.P1 = 0x00;
0001fc  70ac              STRB     r4,[r5,#2]  ; SC_ADPU
;;;196          SC_ADPU.Header.P2 = 0x00;
0001fe  70ec              STRB     r4,[r5,#3]  ; SC_ADPU
;;;197          SC_ADPU.Body.LC = 0x02;
;;;198    
;;;199          for(i = 0; i < SC_ADPU.Body.LC; i++)
000200  4b6a              LDR      r3,|L3.940|
000202  f885f885          STRB     r9,[r5,#4]  ; SC_ADPU
000206  1c9b              ADDS     r3,r3,#2
000208  613c              STR      r4,[r7,#0x10]  ; i
                  |L3.522|
;;;200          {
;;;201            SC_ADPU.Body.Data[i] = GSMDir[i];
00020a  6938              LDR      r0,[r7,#0x10]  ; i
00020c  5c19              LDRB     r1,[r3,r0]
00020e  182a              ADDS     r2,r5,r0
000210  7151              STRB     r1,[r2,#5]
000212  1c40              ADDS     r0,r0,#1
000214  6138              STR      r0,[r7,#0x10]  ; i
000216  7929              LDRB     r1,[r5,#4]  ; SC_ADPU
000218  4281              CMP      r1,r0
00021a  d8f6              BHI      |L3.522|
00021c  e003              B        |L3.550|
                  |L3.542|
;;;202          }
;;;203          while(i < LCmax) 
;;;204          {    
;;;205            SC_ADPU.Body.Data[i++] = 0;
00021e  1829              ADDS     r1,r5,r0
000220  714c              STRB     r4,[r1,#5]
000222  1c40              ADDS     r0,r0,#1
000224  6138              STR      r0,[r7,#0x10]  ; i
                  |L3.550|
000226  2814              CMP      r0,#0x14
000228  d3f9              BCC      |L3.542|
;;;206          }
;;;207          SC_ADPU.Body.LE = 0;
;;;208    
;;;209          SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
00022a  4a5e              LDR      r2,|L3.932|
00022c  766c              STRB     r4,[r5,#0x19]  ; SC_ADPU
00022e  f1a2f1a2          SUB      r1,r2,#0x1a
000232  a802              ADD      r0,sp,#8
000234  f7fff7ff          BL       SC_Handler
                  |L3.568|
;;;210        }
;;;211    
;;;212        /* Select IMSI -----------------------------------------------------------*/    
;;;213        if(SC_Responce.SW1 == SC_DF_SELECTED)
000238  f89bf89b          LDRB     r0,[r11,#0x14]  ; SC_Responce
00023c  289f              CMP      r0,#0x9f
00023e  d133              BNE      |L3.680|
;;;214        {
;;;215          SC_ADPU.Header.CLA = SC_CLA_GSM11;
000240  702e              STRB     r6,[r5,#0]  ; SC_ADPU
;;;216          SC_ADPU.Header.INS = SC_SELECT_FILE;
000242  f885f885          STRB     r8,[r5,#1]  ; SC_ADPU
;;;217          SC_ADPU.Header.P1 = 0x00;
000246  70ac              STRB     r4,[r5,#2]  ; SC_ADPU
;;;218          SC_ADPU.Header.P2 = 0x00;
000248  70ec              STRB     r4,[r5,#3]  ; SC_ADPU
;;;219          SC_ADPU.Body.LC = 0x02;
;;;220    
;;;221          for(i = 0; i < SC_ADPU.Body.LC; i++)
00024a  4b58              LDR      r3,|L3.940|
00024c  f885f885          STRB     r9,[r5,#4]  ; SC_ADPU
000250  1d9b              ADDS     r3,r3,#6
000252  613c              STR      r4,[r7,#0x10]  ; i
                  |L3.596|
;;;222          {
;;;223            SC_ADPU.Body.Data[i] = IMSI[i];
000254  6938              LDR      r0,[r7,#0x10]  ; i
000256  5c19              LDRB     r1,[r3,r0]
000258  182a              ADDS     r2,r5,r0
00025a  7151              STRB     r1,[r2,#5]
00025c  1c40              ADDS     r0,r0,#1
00025e  6138              STR      r0,[r7,#0x10]  ; i
000260  7929              LDRB     r1,[r5,#4]  ; SC_ADPU
000262  4281              CMP      r1,r0
000264  d8f6              BHI      |L3.596|
000266  e003              B        |L3.624|
                  |L3.616|
;;;224          }
;;;225          while(i < LCmax) 
;;;226          {    
;;;227            SC_ADPU.Body.Data[i++] = 0;
000268  1829              ADDS     r1,r5,r0
00026a  714c              STRB     r4,[r1,#5]
00026c  1c40              ADDS     r0,r0,#1
00026e  6138              STR      r0,[r7,#0x10]  ; i
                  |L3.624|
000270  2814              CMP      r0,#0x14
000272  d3f9              BCC      |L3.616|
;;;228          }
;;;229          SC_ADPU.Body.LE = 0;
;;;230    
;;;231          SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
000274  4a4b              LDR      r2,|L3.932|
000276  766c              STRB     r4,[r5,#0x19]  ; SC_ADPU
000278  f1a2f1a2          SUB      r1,r2,#0x1a
00027c  a802              ADD      r0,sp,#8
00027e  f7fff7ff          BL       SC_Handler
;;;232        }
;;;233    
;;;234        /* Get Response on IMSI File ---------------------------------------------*/    
;;;235        if(SC_Responce.SW1 == SC_EF_SELECTED)
000282  f89bf89b          LDRB     r0,[r11,#0x14]  ; SC_Responce
000286  289f              CMP      r0,#0x9f
000288  d10e              BNE      |L3.680|
;;;236        {
;;;237          SC_ADPU.Header.CLA = SC_CLA_GSM11;
00028a  702e              STRB     r6,[r5,#0]  ; SC_ADPU
;;;238          SC_ADPU.Header.INS = SC_GET_RESPONCE;
00028c  20c0              MOVS     r0,#0xc0
00028e  7068              STRB     r0,[r5,#1]  ; SC_ADPU
;;;239          SC_ADPU.Header.P1 = 0x00;
000290  70ac              STRB     r4,[r5,#2]  ; SC_ADPU
;;;240          SC_ADPU.Header.P2 = 0x00;
000292  70ec              STRB     r4,[r5,#3]  ; SC_ADPU
;;;241          SC_ADPU.Body.LC = 0x00;
000294  712c              STRB     r4,[r5,#4]  ; SC_ADPU
;;;242          SC_ADPU.Body.LE = SC_Responce.SW2;
000296  f89bf89b          LDRB     r0,[r11,#0x15]  ; SC_Responce
;;;243    
;;;244          SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
00029a  4a42              LDR      r2,|L3.932|
00029c  7668              STRB     r0,[r5,#0x19]  ; SC_ADPU
00029e  f1a2f1a2          SUB      r1,r2,#0x1a
0002a2  a802              ADD      r0,sp,#8
0002a4  f7fff7ff          BL       SC_Handler
                  |L3.680|
;;;245        }
;;;246    
;;;247        /* Read Binary in IMSI ---------------------------------------------------*/
;;;248        if(CHV1Status == 0x00)
0002a8  68f8              LDR      r0,[r7,#0xc]  ; CHV1Status
0002aa  2800              CMP      r0,#0
;;;249        {
;;;250          if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED)
0002ac  f8bbf8bb          LDRH     r0,[r11,#0x14]  ; SC_Responce
0002b0  ba40              REV16    r0,r0
0002b2  d11d              BNE      |L3.752|
0002b4  4550              CMP      r0,r10
0002b6  d13f              BNE      |L3.824|
;;;251          {
;;;252            /* Enable CHV1 (PIN1) ------------------------------------------------*/
;;;253            SC_ADPU.Header.CLA = SC_CLA_GSM11;
0002b8  702e              STRB     r6,[r5,#0]  ; SC_ADPU
;;;254            SC_ADPU.Header.INS = SC_ENABLE;
0002ba  2028              MOVS     r0,#0x28
0002bc  7068              STRB     r0,[r5,#1]  ; SC_ADPU
;;;255            SC_ADPU.Header.P1 = 0x00;
0002be  70ac              STRB     r4,[r5,#2]  ; SC_ADPU
;;;256            SC_ADPU.Header.P2 = 0x01;
0002c0  2001              MOVS     r0,#1
0002c2  70e8              STRB     r0,[r5,#3]  ; SC_ADPU
;;;257            SC_ADPU.Body.LC = 0x08;
0002c4  2008              MOVS     r0,#8
;;;258     
;;;259            for(i = 0; i < SC_ADPU.Body.LC; i++)
0002c6  4b39              LDR      r3,|L3.940|

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -