读取 Mifare Classic 1k 标签的挑战随机数

问题描述 投票:0回答:1

对于一个研究项目,我想阅读 Mifare Classic 1k 标签在身份验证过程的第一阶段返回的挑战随机数。

论文中,我发现了以下有效阅读器和标签之间的通信日志片段(用 Proxmark 嗅探):

图中,消息#7到#10对应于认证。 读写器的认证请求为60 04 d1 3d (#07)。第一个字节 60 代表使用密钥 A 的身份验证请求。对于使用密钥 B 的身份验证,第一个字节必须是 61。第二个字节表示读取器想要对块 4 进行身份验证。请注意,块 4 是扇区 1 的一部分,并且因此,这是对扇区 1 的身份验证请求。最后两个字节是 CRC 字节。

由于 LFSR 会生成随机数,因此该挑战随机数应该是随机的,但一个已知的漏洞是,相同的挑战随机数返回得相当频繁(如果不断进行身份验证请求,则返回 +- 4 次/小时),并且挑战随机数为如果在卡通电后立即发出请求,则为常量。 (尚不确定开机是否指将卡轻触读卡器)。我想通过执行大量身份验证请求并分析记录的质询随机数,在使用 1k 标签(我没有密钥)的旧公共交通卡上展示此漏洞。

在我的设置中,我有一个 1k 标签、一个 ACR122U 读卡器、一台带有 PC/SC 的 Windows 计算机,我使用 javax.smartcardio 库将 APDU 命令发送到卡。我知道 Mifare 标签本身不使用 APDU,而是由阅读器从 APDU 生成的专有命令。

据我了解,使用 APDU,在身份验证命令中我已经必须指定密钥号本身。读取器(或者我认为实际上是 PS/CS?)然后处理身份验证过程,就像它自动处理防冲突阶段一样。这样,我的设置就太抽象了,我无法检索我感兴趣的卡返回的挑战随机数。有没有办法与标签建立更底层的通信,所以我只能做身份验证阶段的第一步吗? (对扇区发出认证请求并接收标签的挑战随机数?)

提前非常感谢!

apdu mifare nonce pcsc
1个回答
0
投票

通常,当您从卖家处购买开发包时,您会获得带有 (MIFARE) 阅读器的较低级别 API。当然,您会在很大程度上放弃标准化 API,但这就是您在低级别使用专有协议时所得到的。

© www.soinside.com 2019 - 2024. All rights reserved.