Search code examples
androidnfcevent-trackingbanking

Is it possible to read NFC communication with a third party app on Android?


I am a hobby app developer for Android. With this question I want to check if its worth to learn about NFC.

My goal is to program an app that can track my bankcard payments that are paid with my phone over NFC at a bankcard terminal.

How in the title suggested, my question is, if I can "sniff" the NFC traffic of my bank-app and the bankcard terminal and get some information about payments. Further question, if this is not possible, is it somehow possible to communicate directly with my bank-app and get information?


Solution

  • The short answer is no you cannot sniff the NFC traffic.

    Usually for bank cards they are loaded in to a secure element of the NFC controller that is not accessible for the Host OS.

    See the description on https://developer.android.com/guide/topics/connectivity/nfc/hce

    enter image description here

    The secure element itself performs the communication with the NFC terminal, and no Android application is involved in the transaction at all. After the transaction is complete, an Android application can query the secure element directly for the transaction status and notify the user.

    So any banking app installed on the phone has nothing to do with NFC based transactions.

    Though as your banking App can do you might be able to query the secure element after the transaction.