2017-04-20 55 views
0

我正在嘗試使用pc/sc透明會話和收發數據對象從sony felica卡讀取數據。在PC/SC響應中獲取額外的字節82 00

我正的響應是針對讀取未加密命令是

C0 03 00 90 00 92 01 00 96 02 00 00 97 82 00 +數據

但根據協議,該反應應該是

C0 03 00 90 00 92 01 00 96 02 00 00 97 +數據

我無法找出最後82 00 appende d在卡片的迴應中。

現在,當我嘗試用卡進行身份驗證,我得到

C0 03 01 6F 01 90 00

這是在PC/SC一個錯誤。我想解決這些額外的字節82 00,我相信這將解決所有需要認證和加密的命令的問題。

回答

1

響應數據爲BER-TLV編碼(見PC/SC 2.02, Part 3)。

在BER-TLV編碼有幾種可能來編碼標籤0x97與數據0xD0D1,例如兩個八位字節:

  • 97|02|D0D1 - 短形式(see parsed

  • 97|8102|D0D1 - 長一個長度爲八位位組的形式(see parsed

  • 97|820002|D0D1 - long form with兩個字節長度爲(see parsed

  • 97|83000002|D0D1 - 長形式三個字節長度爲(see parsed

  • ...

你的讀者是使用兩個字節發送長度ICC響應數據對象(這是完全有效的)。

您應該正確解析響應...祝您好運!

PS:以上手段,你的截斷響應的Data部分仍包含響應長度(即Len|Data)一個額外的字節

+0

是的,你是正確的,但爲什麼只有相互驗證命令失敗了FeliCa的? –

+0

你能用一個完整的APDU跟蹤來更新你的問題嗎?你正在使用哪一個閱讀器(因爲6F01不是由PC/SC定義的 - 最近的一個是「XX 6F 00」 - *數據對象XX失敗,沒有精確的診斷*)? – vlp