我想从德国保险健康卡(例如K)读取基本数据,如姓名,地址等。 我有一个scm sdi011读卡器,我使用c#。 我已经从卡/读卡器获得ATR字符串,但我不知道如何继续。 如果有人能告诉我现在该怎么做,那会很好。
这是我的代码:
WinSCard card = new WinSCard();
try {
card.EstablishContext();
card.ListReaders();
string szReader = card.ReaderNames[1];
card.Connect(szReader);
string ATRStr = card.AtrString;
ATRBox.Text = ATRStr;
} catch (WinSCardException exception) {
richTextBox1.Text = exception.WinSCardFunctionName + " Error 0x" + exception.Status.ToString("X08") + ": " + exception.Message;
} finally {
card.Disconnect();
}
答案 0 :(得分:1)
粗略的序列如下(我省略了扩展长度和访问权限):
在下面的方括号中表示可选部分。
sendbuffer必须包含命令APDU,i。即CLA,INS,P1,P2,[LC,data],[LE] 最简单的是,指定LE = 0,从那时起卡片尽可能地发送,你有一个想法,通过哪个值递增P1 / P2。
答案包含[data] SW1 / SW2,因此至少应返回两个字节。如果你得到更少,这可能表明你的命令格式错误并被winscard直接拒绝,而没有被发送到该卡。