ZINC :zinc: Android NFC cyborg multitool development

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 :thinking:


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 :sob:

How about, not just on, but a “high power” on?

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

Just a thought

I don’t think I have any control over that :thinking: 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

Same on the Google pixels and Motorolas

1 Like

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.

Maybe you’ll find some inspiration in the code :

1 Like

What would you like to see outside of the standard NFC tool features first?

  • Power scan, keeps LEDs on continuously for display
  • Implant recognition when scanned, shows implant info, links, and more
  • News feature, a centralized news feed from your favorite biohacking forums and websites

0 voters

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 :grin:

Edit 2: Changed the thread name to be more fitting


nice work

looking good

1 Like

I’m trying to anticipate the UI design for my nfc multitool and would like some opinions. So far I’m aiming for something in between these two aesthetics:

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 :grin:

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?

1 Like

I do this little ugly thing:

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’m pretty sure I’m getting 4, I’ll check

Will do! This was a quick test to see what I get back :crossed_fingers:

Still looking for the right look. I want to use one of these as reference for the nfc app

What do we think?

  • 1
  • 2
  • 3
  • 4

0 voters

Edit: I think something is broken with the polls. The percentages are calculated as option votes/total voters instead of option votes / total votes … :joy:

sorry bud, I meant to send these to you yesterday.

You may find them helpful with your design stuff

It gives a whole range of colour swatches


Plus you can go to things like trends and can see what is popular now in different industries

https://color.adobe.com/trends/Game-design 1

anyway. I thought you might find it useful :man_shrugging:


Very interesting. They use Behance posts to generate the palettes. I’ve been using Behance for a while but I wasn’t aware of that

1 Like

Based on the poll and my own restrictions started laying out a little something

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

1 Like