簡體   English   中英

使用PPSE而不是PSE讀取EMV卡

[英]reading EMV card using PPSE and not PSE

我正試圖從非接觸式Visa Paywave卡上讀取數據。

對於Paywave,我必須使用PPSE(2PAY.SYS.DDF01)而不是PSE(1PAY.SYS.DDF01)提交SELECT。

EMV第1冊,第11.3.4節,表43僅描述了如何使用PSE解釋成功SELECT命令的響應。 有沒有人知道或者可以引用我一個來源,它顯示如何使用PPSE處理從成功的SELECT命令返回的數據?

這是我的請求APDU:

00A404000e325041592e5359532e444446303100

這是回復:

6F2F840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A564953412044454249548701019000

我理解標簽84 ,標簽85 ,從響應中標記BF0C 根據讀取PSE的示例,我應該能夠在成功響應之后發送GET PROCESSION OPTIONS(獲取AIP和AFL)PDOL = null,如下所示: 80A80000830000

但請求80A80000830000返回錯誤代碼6985 - 不允許命令; 使用條件不滿意。

我還嘗試通過遍歷每個SFI(0-30)和每個SFI的每個記錄(0-16)成功選擇PPSE來讀取所有文件。 是的,我也進行了3位移位,並使用0x4對SFI進行按位或運算。 但我沒有數據。

我被卡住了,任何幫助我從我的Paywave卡獲取一些信息的幫助將不勝感激!

你似乎把流量混淆了一點,你想:

  • 發送1PAY或2PAY,對我測試的所有卡片實際上並不重要。 這將返回卡上可用的AID列表。 或者你可以直接選擇一個AID,如果你知道它在那里,但好的做法是先檢查。

  • 獲取響應1PAY / 2PAY返回的AID列表,在PayWave的情況下,如果您發送2PAY,這可能是A0000000031010但如果您發送1PAY可能會獲得更多。

  • 選擇一個發回的AID(或者您已經知道的AID)。

  • 然后遍歷SFI並記錄發送讀取記錄命令以獲取數據。

您不必在發送“讀取記錄”命令之前發送“獲取處理選項”,即使現在這是正常的事務流程。

我認為您所尋找的信息可從此VISA網站獲取 但前提是您是VISA的注冊和/或許可合作伙伴。

編輯:在BF0C下查看生成的TLV結構:

tag=0xBF0C, length=0x1A
    tag=0x61, length=0x18
        tag=0x4F, length=0x07, value=0xA0000000031010 // looks like an AID to me
        tag=0x50, length=0x0A, value="VISA DEBIT"
        tag=0x87, length=0x01, value=0x01

我猜你需要在獲得處理選項之前首先選擇A0000000031010

我正在選擇應用程序2PAY.SYS.DDF01。 什么時候我應該選擇AID = 0xA0000000031010。 看起來應用程序2PAY.SYS.DDF01下沒有記錄。

但申請表0xA0000000031010下有1條記錄。 我拿到這個應用程序后,我執行了READ RECORD,第一條記錄給了我PAN和我想要的所有信用卡信息。

謝謝大家的歡呼聲。

如果您對MasterCard感興趣,可以使用triangle.io的API來執行此操作。 它是免費的,為您閱讀MasterCard和Visa非接觸式卡,這是您想要的。

請注意,直接讀取卡上的所有文件,雖然它會為您提供所需的數據,但並不是真正遵循EMV數據流。 選擇應用程序后,您應該執行“獲取處理選項”,然后構建PDOL和剩下的魔法。

http://www.triangle.io

免責聲明:我為triangle.io工作

2PAY.SYS.DDF01用於非接觸式(例如NFC)卡,而1PAY.SYS.DDF01用於接觸卡。

  1. 成功(SW1 SW2 = 90 00)讀取PSE后,您應該只搜索SFI(標簽88),它是返回的FCI模板中的必填字段。

  2. 使用SFI作為起始索引,您必須從起始索引開始讀取記錄,直到獲得6A83(RECORD_NOT_FOUND)。 例如,如果您的SFI為1,您將使用record_number = 1執行readRecord。 那可能會成功。 然后你將record_number增加到2並再次執行readRecord。 增加到3 ....重復它直到你得到6A83作為你的狀態。

  3. 讀取的記錄將是ADF(至少為1)。 然后,您必須將讀取的ADF名稱與終端支持以及ASI(應用程序選擇指示符)進行比較。 最后,您將獲得可能的ADF列表(候選列表)

所有上述步驟(1-3)都記錄在EMV規范的第12.3.2章Book1 v4.3中。

你必須做出最后的選擇(第12.4章書1)

閱讀規范書1章12.3 - 12.4了解所有詳細步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM