cmdwtf / Odiin

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

Disney Infinity and Skylanders #91

Open NBAPJ opened 4 years ago

NBAPJ commented 4 years ago

Could Odiin be used to emulate Disney Infinity and Skylanders? The was a guy posting videos on YouTube of a similar device that was emulating Disney Infinity and Skylanders.

nitz commented 4 years ago

As far as I know, yes. The code isn't ready out of the box at the moment, and the real answer is a bit more complicated. I'll explain below, also to get my thoughts written down for later reference! Also, I'd love to see the YT video you speak of, if you have a link!

My understanding via what I've read on sites like nfc.toys is that they're pretty similar. In particular, the Infinity tags seem to be a MIFARE Mini tag (ref). I don't have any docs on the Mini, but given that it's in the MIFARE product line, I imagine the protocol is quite similar.

Currently Odiin is hardcoded to load binaries as NTAG215. I do need to add support to dynamically select the emulation method via file size or perhaps setting, but I haven't come up with a way that feels nice and obvious yet. The MIFARE protocol, as far as I know being an ISO1443A tag, does align pretty similarly with the NTAG21X, so it's a good chance a lot of the work is already done there. The only other note I had jotted down is that the NTAG21X's SAK response (part of the anti-collision/tag selection process that I'm letting the hardware handle natively) does have a different response than the MIFARE does (0x00 vs 0x09). The nRF52840 docs imply a way that I should be able to assign the value used for that, but I haven't done any looking into it yet.

Skylanders I'm a bit more lost on, as it seems they use a 4-byte UID (which I do support though not directly at the moment), but their tags seem to be "TNP3xxx", which I don't know much about other than that they have a different ATQA and SAQ response. (NXP Lists it alongside many of their tags in this identification document, so I'm guessing they're similar/along the lines of the MIFARE line, but I haven't seen a datasheet for it.)

Lastly: I don't have any Infinity or Skylanders toys myself to test with, but I definitely plan to get some at some point, and that's been a larger part of why I haven't played with them at all!