Xác thực trên trang web bằng thẻ thông minh trong python


8

Vì vậy, tôi có một thẻ thông minh được cung cấp bởi công ty trông giống như thẻ tín dụng có chip. Thẻ này đăng nhập vào một trang web sau khi thẻ được đưa vào đầu đọc thẻ.

Bây giờ tôi phải viết một chương trình bằng python có thể đọc thẻ và đăng nhập vào trang web đó bằng Requestsmô-đun. Tôi đã cố gắng tìm ra cách lấy dữ liệu xác thực này từ thẻ bằng tập lệnh python và sau đó sử dụng dữ liệu này nhưng tôi đã thành công một phần. Tôi đã cài đặt pyscard:

from smartcard.System import readers
from smartcard.util import toHexString

r=readers()
print(r)

connection = r[0].createConnection()
connection.connect()
SELECT = [0xA0, 0x88, 0x00, 0x00] # CLA, INS, P1, P2
DF_TELECOM = [ 0x02, 0x7F, 0x10]  # Lc, Data, Le
data, sw1, sw2 = connection.transmit( SELECT + DF_TELECOM )

Cho đến nay tôi có thể truyền dữ liệu và lấy một số dữ liệu từ thẻ. Tôi đã gửi lệnh 88 trong INS (Nguồn: ISO 7816) dành cho một số loại xác thực nội bộ (Tôi giả sử dữ liệu xác thực này được sử dụng để đăng nhập trên trang web) nhưng tôi nhận được phản hồi bên dưới:

data = []
sw1 = 110
sw2 = 00

Tôi không thể tìm thấy ý nghĩa của phản hồi này trong ISO 7816. Ai đó có thể cho tôi biết liệu tôi có phương pháp hay gợi ý phù hợp để tiếp tục từ đây không? Tóm lại, tôi muốn biết làm thế nào để đăng nhập vào trang web bằng kịch bản python và thẻ thông minh?


Phản hồi của bạn về cơ bản là 6E00, có nghĩa là "Lớp không được hỗ trợ". Câu hỏi của tôi là "Bạn có biết đây là thẻ nào không?". Bạn có thể chia sẻ ở đây ATR của thẻ.
vikky

Đây là ATR: 3B D2 18 00 81 31 FE 58 C9 03 16. Nhưng tôi không biết làm thế nào nó sẽ giúp ??
Anudocs

ATR chỉ để biết về thẻ. Bạn có bất kỳ hướng dẫn APDU cho giao tiếp.
vikky

Không. BTW có phải là cách đúng để xác thực webiste?
Anudocs

Thẻ của bạn có sử dụng CardOS 5.x không? Nếu vậy, bạn đã xem xét điều này? github.com/OpenSC/OpenSC/issues
Cuộc sống phức tạp

Câu trả lời:


0

Về cơ bản, phản hồi bạn nhận được về cơ bản là "6E00" có nghĩa là "Lớp không được hỗ trợ", chỉ cần thay thế giá trị "INS" bằng 0x00 và bạn sẽ ổn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.