SIM卡開機log沒有上電log和APDU指令

不識卡問題(modem的log沒有UIM卡相關的)

高通某些穿戴設備的芯片通過一些編譯選項把UIM的log disable了(爲了節省內存/緩存),disable的情況下,不僅僅把UIM的logdisable,還把CM/MMOC/WMS/REG等的log disable了。

修改編譯選項(modem_proc\build\ms\cust8909.xxxx.h)

檢查NV70210,是否設置了ENABLE_UIM_HOTSWAP = true,如果是,設置爲false。

使用default log mask 並且加延(NV 4205的57項)時抓取UIM開機的log

log會顯示 Uim power up @ 1.8V和MMGSDI_CARD_INSERTED_EVT,slot:0x1這些字樣!

 

 

一個APDU可以是一個命令,也可以是命令的響應。

命令APDU的一般格式: CLA     INS     P1      P2      P3          Data

響應APDU的一般格式: Data                                    SW1     SW2

各個字節的意義如下: CLA: 是指令類型,GSM應用爲0xA0。

INS:每個命令的指令編碼,下面有定義。

P1,P2,P3:指令參數。0xFF是個無效值,P3給出了數據單元的長度。對於傳送命令,當SIM    流出數據時,P3=0表示數據的長度爲256,而SIM  流入數據時P3=0表  示沒有數據。

SW1,SW2:命令結果是否成功的狀態。

指令的5種情況

情況1:沒有輸入/沒有輸出 CLA     INS     P1 P2 P3(lgth=0x00) SW1=0x90    SW2=0x00

情況2:沒有輸入/輸出長度已知 CLA     INS         P1 P2 P3(長度值lgth)  DATA(長度爲lgth)   SW1=0x90     SW2=0x00

情況3:沒有輸入/輸出長度未知 CLA     INS     P1 P2 P3(lgth=0) SW1=0x9F    SW2=lgth1 GET RESPONSE CLA     INS         P1 P2 P3(lgth2)  DATA(長度leth1<=leth2)    SW1=0x90     SW2=0x00

情況4:有輸入/沒有輸出 CLA      INS         P1 P2 P3(lgth) DATA(長度爲lgth)   SW1=0x90    SW2=0

情況5:有輸入/輸出長度未知或已知 CLA     INS         P1 P2 P3(lgth) DATA(長度爲lgth)       SW1=0x9F    SW2=lgth1 GET RESPONSE CLA     INS         P1 P2 P3(lgth2)  DATA(長度lgth2<=lgth1)    SW1=0x90    SW2=0x00

11.11中命令集如下: 這裏寫圖片描述

(1) SELECT 選擇一個文件的方法:

    ATR(復位)之後,MF將取消被選擇,並且成爲當前的目錄。每個文件必須通過SELECT功能通過下面的規則來選擇。
    這時,你可以選擇MF,也可以選擇MF目錄下的DF和MF目錄下EF,若想要選擇某一DF中的EF,必須先選擇該DF成爲當前目錄,再選擇DF中的EF。

例:

//SELECT
A0 A4 00 00 02 3F00
9F 17

//SELECT
A0 A4 00 00 02 7F10
9F 17

//SELECT
A0 A4 00 00 02 6F3A
9F 0F

CLA=A0:表示GSM應用 INS=A4:表示SELECT P1P2=0000:表示參數 P3=02:表示輸入文件ID的長度 3F00,7F10,6F3A表示選擇的文件ID SW1=9F  SW2=17(23)/0F(15)表示命令正確結束,其中SW2表示響應值長度

(2) STATUS

此功能返回與當前文件目錄(根目錄或應用目錄)有關的信息,此操作不會改變當前EF內容;
這條命令可在任何時候使用,以獲得與GSM應用有關的信息;
輸入:無;
輸出:文件標識符,總的可用存儲空間,CHV激活/屏蔽,CHV狀態和其他的GSM詳細數據

例:

//SELECT
A0 A4 00 00 02 7F10
9F 22
//STAUTS
A0 F2 00 00 22
90 00
00005DD07F1002000000000015B10114060085838583000083830000000000000000

 

CLA=A0:表示GSM應用 INS=F2:表示STATUS P1P2=0000:表示參數 P3=22:表示返回響應值長度(從SELECT的返回值中獲取) SW1=90  SW2=00 表示命令正確結束 00005DD07F1002000000000015B10114060085838583000083830000000000000000表示返回的響應值(響應的參數/數據同使用SELECT命令選中MF和DF時的響應數據相同。)

(3) GET RESPONSE

此功能返回與當前文件目錄(根目錄或應用目錄)有關的信息
這條命令可在任何時候使用,以獲得與GSM應用有關的信息;
輸入:無;
輸出:文件標識符,總的可用存儲空間,CHV激活/屏蔽,CHV狀態和其他的GSM詳細數據
STATUS與GET RESPONSE:區別在於STATUS命令不適用與EF,其中P3所需要的len爲select響應的參數SW2

//SELECT
A0 A4 00 00 02 3F00
9F 17

//SELECT
A0 A4 00 00 02 7F10 
9F 17

//SELECT
A0 A4 00 00 02 6F3A
9F0F

//GET RESPONSE
A0 C0 00 00 0F
0000 0AF0 6F3A 04 00 11 FF 44 01 02 01 1C
9000

0000 0AF0 6F3A 04 00 11 FF 44 01 02 01 1C
//--00 00 保留
//--0A F0 佔用的空間大小,表示7000字節
//--6F 3A 選中File的ID
//--04 文件類型,見11.11 9.3
//----'00':保留 '01':MF '02':DF '04':EF
//----此文件類型 EF
//--00 見11.11 9.2.1 detail 3
//----對於二進制和記錄文件,該字節爲保留字節。對於循環文件,除b6(0 based)外所有的bit都是保留的,b6=1表示當前所選擇的循環文件可以執行INCREASE命令
//--11 FF 44 訪問權限
//--01 文件狀態,見11.11 9.3
//----+--+--+--+--+--+--+--+--+
//----|b7|b6|b5|b4|b3|b2|b1|b0|
//----+--+--+--+--+--+--+--+--+
//---- | | | | | | | +-b0=0文件無效, b0=1文件有效
//---- | | | | | | +----RFU
//---- | | | | | | b2=0: 當文件無效時不允許讀和寫
//---- | | | | | +-------b2=1: 當文件無效時允許讀和寫
//---- +--+--+--+--+----------RFU
//----本字節表示文件有效,當文件無效時不允許讀/寫
//--02 後面數據的長度,表示2
//----01 文件結構,見11.11 9.3
//------'00':二進制文件(透明文件) '01':記錄文件(線性定長) '03':循環文件
//------此文件結構記錄文件
//----1C 記錄長度,見11.11 9.2.1 detail 4

 

(4)READ BINARY

此功能允許SIM卡從當前透明文件中讀取字節串;
如果不滿足EF文件READ指令的訪問准予條件,SIM卡拒絕該功能;
輸入:字節串的偏移地址和長度;
輸出:字節串;

 

//SELECT  A0 A4 00 00 02  2F05 9F 0F

//GET RESPONSE A0 C0 00 00 0F 0000 0008 2F05 04 00 01FF55 01 02 0000 90   00

//READ BINARY A0 B0 00 00 08 6573656E66727074 90 00

//READ BINARY A0 B0 00 01 04 73656E66 90 00

CLA=A0:表示GSM應用 INS=B0:表示READ BINARY P1P2=0000:表示高低位偏移 P3=08:表示返回響應值長度(從SELECT的返回值中獲取) (當P1P2=0001,P3=04時表示向右偏移1位,返回長度爲4的響應值) SW1=90  SW2=00 表示命令正確結束

(5)UPDATE BINARY

此功能用於更新當前透明文件的字節串;
如果不滿足EF文件UPDATE指令的訪問准予條件,SIM卡拒絕該功能;
輸入:字節串的偏移地址和長度;
輸出:無;

 

//SELECT  A0 A4 00 00 02  2F05 9F 0F

//GET RESPONSE A0 C0 00 00 0F 0000 0008 2F05 04 00 01FF55 01 02 0000 90   00

//READ BINARY A0 B0 00 00 08 6573656E66727074 90 00          

//UPDATE BINARY A0 D6 00 00 08 0000000000000001 90 00

//READ BINARY A0 B0 00 00 08 0000000000000001 90 00 更新成功!

(6)READ RECORD 此功能用於讀取線性固定文件或循環文件的記錄; 如果不滿足EF文件READ指令的訪問准予條件,SIM卡拒絕該功能。若操作失敗,記錄指針不改變; 讀指令定義了4種模式: CURRENT模式(04):讀當前的記錄,記錄指針不變; ABSOLUTE模式(04+記錄號):讀給定記錄號的記錄,記錄指針不變; NEXT模式(02):功能執行前記錄指針加一,然後讀取指針指向的記錄。 PREVIOUS模式(03):功能執行前記錄指針減一,然後讀取指針指向的記錄。 輸入:模式、記錄號(ABSOLUTE模式)、記錄長度; 輸出:記錄;

//SELECT A0A4000002 3F00 9F17

//SELECT A0A4000002 7F10 9F17

//SELECT A0A4000002 6F3A 9F0F

//GET RESPONSE A0C000000F 00000AF06F3A040011FF440102011C 9000

//READ RECORD A0B201041C 80aabbccddFFFFFFFFFFFFFFFFFF07812143658709F1FFFFFFFFFFFF 9000

(7)UPDATE RECORD

向線性定長記錄的EF文件或循環記錄EF文件中寫入一條完整的記錄;
如果不滿足EF文件UPDATE指令的訪問准予條件,SIM卡拒絕該功能。若操作失敗,記錄指針不改變;

 

//SELECT A0A4000002 3F00 9F17

//SELECT A0A4000002 7F10 9F17

//SELECT A0A4000002 6F3A 9F0F

//GET RESPONSE A0C000000F 00000AF06F3A040011FF440102011E 9000

//UPDATE RECORD A0DC01041E 

輸入數據: 111110000000000000000000000000000000000000000000000000000000

90 00

 

APDU= ApplicationProtocol data unit, 是智能卡與智能卡讀卡器之間傳送的信息單元, (給智能卡發送的命令)指令(ISO 7816-4規範有定義)    CLA   INS  P1  P2 Lc  Data  Le

其中CLA爲指令類別;INS爲指令碼;P1、P2爲參數;Lc爲Data的長度;Le爲希望響應時回答的數據字節數,0表最大可能長度。

00A4040000:發送一個空的選擇命令,獲取卡和主安全域的信息。00A40400是select選擇對應的CLA,INS,P1和P2,後面2位是發送的文件名的長度。此命令使用文件名或應用標示符來選擇IC卡內DF(專用文件)或EF(基本文件)。

80此命令創建卡片文件系統,80CA9F7F00:獲取CPLC信息。8050XXXXX:  雙向認證並建立會話密鑰。

非接觸CPU卡應該支持以下與應用無關的常用指令命令:

編號

指令

指令類別

指令碼

功能描述

 

APPLICATION UNBLOCK

84

18

應用解鎖

 

APPLICATION BLOCK

84

1E

應用鎖定

 

CARD BLOCK

84

16

卡片鎖定

 

EXTERNAL AUTHENTICATE

00

82

外部認證

 

GET CHALLENGE

00

84

取隨機數

 

INTERNAL AUTHENTICATE

00

88

內部認證

 

PIN UNBLOCK

84

24

個人密碼解鎖

 

READ  BINARY

00

B0

讀二進制文件內容

 

READ  RECORD

00

B2

讀記錄文件指定內容

 

SELECT

00

A4

選擇文件

 

UPDATE  BINARY

00/04

D6

寫二進制文件

 

UPDATE  RECORD

00/04

DC

寫記錄文件

 

VERIFY

00

20

驗證口令

 

編號

指令

指令類別

指令碼

功能描述

 

CHANGE/PIN RELOAD

80

5E

重裝/修改個人密碼

 

CREDIT FOR LOAD

80

52

圈存

 

DEBIT FOR PURCHASE/ CASE WITHDRAW/UNLOAD

80

54

消費/取現/圈提

 

GET BALANCE

80

5C

讀餘額

 

GET TRANSCATION PROVE

80

5A

取交易認證

 

INITIALIZE FOR XXX

80

50

初始化XXX交易

 

UNBLOCK

80

2C

解鎖被鎖住的口令

 

UPDATE OVERDRAW LIMIT

80

58

修改透支限額

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章