gpt4 book ai didi

swift - 使用 CryptoTokenKit 读取 NFC (Mifare Classic 1K)

转载 作者:行者123 更新时间:2023-11-30 13:45:03 27 4
gpt4 key购买 nike

我正在尝试使用 ACR122 读取/写入 Milfare Classic 1k NFC 卡(由工厂提供)。我可以检测到该卡,但无法与其通信。

我已经在网络上搜索了好几天,试图找到任何有关此问题的文档(但没有成功)。

我知道这些卡是加密的,但肯定有默认密码或重置卡的方法吗?

这是我到目前为止所拥有的:

card.beginSessionWithReply { (result, error) -> Void in
print("Began card session: \(result) \(card.valid) \(card.currentProtocol)");

let aid : [UInt8] = [0xFF, 0x86, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x0, 0x00];
var data = NSData(bytes: aid, length: aid.count)
card.transmitRequest(data, reply: { (data, error) -> Void in
print("Transmit: data: \(data) error \(error)");
})

data = "Hi".dataUsingEncoding(NSUTF8StringEncoding)!;
card.sendIns(0xFF, p1: 0x00, p2: 0x00, data: data, le: nil, reply: { (data, uint, error) -> Void in
if let e = error {
if (e.code == TKErrorCode.CorruptedData.rawValue) {
print("CorruptedData");
} else {
print("error code: \(error?.code)");
}
}
print("Sendins: reply:\(data) int:\(uint) error:\(error)");
})
}

输出:

["ACS ACR122U"]
Card is valid
ATR: <3b8f8001 804f0ca0 00000306 03000100 0000006a>
Began card session: true true TKSmartCardProtocol(rawValue: 2)
error code: Optional(-2)
Sendins: reply:nil int:0 error:Optional(Error Domain=CryptoTokenKit Code=-2 "(null)")
Transmit: data: Optional(<6300>) error nil

任何建议都会很棒(包括任何能够读取/写入这些卡的 OS X 软件)。

最佳答案

我不确定 CryptoTokenKit,但我确信我们可以根据 ACR122 Application Programming Interface 使用 PICC 命令读/写 Mifare 卡。

您必须执行以下步骤。

  1. 将身份验证 key 加载到阅读器。 enter image description here

  2. 进行身份验证。

您需要提供要读取的 block 集并为这些 block 提供身份验证 key 。有关 Mifare classic 1k 内存结构的更多信息,请参阅数据表 here

enter image description here

然后您可以发出读写 APDU 命令(可以在 ACR 122 API 文档中找到)。干杯!

关于swift - 使用 CryptoTokenKit 读取 NFC (Mifare Classic 1K),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35057927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com