cmdwtf / Odiin

Attempts at nRF52840 ISO 14443-A magic!
https://cmd.wtf/projects#odiin
BSD Zero Clause License
125 stars 21 forks source link

Disney Infinity Emulator Correct Link #93

Open NBAPJ opened 4 years ago

NBAPJ commented 4 years ago

Here is a link to his YouTube channel. He has a few videos posted.

https://m.youtube.com/channel/UC8ZgKmNX4Xp3EdWzJrgvFvw

His name is obiima on YouTube

bettse commented 3 years ago

1) he provides very few details publicly 2) DI uses Mifare Mini, which aren't NFC Forum compatible, and I suspect cannot be emulated by the nRF52

nitz commented 3 years ago

The MIFARE Mini are just MIFARE Classics with smaller footprints and EEPROM sizes, aren't they? If so, they are still ISO 14443-A, which is the 'umbrella' spec that NFC Forum Type X tags fall under. The way Odiin's emulator is currently structured, I've got it broken into a few layers:

Layers Info
NTAG 21X NXPs' Specialized & Extended Type 2 Tag
NFCF Type 2 Tag NFCF's specific implementation of an ISO14443-A Tag
ISO 14443-A The base ISO standard

I haven't seen anything at a quick glance that would make me think it's not possible. I will however admit that I don't have any DI toys, so I've never gotten to take a look at them in action, though.

bettse commented 3 years ago

I would be happy to be proven wrong, but my understanding is the nrf52 can only emulate type 2 and type 4, and the Mifare Classic doesn't fall into either (really, I think it pre-dates, since NXP went all wild west before the NFC Forum was founded and started to standardize things, in particular using the Mifare Ultralight).

Nordic seems to indicate it can't support 'mifare' (by which I think they mean classic). Unhelpfully, the linked threads get into "reader" vs "emulating", which muddles the issue. https://devzone.nordicsemi.com/f/nordic-q-a/61235/can-the-nfc-of-nrf52832-emulate-mifare-classic-1k

My understanding of what constitutes type 2 is founded mostly in wikipedia's rather pretty chart, but give the comfort with which you mention some of the applicable standards, I would say you probably have a better command of the situation than I do.

NFC Protocol Stack

nitz commented 3 years ago

Yeah the information out there about all of the standards is difficult and vague at best, probably due to the actual NFCF/ISO standards costing several hundred dollars. 😔

So, out of the box with the examples & libraries Nordic supplies (in binary blob form, no source,) support just about "to the letter" tags that fall under the T2T or T4T, but allow basically no deviation from that. (They focus on the actual 'higher level' structures, NDEF and the sort.) The NTAG 21(3|5|6) is a T2T, but doesn't bother with anything like NDEFs, and instead just handles raw page reading and writing. (There's no reason you couldn't use NDEFs in those pages, but just that the hardware doesn't support anything to do with them natively.)

That being said, the reason (AFAIK) that Nordic ships an implementation for both T2T and T4T is because they're very similar. Both are ISO 14443-A implementations, with the only "big" difference being that T4Ts support a faster set of speeds than the one fixed speed T2Ts operate at.

MIFARE Classic (and it's family) are, from at least my reading of the datasheet, still ISO 14443-A implementations. If you compare it's section 9.1 (command overview) to the NTAG 21X Datasheet's section 9.1, you'll notice a missing column. The NTAG sheet lists the name of the NFC Forum command in a column next to the ISO 14443-A command. The MIFARE has the ISO 14443-A command, but doesn't adhere to any of the NFC Forum specifications. It's that which makes me believe that it's possible: they both implement the same set of ISO 14443-A commands, and then just build on top of them.

My realistic hope is that the work done in nfc_type_2_tag_emulator.cpp just needs to be broken out a bit higher into a tier specifically for ISO 14443-A, which a theoretical MIFARE Classic family would inherit from.

I've been itching to get back into this project (having been pulled all over the place lately) and all of this talking about it has made me want to even more.