Mifare Classic 1K 的锁定机制

2023-12-22

Mifare Classic 1K的流程是

  1. 轮询标签
  2. 验证这些标签
  3. 如果身份验证成功,则进行读/写。

我已经完成了这些过程,并且还从特定扇区读取和写入数据。

命令为轮询标签 is

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,
                (byte) 0x00, (byte) 0x04, (byte) 0xD4, (byte) 0x4A,
                (byte) 0x01, (byte) 0x00 }

认证命令 is

new byte[] { (byte) 0xFF, (byte) 0x86, (byte) 0x00,
                (byte) 0x00, (byte) 0x05, (byte) 0x01,(byte) 0x00, (byte) 0x04, 
                                    (byte) 0x60,(byte) 0x00 };

这里“(byte)0x01”是扇区1

And 写入扇区 1、块 5 是

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,(byte) 0x00, (byte) 0x15, (byte) 0xD4,
             (byte)    0x40,(byte) 0x01, (byte) 0xA0, (byte) 0x05,(byte) 0x01, (byte) 0x02, 
             (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08, 
             (byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E, 
             (byte) 0x0F, (byte) 0x10};

Here

(byte) 0x01, (byte) 0x02, (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08,(byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E,(byte) 0x0F,(byte) 0x10

是写入扇区 1 的块 5 的数据。

从扇区 1 和块 5 读取命令是

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,
                (byte) 0x00, (byte) 0x05, (byte) 0xD4, (byte) 0x40,
                (byte) 0x01, (byte) 0x30, (byte) 0x05 };

我的相关完整代码在这里...... https://stackoverflow.com/a/26052363/3073945

我的问题是如何“锁定/只读”特定扇区的块?


MIFARE 卡每个扇区的验证密钥和访问条件位于该扇区的最后一个块(部门拖车)。您可以使用常规写入命令使用新的访问条件和身份验证密钥更新此块。

部门预告片如下所示:

+-----------------------------+--------------+----+-----------------------------+
|  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 | 11 | 12 | 13 | 14 | 15 |
+-----------------------------+--------------+----+-----------------------------+
|            Key A            | Access Bits  | GP |            Key B            |
|          (6 bytes)          |  (3 bytes)   | B  |          (6 bytes)          |
+-----------------------------+--------------+----+-----------------------------+

因此访问位位于字节 6-8 中,如下所示:

        +-------+-------+-------+-------+-------+-------+-------+-------+
        | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 4 | Bit 5 | Bit 6 | Bit 7 |
        +-------+-------+-------+-------+-------+-------+-------+-------+
Byte 6: | nC2_3 | nC2_2 | nC2_1 | nC2_0 | nC1_3 | nC1_2 | nC1_1 | nC1_0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+
Byte 7: |  C1_3 |  C1_2 |  C1_1 |  C1_0 | nC3_3 | nC3_2 | nC3_1 | nC3_0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+
Byte 8: |  C3_3 |  C3_2 |  C3_1 |  C3_0 |  C2_3 |  C2_2 |  C2_1 |  C2_0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+

其中 nCx_y = not Cx_y 并且“C1_x, C2_x, C3_x”是块 x 的访问条件:

  • C1_3、C2_3、C3_3:扇区尾部(该扇区中的块 3)
  • C1_2、C2_2、C3_2:该扇区的块 2
  • C1_1、C2_1、C3_1:该扇区的块 1
  • C1_0、C2_0、C3_0:该扇区的块0

您可以在 MIFARE 1K 数据表中找到可能的访问条件的详细列表:https://www.nxp.com/docs/en/data-sheet/MF1S50YYX_V1.pdf https://www.nxp.com/docs/en/data-sheet/MF1S50YYX_V1.pdf

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

Mifare Classic 1K 的锁定机制 的相关文章

随机推荐

  • Qt QSystemTrayIcon 不发送激活信号

    我试图在这里复制 Qt 系统托盘示例 http doc qt io archives 4 6 desktop systray html http doc qt io archives 4 6 desktop systray html 除了
  • iOS 7下蓝牙键盘如何支持上下方向键

    在 iOS 6 下 当使用外部蓝牙键盘以及在模拟器中工作时 UITextView 会遵循向上和向下箭头键 在 iOS 7 下 向上和向下箭头键不再执行任何操作 但左右箭头键仍然可以移动光标 iOS 7 下的 UITextView 如何支持外
  • 对“MainWindow vtable”的未定义引用

    我正在跟进Qt 的指南 https wiki qt io How to Use QPushButton用于使用QPushButton 我完全按照指南的建议进行操作 但出现编译错误 src mainwindow o In function M
  • 是否可以使用 bpython 作为完整的调试器?

    我想使用bpython http bpython interpreter org 用于调试的解释器 我的问题类似于 是否可以从代码进入ipython https stackoverflow com questions 1126930 is
  • 在 Ubuntu 18.04 上安装 Nodejs v18

    我们使用 Azure Pipelines 和使用 Ubuntu 18 04 作为操作系统的构建代理 我目前正在尝试将管道中的 Nodejs 版本从 16 更新到 18 通过使用 Nodejs 的安装非常简单Azure Pipelines 中
  • array[1][2] 和 array[1,2] 有什么区别? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 如果我的二维数组是 int array 4 5 1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16 17
  • Shopify Order API 是否允许按嵌套字段进行过滤?

    我正在使用shopify api gem API 文档 http api shopify com order html表明你可以瘦下来ShopifyAPI Order通过告诉它要返回哪些字段来响应 例如 以下内容将仅返回id属性 以及shi
  • `无法在继承的 Activity 中创建处理程序...Looper.prepare()`

    我有一个游戏Activity 活动 A 适用于所有代码 然后我创建一个新的Activity 活动 B 对于我的新游戏模式 extendsActivity A 然而 当遇到 Toast 行时 Activity B 突然抛出异常 Activit
  • 使用 Ruby/Erlang 迭代生成排列,无需递归或堆栈

    我想生成列表的所有排列 但我想在将它们添加到堆栈或存储在任何地方之前过滤掉一些排列 我将根据一些自定义的临时规则过滤掉排列 换句话说 我想生成一个大列表 50 300 个元素 的排列列表 但我想在这个过程中丢弃大部分生成的排列 我知道排列的
  • iOS 9 应用程序在多任务处理中的提交问题需要所有方向

    我正在使用 Xcode 7 将我的应用程序推送到应用程序商店 并且我的应用程序适用于 iPhone 和 iPad 但它仅支持纵向和横向 这是我的错误 如何提交特定方向的应用程序 例如仅保留纵向和横向 有解决问题的建议吗 如果您不想启用多任务
  • UML 类图:对实例的引用?

    我的类图中的某些类需要引用其他类或其自身的特定实例 我应该像在对象图中一样对它们进行建模还是有更好的选择 一般来说 由于对象图本身就是类图 因此可以将类图和对象图结合起来吗 thanks UML2引入复合结构图正是为了解决这个问题 在复合结
  • Angular.js 和 Express 的路由错误

    我正在尝试使用 angular js 围绕 parent root 进行路由 如果我使用锚链接等 则该路由有效 又名纯粹从角度处理的路由 例如 具有 parent createstudent 的 href 的链接可以工作但是 当我在网址栏中
  • 如何确定 matplotlib 轴对象的投影(2D 或 3D)?

    在 Python 的 matplotlib 库中 很容易在创建时指定坐标区对象的投影 import matplotlib pyplot as plt from mpl toolkits mplot3d import Axes3D ax pl
  • C# 是否需要检查某项是否有值以及某项是否大于 0?

    在项目中工作时 编码员在检查中经常这样做 首先 他检查是否可为空int有一个值 然后他检查它是否大于 0 为什么 如果一项检查 如果大于 0 就足够了 为什么还要进行两项检查 既然空值不大于0 那不是多余的吗 该代码可能是多余的 If i
  • 将经过身份验证的用户依赖项注入到我的存储库类的正确方法

    我正在使用具有存储库模式的服务层 控制器对服务层有依赖 服务层对存储库有依赖 我必须将登录的用户信息传递到存储库层以进行授权 并尝试确定将用户信息注入存储库的最佳方法 考虑到我似乎有一个广泛的注入链 controller gt servic
  • 从字符串创建嵌套列表结构

    我有一个由 n 个子字符串组成的字符串 它可能看起来像这样 string lt c A AA A BB A BB AAA B AA B BB B CC 该字符串中的每个子组件均通过 与其他子组件分隔 这里 第一级由值 A 和 B 组成 第二
  • iPhone 中 NSCachesDirectory 的大小

    我如何获取文件夹 NSCachesDirectory 的大小 即 Library Cache 我想知道这个文件夹的大小 以便我最终可以清除它 thanks 编辑 这是我的代码 NSDictionary attributes NSFileMa
  • 从包含一对整数的列表中删除重复元素的复杂性

    我有一个包含整数对的列表示例 gt 1 2 2 3 2 1 我想从中删除重复的元素 就像 1 2 和 2 1 相同 这是我的代码 gt class Pair
  • iOS 错误:“Project”没有可见的 @interface 声明选择器“alloc”

    我正在初始化一个对象 如下所示 Project Project Project alloc init 这是项目类的代码 项目 h import
  • Mifare Classic 1K 的锁定机制

    Mifare Classic 1K的流程是 轮询标签 验证这些标签 如果身份验证成功 则进行读 写 我已经完成了这些过程 并且还从特定扇区读取和写入数据 命令为轮询标签 is new byte byte 0xFF byte 0x00 byt