5-SIM資料互動之-C0(GET RESPONSE)
C0-GET RESPONSE
C0即獲取fcp(File Control Parameters 檔案控制引數)裡面的值,該指令一般在A4之後執行,執行A4選擇資料夾時,SIM卡會返回該檔案下fcp的長度,如:61 29,該值即為C0需要讀的位元組長度
C0指令比較固定,00 C0 00 00 XX(XX代表要讀取的長度)
1.正常讀取
SIM卡返回的資料以C0開始,以9000結束,長度為傳入的XX(fcp檔案的內容長度)。
=>00 A4 00 04 02
<=A4
=>3F 00
<=61 29 //返回長度0x29
=>00 C0 00 00 29 //讀取0x29的fcp資料
<=C0 62278202782183023F00A507800171C00200018A01058B032F0602C60C90016083010183018183010A 9000 //90 00正常結束
2.讀取少於/00原有資料
當讀C0時,如果A4選擇時,返回61 29,但是沒有讀取完全,如0x00 0xc0 0x00 0x00 0x20,則只會返回0x16個位元組回來,並且返回剩餘的位元組數61開始(要讀取00位元組時,則以6C開始)這時你需要再次讀取。
=>00 A4 00 04 02
<=A4
=>3F 00
<=61 29 //返回長度0x29
=>00 C0 00 00 20 //只讀取0x20的fcp資料
<=C0 62278202782183023F00A507800171C00200018A01058B032F0602C60C900160 6109 //返回結束符為61 09,告訴你還有0x09個位元組需要讀取
=>00 C0 00 00 20 //這時候必須去讀取0x09個位元組,不然還是會報錯
<=61 09 //返回剩餘位元組數,61開始
=>00 C0 00 00 00 //這時候必須去讀取0x09個位元組,不然還是會報錯
<=6C 09 //返回剩餘位元組數,6C開始
=>00 C0 00 00 09
<=83010183018183010A 9000 //當用0x09讀取時,則返回剩餘的fcp資料,並90 00結束
3.讀取多於原有資料
當讀C0時,如果A4選擇時,返回61 29,但是卻想讀取更多的內容,如0x00 0xc0 0x00 0x00 0x30,則會返回該檔案的剩餘大小6C開始,需要以實際大小來讀取
=>00 A4 00 04 02
<=A4
=>3F 00
<=61 29 //返回長度0x29
=>00 C0 00 00 30 //讀取0x30的fcp資料,超過0x29
<=6C 29 //返回剩餘位元組數
=>00 C0 00 00 29 //讀取0x29的fcp資料
<=C0 62278202782183023F00A507800171C00200018A01058B032F0602C60C90016083010183018183010A 9000 //90 00正常結束
4.已經讀取完C0,卻要再讀C0
當C0的資料已經被讀取完成,此時再發C0指令進行內容的讀取,則會返回6F00。如果想再次讀取資料,只能用A4再選擇一次該檔案才可以。
=>00 A4 00 04 02
<=A4
=>3F 00
<=61 29 //返回長度0x29
=>00 C0 00 00 30 //讀取0x30的fcp資料,超過0x29
<=6C 29 //返回剩餘位元組數
=>00 C0 00 00 29 //讀取0x29的fcp資料
<=C0 62278202782183023F00A507800171C00200018A01058B032F0602C60C90016083010183018183010A 9000 //90 00正常結束
=>00 C0 00 00 29 //再次讀取0x29的fcp資料
<=6F 00 //6F 00資料已經讀取完成
5.未讀取完C0,卻要讀B0/B2
無論上面的讀少或讀多C0的資料,只要沒有正常結束則無法再執行檔案對於的屬性內容,
=>00 A4 00 04 02
<=A4
=>2F E2
<=61 19 //返回長度0x19
=>00 C0 00 00 19 //讀取0x19的fcp資料
<=C0 62178202412183022FE28A01058B032F06018002000A880110 9000
=>00 B0 00 00 0A
<=B0 9868200B326101550494 9000 //90 00正常結束
=>00 A4 00 04 02
<=A4
=>2F E2
<=61 19 //返回長度0x19
=>00 C0 00 00 11 //讀取0x19的fcp資料
<=C0 62178202412183022FE28A01058B032F06 6108
=>00 B0 00 00 0A
<=B0 9868200B326101550494 9000 //90 00正常結束
其實是可以正常讀取B0/B2的,這時你是不是就覺得可以不用正確讀取C0了,反正讀到B0/B2。
這種想法就是錯的,C0執行的指令比較單一,但是其指令返回的資料確實非常關鍵,裡面的內容決定了該檔案的特性,下一步能執行什麼操作
6.fcp內容分析
示例1:B0
2FE2:62178202412183022FE28A01058B032F06018002000A880110
所屬位元組 | 原始內容 | 內容分析 |
---|---|---|
1 | 62 | FCP模組標籤 |
2 | 17 | FCP模組的長度(十進位制:23) |
3 | 82 | 檔案描述符標籤 |
4 | 02 | 檔案描述符長度(十進位制:2) |
5 | 41 | 檔案描述符(工作EF 透明檔案 共享檔案) |
6 | 21 | 檔案描述符資料編碼 |
7 | 83 | 檔案識別符號標籤 |
8 | 02 | 檔案識別符號長度(十進位制:2) |
9-10 | 2FE2 | 檔案識別符號 |
11 | 8A | 生命週期標籤 |
12 | 01 | 生命週期長度(十進位制:1) |
13 | 05 | 生命週期(操作狀態-啟用) |
14 | 8B | 安全特性標籤 |
15 | 03 | 安全特性長度(十進位制:3) |
16-17 | 2F06 | EF_ARR的檔案識別符號 |
18 | 04 | EF_ARR中對應的記錄數(十進位制:4) |
19 | 80 | 檔案大小標籤 |
20 | 02 | 檔案大小長度(十進位制:2) |
21-22 | 000A | 檔案大小(十進位制:10) |
23 | 88 | 短檔案識別符號標籤 |
24 | 01 | 短檔案識別符號長度(十進位制:1) |
25 | 10 | 短檔案識別符號 |
示例2:B2
2F06:621A82054221002C0783022F068A01058B032F060480020134880130
所屬位元組 | 原始內容 | 內容分析 |
---|---|---|
1 | 62 | FCP模組標籤 |
2 | 1A | FCP模組的長度(十進位制:26) |
3 | 82 | 檔案描述符標籤 |
4 | 05 | 檔案描述符長度(十進位制:5) |
5 | 42 | 檔案描述符(工作EF 線性固定檔案 共享檔案) |
6 | 21 | 檔案描述符資料編碼 |
7-8 | 002C | 記錄長度(十進位制:44) |
9 | 07 | 記錄個數(十進位制:7) |
10 | 83 | 檔案識別符號標籤 |
11 | 02 | 檔案識別符號長度(十進位制:2) |
12-13 | 2F06 | 檔案識別符號 |
14 | 8A | 生命週期標籤 |
15 | 01 | 生命週期長度(十進位制:1) |
16 | 05 | 生命週期(操作狀態-啟用) |
17 | 8B | 安全特性標籤 |
18 | 03 | 安全特性長度(十進位制:3) |
16-17 | 2F06 | EF_ARR的檔案識別符號 |
18 | 04 | EF_ARR中對應的記錄數(十進位制:4) |
19 | 80 | 檔案大小標籤 |
20 | 02 | 檔案大小長度(十進位制:2) |
21-22 | 0134 | 檔案大小(十進位制:10) |
23 | 88 | 短檔案識別符號標籤 |
24 | 01 | 短檔案識別符號長度(十進位制:1) |
25 | 30 | 短檔案識別符號 |
第五個位元組即檔案描述符
始內容 | 內容分析 |
---|---|
41 | 透明檔案 B0 |
42 | 線性固定檔案 B2 |
46 | 迴圈檔案 B2 |
78 | MF/DF C0/F2 |
相關文章
- 資料互動
- 前後端資料互動(八)——請求方法 GET 和 POST 區別後端
- WPF和js互動 WebBrowser資料互動JSWeb
- Flask資料互動Flask
- 資料互動筆記筆記
- Response響應字元資料字元
- Android FlatBuffers資料互動Android
- Ajax 資料非同步互動非同步
- jQueryUI之互動jQueryUI
- Response響應位元組資料
- Charles 修改響應(Response)資料
- 前後端資料交換互動後端
- Hive 與 ElasticSearch 的資料互動HiveElasticsearch
- Android與WebView資料互動AndroidWebView
- SSH前後端資料互動後端
- Android ReactNative資料互動AndroidReact
- Vue元件之間的資料傳遞(通訊、互動)詳解Vue元件
- PyTorch資料和NumPy資料之間的互操作PyTorch
- python與mysql資料庫互動PythonMySql資料庫
- 前後端資料互動利器--Protobuf後端
- Beego框架學習--(核心:資料互動)Go框架
- 所有權背後的資料互動
- ActionScript 學習筆記(資料互動)筆記
- SqlSugar與資料庫互動官網SqlSugar資料庫
- Python|Python互動之mongoDB互動詳解PythonMongoDB
- C++ 與 QML 之間進行資料互動的幾種方法C++
- c#之datagridview列表與oracle資料庫的互動測試C#ViewOracle資料庫
- AngularJS Directive 隔離 Scope 資料互動AngularJS
- App資料加密方式 -北京銳智互動APP加密
- 老生常談,聊聊前端的資料互動前端
- PHP與Python進行資料互動PHPPython
- RN與原生互動(二)——資料傳遞
- AJAX資料互動中的同步非同步非同步
- [乾貨]資料互動與本地儲存
- 每日互動大資料五一出行洞察大資料
- 前後端資料的互動--如何實現資料加密?--02後端加密
- 【微信小程式】微信小程式掉進的坑之與後臺資料互動微信小程式
- DRF之Response原始碼分析原始碼