1

Is there a way to read the IMEI of a mobile phone (particularly an Android or iOS device) using an NFC reader? I know you can get the IMEI with some applications but I can't use them.

I'm using this reader: ACS ACR1252U

Michael Roland
  • 36,432
  • 10
  • 81
  • 168
  • You probably need to build your own application which uses [HCE](http://developer.android.com/guide/topics/connectivity/nfc/hce.html) to transfer the [IMEI](http://stackoverflow.com/q/1972381/5128464). Good luck! – vlp Feb 28 '16 at 22:21
  • well, I will try a bit more, still I am disappointed that there isn't any way to get a real UID from a NFC – Vasile Adrian Brusturean Mar 04 '16 at 12:29

1 Answers1

3

No, there is no direct built-in way to read the IMEI from a mobile phone through NFC. In fact, an NFC device typically does not emit any identifier that could be used to uniquely identify a device. For instance, the anti-collision identifiers (UIDs) used for the NFC protocol (just as well as for ISO/IEC 14443 protocol) are supposed to be randomly generated for each activation. This is simply for privacy reasons. Probably nobody would want their device to be uniquely identifiable when passing by an NFC reader.

Still there is ways to get static unique identifiers out of some devices:

  • If you explicitly want to obtain the IMEI of a device, on Android you could write a HCE (host-based card emulation) app that emits the IMEI (or some other unique identifier generated by your app) when requested by the reader. The IMEI can be retrieved from the TelephonyManager. Something like this is currently not possible on iDevices.

  • If some other identifer would work as well, some devices may already contain card emulation applications with such static identifiers (for instance the PAN of a payment card). This is, for instance, the case on recent iPhones with NFC payment. Eventhough they use a form of tokenization, the credit card number stored on the secure element is still static. You can obtain it using standard EMV protocols. The same may apply to Android devices with secure element-based payment applications. However, on Android you may also find HCE-based payment applications that use dynamically one-time PANs due to their tokenization mechanism.

  • And finally, some devices containing a secure element use a static UID from the secure element for anti-collision. In that case, you could simply use that UID as unique identifier.

Michael Roland
  • 36,432
  • 10
  • 81
  • 168