2013-02-25 25 views
7

Tôi đang cố gắng đọc dữ liệu từ thẻ Visa Paywave không tiếp xúc.đọc thẻ EMV bằng PPSE chứ không phải PSE

Đối với Paywave, tôi phải gửi SELECT bằng PPSE (2PAY.SYS.DDF01) thay vì PSE (1PAY.SYS.DDF01).

Sách EMV 1, mục 11.3.4, bảng 43 chỉ mô tả cách diễn giải đáp ứng cho lệnh SELECT thành công bằng PSE. Có ai biết hoặc có thể giới thiệu tôi đến một nguồn cho thấy làm thế nào để xử lý dữ liệu trả về từ một lệnh SELECT thành công bằng cách sử dụng PPSE?

Dưới đây là yêu cầu APDU tôi:

00A404000e325041592e5359532e444446303100 

Dưới đây là câu trả lời:

6F2F840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A564953412044454249548701019000 

Tôi hiểu thẻ 84, thẻ 85, thẻ BF0C từ các phản ứng. Theo các ví dụ để đọc PSE, tôi sẽ có thể gửi GET OPTIONS OPTIONS (để có được AIP và AFL) với PDOL = null sau phản hồi thành công như sau: 80A80000830000.

Nhưng yêu cầu 80A80000830000 trả về mã lỗi 6985 - Lệnh không được phép; điều kiện sử dụng không hài lòng.

Tôi cũng đã thử đọc tất cả các tệp sau khi chọn thành công PPSE bằng cách duyệt qua từng SFI (0-30) và mỗi bản ghi (0-16) của mỗi SFI. Có, tôi cũng đã thực hiện thay đổi 3 bit và bitwise-OR SFI với 0x4. Nhưng tôi không có dữ liệu.

Tôi bị kẹt, bất kỳ trợ giúp nào giúp tôi nhận được một số thông tin từ thẻ Paywave của tôi sẽ được đánh giá cao!

+2

Bạn đang đề cập đến phiên bản nào của cuốn sách EMV đó?(Tôi cho rằng đó là 4.3 ...) Bạn cũng nhận thấy rằng có [thông số kỹ thuật không tiếp xúc EMV] (http://www.emvco.com/specifications.aspx?id=21) có sẵn từ EMVCo không? – martijno

+0

Có, EMV 4.3. Tôi thậm chí còn không nhận ra cuốn sách thông số kỹ thuật không tiếp xúc từ EMVCo. Gosh, làm thế nào mù có thể được khi tất cả mọi người nghĩ về là mã hóa mã hóa mã hóa. :-) Cảm ơn bạn đã chỉ ra cuốn sách đó, tôi sẽ đọc nó và cho bạn biết tôi đã làm gì sai. – 9999bao

Trả lời

0

Tôi nghĩ thông tin bạn đang tìm kiếm có sẵn từ this VISA website. Nhưng chỉ khi bạn là đối tác được đăng ký và/hoặc được cấp phép của VISA.

EDIT: Nhìn vào kết quả TLV struct dưới BF0C:

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 

Tôi đoán rằng bạn cần phải đầu tiên chọn A0000000031010 trước khi các tùy chọn xử lý.

+0

Bạn có thể đúng. Tôi đã đăng ký với visa ngày hôm qua, vẫn đang chờ quá trình phê duyệt đơn đăng ký. Cảm ơn! – 9999bao

0

Tôi đã chọn ứng dụng 2PAY.SYS.DDF01. khi tôi nên chọn AID = 0xA0000000031010. Có vẻ như không có hồ sơ nào trong ứng dụng 2PAY.SYS.DDF01.

Nhưng đã có 1 bản ghi trong ứng dụng 0xA0000000031010. Sau khi tôi nhận được ứng dụng này, tôi đã thực hiện một READ RECORD, và bản ghi đầu tiên đã cho tôi PAN và tất cả thông tin thẻ tín dụng mà tôi muốn.

Cảm ơn tất cả mọi người cho chiming trong.

+1

Xem câu trả lời của tôi cho một lời giải thích về điều này, 2PAY sẽ trả về một danh sách các AID, nó không thực sự là một AID, và sau đó bạn có nghĩa là để chọn một trong những người trả lại và đọc hồ sơ từ đó. Tuy nhiên bạn chỉ có thể chọn một AID ngay lập tức mà bạn biết là trên đó là những gì bạn đã tìm thấy :) – Peanut

0

Nếu bạn quan tâm đến điều này cho MasterCard là tốt, bạn có thể sử dụng API triangle.io để làm điều này. Nó miễn phí và đọc thẻ không tiếp xúc MasterCard và Visa cho bạn, đó là những gì bạn muốn.

Lưu ý rằng việc đọc tất cả các tệp trực tiếp từ thẻ, trong khi nó sẽ cung cấp cho bạn dữ liệu bạn muốn, không thực sự tuân theo luồng dữ liệu EMV. Sau khi lựa chọn ứng dụng, bạn nên thực hiện "lấy tùy chọn xử lý" và sau đó xây dựng PDOL và phần còn lại của ma thuật.

http://www.triangle.io

Disclaimer: Tôi làm việc cho triangle.io

2

Bạn dường như có dòng chảy trộn lên một chút, bạn muốn:

  • Gửi 1PAY hoặc 2PAY, nó doesn 't thực sự quan trọng đối với tất cả các thẻ tôi đã thử nghiệm. Điều này sẽ trả về một danh sách các AID có sẵn trên thẻ. Cách khác, bạn có thể chỉ cần chọn một AID ngay lập tức nếu bạn biết nó có nhưng thực hành tốt sẽ được kiểm tra đầu tiên.

  • Nhận danh sách các AID được trả về để trả lời 1PAY/2PAY, trong trường hợp của PayWave có thể là A0000000031010 nếu bạn gửi 2PAY nhưng bạn có thể nhận được nhiều hơn nếu bạn gửi 1PAY.

  • Chọn một trong các AID được gửi lại (hoặc một trong những bạn đã biết đang ở trên đó).

  • Sau đó lặp qua các SFI và bản ghi gửi lệnh Đọc Bản ghi để nhận dữ liệu.

Bạn không phải gửi tùy chọn Nhận xử lý trước khi gửi lệnh Đọc bản ghi mặc dù bây giờ là luồng giao dịch bình thường.

+0

1PAY là khác nhau hơn 2PAY. Tôi có một PCSC và một đầu đọc NFC, nếu tôi cố gắng chọn 2PAY sử dụng PCSC của tôi, tôi nhận được lỗi không tìm thấy tệp, và nếu tôi cố gắng chọn 1PAY với NFC tôi sẽ không tìm thấy Tệp. OP cho biết ông đã đọc qua tất cả các hồ sơ, nhưng muốn làm điều đó một cách chính xác bằng cách nhận các tùy chọn xử lý để biết SFI sử dụng. –

+1

Tôi biết chúng khác nhau, chỉ là chỉ ra cho tất cả các thẻ Visa tôi đã kiểm tra bạn có thể gửi một trong hai, và đôi khi chúng thực sự cung cấp thông tin khác nhau trở lại. OP cho biết anh đã đọc tất cả hồ sơ và không nhận được bất kỳ thông tin nào, đó là vì anh ta chưa chọn Visa AID, anh ấy nói anh ấy chỉ có thể gửi GPO ngay sau 2PAY không chính xác, câu trả lời của tôi cố gắng xóa lên. – Peanut

+0

Tôi rất vui vì tôi đã tìm thấy chủ đề này nói chung bởi vì tôi không thể làm cho GPO của tôi hoạt động, và cuối cùng đã tìm ra lý do tại sao ... Bây giờ cho một số đọc nghiêm trọng. –

0

2PAY.SYS.DDF01 là cho không tiếp xúc (ví dụ như NFC) thẻ, trong khi 1PAY .SYS.DDF01 dành cho thẻ liên lạc.

  1. Sau khi thành công (SW1 SW2 = 90 00) đọc PSE, bạn chỉ nên tìm kiếm SFI (thẻ 88) là trường bắt buộc trong mẫu FCI được trả về.

  2. Với SFI làm chỉ mục bắt đầu, bạn sẽ phải đọc các bản ghi bắt đầu từ chỉ mục bắt đầu cho đến khi bạn nhận được 6A83 (RECORD_NOT_FOUND). Ví dụ. nếu SFI của bạn là 1, bạn sẽ làm một readRecord với record_number = 1. Điều đó có lẽ sẽ thành công. Sau đó, bạn progressment record_number đến 2 và làm readRecord một lần nữa. Sự tăng lên đến 3 .... Lặp lại nó cho đến khi bạn nhận được 6A83 là trạng thái của bạn.

  3. Các bản ghi được đọc sẽ là ADF (ít nhất 1). Sau đó, bạn sẽ phải so sánh đọc ADF tên với những gì hỗ trợ thiết bị đầu cuối của bạn và cũng dựa trên ASI (Application Selection Indicator). Cuối cùng bạn sẽ có một danh sách các ADFS thể (danh sách ứng cử viên)

Tất cả các bước trên (1-3) được diễn tả trong chương 12.3.2 Book1 v4.3 của spec EMV.

Bạn sẽ phải thực hiện một lựa chọn cuối cùng (Chương 12,4 Book1)

Đọc cuốn sách đặc tả 1 chương 12,3-12,4 cho tất cả các bước chi tiết.

Các vấn đề liên quan