我正在尝试使用非接触式OmniKey 5321读卡器读取智能卡信息.
编辑:添加了赏金.
我正在.NET 3.5程序中编写C#3,所以这是一个Windows应用程序.
该卡上印有一些信息,我会假设,卡片数据中存在某些信息(下面有卡片和读卡器的照片.)
该卡上印有以下信息:
1* 00447 21091328-32
使用OmniKey读卡器附带的诊断应用程序时,我会收到以下信息:
Smart Card Name: iCLASS 16KS UID:EE 74 0E 00 FB FF 12 E0 ATR : 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 1A 00 00 00 00 78 Protocol : ISO 15693 (Part 2)
现在,我已经考虑了一些转换:
这是我的问题:
这是照片,如果它给你任何信息.

uniqueidentifier smartcard smartcard-reader winscard iso-15693
有谁知道如何监控智能卡的存在并读取卡的UID值?
是的我在网上尝试过很多例子
但不知道该怎么做.我可以检测卡的存在并且可以单独获取UID,但不知道如何在我的应用程序中组合它们:(.
帮我
如果读卡器中没有卡,我在获取PCSC阅读器序列号时遇到问题.我正在使用winscard.dll和c ++.
以下代码仅适用于读卡器中存在卡的情况.否则,不会检索SCardHandle.我还没有找到任何其他方法来获得SCardHandle.
SCARDHANDLE hCardHandle;
SCARDCONTEXT hSC;
WCHAR pCardReaderName[256];
LONG lReturn;
lReturn = SCardEstablishContext(SCARD_SCOPE_USER, 0, 0, &hSC);
if (lReturn != SCARD_S_SUCCESS)
{
Console::WriteLine("SCardEstablishContext() failed\n");
return;
}
my_select_reader(hSC, pCardReaderName); // just shows reader names in console and requires you to pick one
// connect to smart card
DWORD dwAP;
lReturn = SCardConnect( hSC,
(LPCWSTR)pCardReaderName,
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 | SCARD_PROTOCOL_RAW,
&hCardHandle,
&dwAP );
if ( SCARD_S_SUCCESS != lReturn )
{
Console::WriteLine("Failed SCardConnect\n");
exit(1); // Or other appropriate action.
}
// get …Run Code Online (Sandbox Code Playgroud) 我目前正在对多个智能卡读卡器识别进行一些研究和测试,以确定哪个读卡器连接到哪个 USB 端口。
假设我将读卡器 A 插入 USB 端口 1。通过调用 SCardListReaders 函数,我检索以下友好名称:
- ACS ACR1281 1S 双读卡器 PICC 0
然后我将另一个读卡器(读卡器 B)插入 USB 端口 2。现在我有 2 个读卡器连接到同一台 PC。调用 SCardListReaders 会给我:
- ACS ACR1281 1S 双读卡器 PICC 0
- ACS ACR1281 1S 双读卡器 PICC 1
我知道这些名称是如何生成的(PCSC 智能卡读卡器“友好名称”是如何构造的?)并且我知道以不同顺序插入读卡器(先插入读卡器 B,然后插入读卡器 A)将更改 SCARD_ATTR_DEVICE_UNIT影响友好名称。
基于上述场景,如何确保 PC 始终自动连接到 USB 端口 1 中的 PICC 读卡器,无论其友好名称如何?
任何帮助都感激不尽。谢谢。
我有一张仅支持同步接口的IC存储卡(如SLE5532、SLE5542...等)
我想知道如何编写一个应用程序来读取内存内容、验证 PSC (PIN) 并写入内存。
这种类型的卡不能像微处理器卡那样接受普通的 APDU。在数据表中,它指定以二进制形式发送的命令(所有命令均为 3 字节长度)
我发现一个设计用于与 SCM Reader(基于 MCSCM.dll)配合使用的应用程序,但它无法与我的 OmniKey 读卡器配合使用。
我想知道是否可以构建一个直接调用winsCard API 函数的应用程序,而无需直接使用Reader 的DLL。如果是这样,应该调用哪些正确的函数?
如果不可能,我如何找到 OmniKey 的 API?任何人都可以向我发送适用于 OmniKey 3121 读卡器和同步卡的样本吗?
提前致谢
我正在c++使用Visual Studio 2017 开发应用程序。
我正在使用Windows库winscard。我从一个简单的项目开始,在该项目中,我将调用函数SCardEstablishContext作为读取智能卡所需的第一步。
我正在使用的代码段如下:
LONG resContext = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hSC);
if (resContext != SCARD_S_SUCCESS) {
printf("Failed\n");
printf("Error %X\n", resContext);
}
Run Code Online (Sandbox Code Playgroud)
我所知道的是,此功能使用Windows服务(称为“智能卡”)来获取执行数据库操作(读/写卡)的范围。
不幸的是,这个简单的应用程序SCARD_S_SUCCESS仅在Windows 7环境中有效(即返回代码)。在我测试过的所有Windows 10系统中,返回代码始终0x8010001DL与SCARD_E_NO_SERVICE断言的定义相关联:
智能卡资源管理器未运行。
在Windows 7系统上,该程序无需管理员权限即可工作;在Windows 10系统上,我也尝试使用管理员权限,但错误相同。
在我测试的每个Windows 10系统中,我在测试程序之前都手动启动了“智能卡”服务,并在测试过程中检查了该程序是否仍在运行。
在Windows 7和Windows 10系统中,我都没有连接智能卡读卡器。
winscard.lib我使用的文件带有Microsoft Windows SDK版本10.0.17763.0
要使其与Windows 10兼容,还有其他事情要做?
我正在创建一个 .NET Windows 服务来与智能卡读卡器通信。主要组件是一个名为winscard.dll 的Windows DLL,我在.NET 代码中将其与DLLImport 属性一起使用。在 Windows XP 32 位上一切正常,但是当我在Windows 7 x64上运行它时,我在调用SCardTransmit时收到0x6 ERROR_INVALID_HANDLE结果。应用程序(作为命令行应用程序的服务)可以连接到读卡器,但无法从卡中读取任何内容。
任何想法?
我有以下读卡器HID Omnikey 5325.我有一张名为HIS Proximity的非接触式卡.
此卡上写的号码是1 33593 42101044091-3.
通过读卡,我得到以下ATR十六进制:3B050002F10673
使用以下应用程序,我设法看到以下信息.

我需要提取设施代码和代码以识别卡.
我设法找到以下代码,但我遗漏了几件:
/// <summary>
/// Extract a data item from the Wiegand raw data. The data item usually is something like a card
/// number or facility code.
/// </summary>
/// <param name="format"></param>
/// <param name="identifier"></param>
/// <returns></returns>
public int getData(int format, int identifier)
{
int byteOffset = 0;
if (m_rawWiegandData == null)
{
throw new Exception("no raw Wiegand data available");
}
//SELF-TEST
byte[] testData_H10301 = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个需要读取mifare卡序列号的应用程序,我正在使用的语言是C#.
我是mifare读者编程的新手,所以我很抱歉提出愚蠢的问题.首先,我想知道Mifare UID和Mifare序列号之间是否有不同之处.
我已经设法在WinSCard库的帮助下获得了UID,但是我无法弄清楚如何获得应该是10位数字的卡序列号.
如果你能指出我正确的方向,我很感激.
在此先感谢您的帮助.问候