使用 WinSCard 库获取 mifare 卡序列号

2024-01-08

我正在开发一个需要读取 Mifare 卡序列号的应用程序,我使用的语言是 C#。

我是 mifare 读卡器编程的新手,所以很抱歉问了愚蠢的问题。 首先我想知道Mifare UID和Mifare序列号是否有不同。

我已经在 WinSCard 库的帮助下设法获取 UID,但我不知道如何获取卡序列号,该序列号应该是 10 位数字。

如果您能为我指明正确的方向,我将不胜感激。

先谢谢您的帮助。 问候


SCardTransmit 方法的 C# 签名

[StructLayout(LayoutKind.Sequential)]
public struct SCARD_IO_REQUEST
{
   public int dwProtocol;
   public int cbPciLength;
}

[DllImport("winscard.dll")]
public static extern int SCardTransmit(int hCard, ref SCARD_IO_REQUEST pioSendRequest,    ref byte SendBuff, int SendBuffLen, ref SCARD_IO_REQUEST pioRecvRequest,
ref byte RecvBuff, ref int RecvBuffLen);

读取mifare卡UID的代码示例

private SmartcardErrorCode GetUID(ref byte[] UID)
    {
        byte[] receivedUID = new byte[10];
        UnsafeNativeMethods.SCARD_IO_REQUEST request = new UnsafeNativeMethods.SCARD_IO_REQUEST();
        request.dwProtocol = 1; //SCARD_PROTOCOL_T1);
        request.cbPciLength =    System.Runtime.InteropServices.Marshal.SizeOf(typeof(UnsafeNativeMethods.SCARD_IO_REQUEST));
        byte[] sendBytes = new byte[] { 0xFF, 0xCA, 0x00, 0x00, 0x04 }; //get UID command      for Mifare cards

        int outBytes = receivedUID.Length;
        int status = SCardTransmit(_hCard, ref request, ref sendBytes[0], sendBytes.Length,  ref request, ref receivedUID[0], ref outBytes);

        UID = receivedUID.Take(8).ToArray(); 
        return status;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WinSCard 库获取 mifare 卡序列号 的相关文章

  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • .Net应用程序设置路径

    默认情况下 Windows 应用程序设置保存在该目录中 USERPROFILE Local Settings Application Data
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • 在.rdlc报告的底部设置一个文本框

    我在 rdlc 报告中使用 tablix 有一个文本框 其中包含文本 签名 我想将此文本框放置在报告最后一页的底部 就在页脚之前 我已经用谷歌搜索了这个解决方案 但没有找到满意的结果 我的环境是VS2010 framework 4 0 有什
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 线程睡眠和Windows服务

    我正在开发一个 Windows 服务 该服务存在一些问题Thread Sleep 所以我想我会尝试使用计时器 因为这个问题建议 在 Windows 服务中使用 Thread Sleep https stackoverflow com que
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a

随机推荐

  • 仅在 WooCommerce 前端显示基于作者用户角色的产品

    我有一个供应商市场 我只想显示由特定作者用户角色 供应商 创建的产品 澄清一下 我并不是想改变用户角色看到的内容 仅尝试显示供应商创建的产品 I found 隐藏产品仅显示分配给 woocommerce 中某些用户角色的产品 https s
  • Fargate 与 Lambda,何时使用哪个?

    我对整个无服务器领域还很陌生 并且正在尝试了解何时使用 Fargate 与 Lambda 我知道 Fargate 是 ECS 的无服务器子集 Lambda 也是无服务器的 但由事件驱动 但我希望能够向其他熟悉容器但不太了解 AWS 和无服务
  • GUI 应用程序的跨平台 C 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 免费 易于学习 使用 用于 GUI 应用程序的跨平台 C 库 我在寻找 Qt 吗 额外问题 我可以在 M
  • NServiceBus 警告“找不到消息类型的处理程序”

    我是 NServiceBus 的新手 正在尝试开发一个发布者和单独的订阅者 我使用的是 v3 2 0 0 到目前为止 它工作正常 发布者和订阅者都在 NServiceBus 主机中运行 我的消息全部发布正常 但订阅者间歇性地无法接收它们 发
  • 加密通过 Amazon S3 发送的大流

    我想加密流 然后使用 Amazon S3 发送它 我使用旧代码并有两个重要参数 非加密InputStream及其长度 这很重要 因为 AmazonS3Client 希望在上传流之前了解流的长度 加密流并不是一件非常困难的任务 InputSt
  • 使用闪亮时输出桑基图不正确

    当我在常规 R 会话中创建桑基图时 输出看起来不错 工具提示显示连接之间的箭头 require rCharts require rjson links lt matrix unlist rjson fromJSON file http bo
  • AVPlayer 播放、暂停和缓冲问题

    我的应用程序播放流媒体视频 但是当它缓冲时 播放器进入暂停模式 我必须手动将其再次设置为播放模式 我的 AVPlayer 类中有以下代码来处理这种情况 但它确实不行 在ViewDidLoad方法中 playerItem addObserve
  • 如何分发Eclipse中构建的java项目?

    到目前为止 我一直在使用Netbeans IDE对于 Java 应用程序 要分发 Netbeans 中制作的应用程序 我只需单击clean and build它将应用程序打包到 jar 文件中 该文件位于dist目录 现在我已经做了一个ja
  • 如何将已写入 xml 文件的 OpenCV Mat 转换回图像?

    我编写了一些代码来生成一个 xml 文件 其中包含来自 OpenCV 中的 Mat 文件的 RGB 数据 我想根据 xml 文件中的数据点在 MATLAB 中重新创建此图像 然而 我不确定 xml 文件的格式 因为当我打开它时 它看起来像这
  • Java(Android):如何在没有位图的情况下缩放可绘制对象?

    我需要缩放按钮的背景图像 但无法将其转换为位图 这是现在的代码 int height 50 int width 80 Button b new Button this b setBackgroundResource R drawable b
  • 即使负载因子限制没有被打破,为什么 std::unordered_set 也会被重新哈希?

    根据参考参数 http en cppreference com w cpp container unordered set emplace 仅当新元素数量大于时才会发生重新散列max load factor bucket count 此外
  • UIGestureRecognizer 通过 UIScrollView

    当可以水平滚动时 我需要用 3 个手指检测 UIScrollView 上的左右滑动 我需要用 1 根和 2 根手指保留所有交互 是否可以在不重写所有手势识别的情况下做到这一点 谢谢 这是可能的 向您的 UIScrollView 添加滑动手势
  • 如何在bash脚本中循环?

    我在 Linux 下的 bash 脚本中有以下几行 mkdir max15 mkdir max14 mkdir max13 mkdir max12 mkdir max11 mkdir max10 将它们放入循环的语法如何 这样我就不必编写数
  • Windbg内存映射?

    如何在 Windbg 中获得类似于 Ollydbg 内存映射功能的内存映射 我想查看按顺序显示加载到每个范围的内容的地址空间列表 最好带有指示的内存保护 这是 Ollydbg 内存映射的屏幕截图 address准确显示此信息 它可以在用户模
  • 为什么当 Count 返回 0 时 HasMoreResults 返回 true?

    我正在使用 Microsoft Azure DocumentDB v 1 5 2 尚未准备好升级 IDocumentQuery ExecuteNextAsync Count 0 but IDocumentQuery HasMoreResul
  • 无法以二进制数据形式获取 PDF 文件

    我正在尝试从以下位置获取 PDF 文件 URL https 域名 xyz id download https domain name xyz id download 其中它不指向直接的 pdf 文件 并且每个唯一的文件都会被下载 解释特定的
  • 将 LoDash 与 EmberCLI 结合使用

    有谁有使用 LoDash 的 Ember CLI 构建的 简单 ember app 项目的工作示例吗 例如 我想在我的路由和控制器中使用 lodash someLodashFunc 我还没有在网上看到任何帖子 文章对如何做到这一点给出清晰的
  • MySQL 订单问题

    我有一个非常简单的 SQL 查询 但缺少一些东西 而且我还没有找到这个问题的答案 问题是我选择了一些具有多个 id 的字段 并且我希望结果按此特定顺序排序 查询如下 SELECT content FROM content WHERE use
  • Gsettigs 和 dconf 设置热键

    Hello 我需要在 ubuntu 12 10 中设置一个热键 我使用 gsettings dconf gsettings set org gnome settings daemon plugins media keys custom ke
  • 使用 WinSCard 库获取 mifare 卡序列号

    我正在开发一个需要读取 Mifare 卡序列号的应用程序 我使用的语言是 C 我是 mifare 读卡器编程的新手 所以很抱歉问了愚蠢的问题 首先我想知道Mifare UID和Mifare序列号是否有不同 我已经在 WinSCard 库的帮