Some of you already know that I’ve been very slowly working on an Android nfc multitool that specifically targets implants and biohacking use cases. It takes advantage of Unity to allow for some very fun future perspectives in gamification, cryptography, AR and magnet related stuff ( see one of my older projects … )
Anyway, Unity and app/game design is my IRL job so no issues with that. Native Android and NFC protocols on the other hand I only know superficialy so I made this thread to spam you all with questions, ideas and polls☺️
To start this off one of the features I want to include is a “power scan” which keep the led implants turned on continuously until the user cancels.
For implants that have chips like the xSIID I think it’s straightforward: just loop a read command over and over or any other command that is more fitting.
But for chipless implants like the xLED I’m not sure how to approach that… I can make them blink at best
i’m unsure whether android allows a FIELD=1 to just turn the field on, however, the same WUPA & communication commands you are sending for xsiids will also light up HF xLEDs because your phone is still outputting a field
Well the android API is much more convoluted than that sadly… Afaik you need to first detect a chip, recognize its type and open com to then finally be able to send anything.
I wish I had low level control over the antenna
I know that, at least on all of my Samsungs, the NFC duty cycle is many many rapid low power reads, followed by a high power read pulse every 2 seconds. ( sometimes this is different, but generally true )
The low power pulse is normally is enough to trigger a highpower read when a full sized card is presented, but it normally takes the high power pulse to read an implant.
Have you considered tapping into the high power read? so you could, for example turn it on for 5sec or until succesful
I don’t think I have any control over that there’s not much in the API outside of the standard use cases (connect and read/write)… There’s a lot of abstraction between the hardware an the accessible software. I assume they do that for security reasons
The Flipper Zero, at least with the Unleashed firmware, has the capability to power an implant without reading it. It’s a sub-option in the NFC menu. It works great to light up my xSIID without reading the data.
I’ve been thinking about this lately. I wonder if in reality there are only rapid low-power reads. The high power read only happens when a disturbance in the force is detected or whatever electromagnetic measurement is made goes over a threshold.
The reason we see this low-low-low-high… pattern, in this case, would be because the low pulses would have a cumulative effect on the lc circuit that in turn passes the phone’s threshold for a high pulse to be sent…
Although I have nothing to back this up other than instinct and the fact that the pattern doesn’t seem to repeat perfectly which is suspicious.
For example, if I hold the card to the back of my Pixel I see an irregular pattern but if I place both down on the desk I only get low pulses leading me to believe that the high ones are triggered by slight movement.
Random progress update. I reordered the project a bit and did some work on the product database. It will be used both as a user facing feature but also as a reference to match scanned implants.
The fist thing in the video is the power scan keeping the LED constantly on until connexion is lost. The second is a test layout for the product database with loading images straight of the website. Of course I have a system for catching said images too but here it’s purely web queries.
I’m gonna work on these loading times, I promise.
Edit: loading times are gone
Edit 2: Changed the thread name to be more fitting
But I’m not super hyped about them and it’s still pretty vague so if there are apps that you like the design of or if you can find a reference image like these that you like please send it my way
Edit: Imo the first one is a bit simple and outdated, not slick. The second one is too much and a technical challenge given that I’m working with Unity. Overall I’m going for a modernized Github color scheme with a futuristic/tech hint.
Tech wise I can now read NFC_A tags including the ID, the technologies, the manufacturer and dump all the raw content.
That’s a tiny step for humanity but a huge step for me as I’m getting the hang of using the native java android nfc functions as well as making that collaborate with a unity project.
The interesting thing is I do a read operation, itterating the block number until that fails to get the entire tag. The operation always fails at 128 even though I think the tag has 134 blocks with the last two being locked. Also the first two are marked as locked and blocked on NXP reader but I’m still reading them… Any ideas?
The guys doing the tag info app over at NXP make plenty of mistakes… trust me. I think it’s just the wrong symbol they used.
As for the blocks, it looks like 134 should be correct… hard to say what’s going on without the code snippet. How are you issuing the read command? Are you issuing a single block read command or a fast read?
ah yeah, that does work… but aren’t you getting 16 bytes per read, thus you’d want to increment by 4 not 1. no idea why you’re getting an error though… what is the exception? if you read past the end of memory with read, you should just get 00 padding on trailing bytes.
You should definitely instead check out the fast_read command … section 10.3 of the ntag spec doc.
Oh also check out the 10.1 GET_VERSION (60h) command too… you can try to detect what tag you’re talking to before scanning memory and then just know what start and end to use for FAST_READ… only works with NTAG chips though.
I didn’t go full neuromorphic UI even though I have the asset for it because it didn’t look right. Instead, I mixed aesthetics from options 2 and 4.
Of course, this is just 4 buttons. It’s still missing the rest of the layout