Schlagwort-Archive: nfc

SEQR – mein Android Pay Wallet ohne Android Pay

screenshot_20161030-123530Die App SEQR des schwedischen Finanzdienstleisters Seamless kennen bis jetzt wohl nur wenige. Vor über 3 Jahr als QR-Code Payment App gestartet kann man mit der mittlerweile für Android, iOS und Windows Phone erhältlichen App Bezahltransaktion via eingescannten QR-Codes triggern. Die App ist mittlerweile in Sweden, Finnland, Rumänien, Belgien, Portugal, Niederlande, Deutschland, Spanien, Frankreich, Italien, UK und USA verfügbar.

Eine weitere Bezahl App?

So weit, so gut. Eine weitere Bezahl App. Wäre da nicht die Integration der HCE Technik (nach Zukauf der norwegischen Firma MeaWallet AS). Mit dieser ist es möglich an allen weltweit verfügbaren NFC-Bezahlterminal kontaktlos zu bezahlen, ebenso wie es mit Android Pay, Apple Pay oder zb boon möglich ist….wenn denn Android Pay, Apple Pay schon in Deutschland verfügbar wären 😉 boon als NFC Bezahl App zu nutzen war zu Anfang vielleicht ganz nett, aber ein weiteres Konto nur für das schnellere Bezahlen aufzutanken entfällt mit SEQR, da hier der Betrag via ELV alias SEPA-Lastschrift (SEPA Direct Debit – SDD) von einem hinterlegten Konto abgebucht wird. Nach drei erfolgreichen SEPA Lastschriftzahlungen wird das Ausgabelimit automatisch von 75EUR auf 750EUR erhöht.

“Tap & Pay” – Payback in einfach

Als Beigabe verspricht der Anbieter bis zu 3% Rabatt auf alle Einkäufe zu geben. Ohne leidiges ‚Coupons Geschnipsel‘ und ‚Ja, ich habe eine Payback Karte und werde sie jetzt nutzen‘ wird je nach Anzahl der Einkäufe belohnt: 1% (1-11 Käufen/Monat), 2% (12-19 Käufen/Monat), 3% (mehr als 20 Käufen/Monat).

Installation

Bei der Installation der App wird nach SEQR-PIN, EMail Addresse, Mobilfunk Nummer, Name, Geburtsdatum, und Anschrift gefragt.screenshot_20161024-205913  screenshot_20161024-210004  screenshot_20161024-210254  screenshot_20161024-210409  screenshot_20161024-210503  screenshot_20161024-210524  screenshot_20161024-210846  screenshot_20161024-210856  screenshot_20161024-211534

Zur Identitäts Verifikation ist ein Personalausweis, Führerschein oder Reisepass erforderlich, der direkt mit der App fotografiert werden kann. Danach erfolgt die Aktivierung der “Tap & Pay” Bezahlfunktion, die bei mir leider nicht auf Anhieb funktioniert hat.screenshot_20161024-212015  screenshot_20161024-212039

Der technische Support kann in diesem Fall aber recht schnell via Twitter helfen und innerhalb von 1 Stunde war das Problem behoben und mein Account aktiviert.

Fazit

Ich benutzt die App zwar gerade mal seit dem Wochenende und habe erst vier Zahlungen damit getätigt, bin bis jetzt aber recht zufrieden damit und werde weiter Testen.
Beim Bezahlen muss der “Tap & Pay” Dialog immer im Vordergrund ausgewählt sein, selbst wenn unter den Android Systemeinstellungen die SEQR App als Default eingetragen ist.
Fünf Transaktionen können offline durchgeführt werden danach muss die App wieder ’nach Hause telefonieren‘ um neue Tokens vom Hintergrundsystem zu erhalten.
Wenn ihr euer Smarphone gerootet habt dann braucht ihr die App gar nicht erst zu installieren, denn dann wird Tap & Pay nicht aktiviert!
Schauen wir mal wie lange die DK (Deutschen Kreditwirtschaft) ihren Spec-Baukasten für eine Konkurrenz SEQR App noch in der Schublade verkümmern lässt oder es noch dauert bis Android Pay nach Deutschland kommt um meinen aktuellen NFC-ELV-Bezahlproxy abzulösen.

Play Store: SEQR App https://play.google.com/store/apps/details?id=com.seamless.seqr
SEQR – deutsche FAQ https://www.seqr.com/de/customer-service/
19. April 2015 SEQR: neuer Bezahldienst für Smartphones http://androidmag.de/news/apps-news/seqr-neuer-bezahldienst-fuer-smartphones/
SEQR Developer – Develop and accept payments with SEQR http://seamlessdistribution.github.io/
Belgischer Twitter Account (beantwortet auch Anfragen in deutsch) https://twitter.com/SEQRbe

Update: 2016-11-05

screenshot_20161105-114644_no_location
Nach einer Woche mehrfacher Nutzung der App ohne Probleme ist mein Ausgabelimit auf 3,87EUR gesunken aber noch keine SEPA Abbuchung auf meinem Konto eingegangen. Somit muss ich jetzt warten bis mein Ausgabelimit durch die ersten 3 erfolgreichen Abbuchungen wieder erhöht wird. Das scheint laut FAQ nach 7 Bankarbeitstagen der Fall zu sein. In meinem Fall dauert es also wohl noch bis Mitte nächster Woche…

Update: 2016-12-07

Mit dem App Update v4.5.17 ist die Tap and Pay Funktion nun auch mit einem Click weniger auf der Startseite erreichbar.SEQR - Tap & Pay auf der Startseite

Update: 2016-12-21

Einen Minuspunkt muss ich der App allerdings geben: sie benutzt immer dieselbe PAN (Zahlungskartennummer) (siehe EMV Tag 56 Track 1 Data) denn es kommt leider kein Tokenizationzum Einsatz. Vielleicht wird Seamless das ja in einer späteren Version nachliefern.

Update: 2017-02-02

Ein bisschen verspätet, aber er ist angekommen – der angepriesene Bonus / Cashback / Rabatt, den SEQR mit den Worten „Zahlen Sie mit Seqr und erhalten Sie bis zu 3% auf Ihre Ausgaben“ bewirbt. Die App weisst mit einer Notification darauf hin und der vorhandenen Betrag wird dann im SEQR Account angezeigt. Für einen Betrag von fasst 10 EUR (in diesem Quartal) nimmt man doch gerne diese um 2-3 Tage zeitversetzte Abbuchung der Beträge anstelle von Realtime in Kauf.
seqr-cashback-notification
seqr-cashback

boon – Android Pay ohne Google, ohne NFC-SIM aber mit HCE

boon_webside_countdown

Während der Countdown auf der boon Webseite noch bis zum 23.11.2015 den Start des ersten in Deutschland nutzbaren Wallets für alle Android NFC Smartphones (mit HCE-Unterstützung) anpreist bin ich auf dem Weg zum Aldi um die Zukunft des Bezahlen auszuprobieren. Bisher war es für mich zwar schon möglich mit einem NFC-Sticker oder einer kontaktlosen Kreditkarte bei einigen Läden in Hamburg zu bezahlen, aber das kontaktlose Bezahlen mit dem Smartphone blieb zunächst leider nur den Besitzern eines Telekom-, Vodafone- bzw E-Plus-Vertrags vorenthalten. Denn bisher war es nur möglich eine sogenannte NFC-SIM bei dem Provider anzufordern und in eins der kompatiblen Android Smartphones einzusetzen. Den Witz mit den auf dem Telefon (mit ausgeschaltetem NFC) aufgeklebten NFC-Stickern führe ich an dieser Stelle nicht weiter aus.

Was ist nun anders?

Neu ist dass keine spezielle NFC-SIM erforderlich ist, entsprechend auch Prepaid-Kunden in den Genuss des ‚Bezahlen 2.0‘ kommen und sie dafür jedes NFC-Smartphone mit Android ab 4.4 nutzen können. Beispielsweise können so alle Nexus 4,5,6 Besitzer schon einmal vor dem Android Pay Start in Deutschland im Jahre 20XX Erfahrungen sammeln.

boon? Wer?

boon payment ist der im März 2015 auf dem MWC 2015 angekündigte Bezahldienst von Wirecard. Und wer ist Wirecard? Die Firma, die den erster NFC Sticker in Deutschland unter dem Namen mpass herausgebracht hat und für viele Payment-Kunden das Backend zur Verfügung stellt.

Installation und Registrierung

Als erstes muss also – wie üblich – die erforderliche App installiert werden. Nach dem Download/Installation dann durch einige Registrierungdialoge (Telefonnummer, Passwort, PIN, Sicherheitsfrage) klicken:
screenshot_boon_reg1  screenshot_boon_reg2
screenshot_boon_reg4  screenshot_boon_reg5  screenshot_boon_reg6  screenshot_boon_reg7  screenshot_boon_reg8  screenshot_boon_reg9

Für den Start muss nur die Telefonnummer preisgegeben werden und man bekommt als Dankeschön ein Willkommens-Entgeld von 5 Euro gutgeschrieben.
screenshot_welcome_to_boon  screenshot_boon_startscreenshot_boon_available_amount.5EUR.

Es kann evtl 1 Tag dauern bis die Gutschrift erscheint. Ansonsten darf man gerne auf den schnellen Support zurückgreifen, der bei mir innerhalb von einer Stunde via Mail geantwortet hat!

Der Praxistest

Im Aldi angekommen. Meine Lieblingsschokolade aus dem Regal gezückt und direkt zur Kasse. Prima, kein anderer Kunde da, sonst wird’s evtl peinlich. Aber auch keine Kassierin an der Kasse. Die räumt grade Regale ein. Warten. Dann kommt der Kollege. Nexus5X aus der Hosentasche gezückt. Fingerprintsensor erleichert das Einloggen ungemein. Kassierer sagt „99 Cent“ und hält die Hand auf. Ich sage „einmal kontaktlos Zahlen“. Dann Smartphone rann an das Verifone H5000 Terminal, PIN-Dialog der App wird angezeigt – ja das ist etwas umständlich!

screenshot_boon_1m_countdown  screenshot_transaction

Nach Eingabe der PIN wieder (innerhalb von 1 Minute) ans Terminal halten und Biep, es hat funktioniert! Kassierer grinst mich noch an und sagt „…Sie sind der Erste… die Anderen trauen sich noch nicht so recht…“. Im Auto angekommen wird die Transaktion bereits in der App gelistet.

Besser? Schlechter?

So kann man also Bezahlen. Etwas anders – mit der PIN-Eingabe umständlicher – gegenüber einer Kreditkarte. Aber ok – es ist ja eine weitere Möglichkeit und bestimmt nicht die letzte im NFC-Smartphone-Universum. Von Vorteil wäre wenn Wirecard die PIN-Abfrage durch einen vorhandenen Fingerprintsensor-Scann ersetzten könnte. Fraglich ist auch wie Kaufland-Mitarbeiter reagieren und ob sie die Transaktionszeit evtl durch eine abschliessende Unterschrift noch einmal drastisch anheben sollten?
Der Testballon – der Starter Account ist kostenlos (kann aber auch nicht aufgeladen werden), die Basic und Plus Variante kosten nach 1 Jahr dann 99Cent/Monat, ausserdem sind dann weitere Daten – wie bei jedem Konto – erforderlich.
Probiert die Testversion ruhig einmal aus und postet Eure Kommentare & Feedback.

Lycos Life Wearables: NFC Ring und Smartes NFC Armband

lycos-7band-ring

LYCOS, das Webportal mit dem Hundelogo mag dem einen oder anderen noch aus den 90ern bekannt zu sein. Nachdem die Firma lange nichts von sich hören ließ scheint nun Leben zurück zu kommen: in einer Presseankündigung weisst man auf den 08. Juni 2015 hin, an dem die Produktlinie LYCOS Life vorgestellt wird.

Die ersten zwei Produkte: ein Smart Armband für $124.99 und ein Ring für $59.99. Die Geräte sollen Bluetooth und NFC als Schnittstelle bieten und Daten per Tap to Transfer (T2T) Protokoll austauschen können. Das Smartband bietet die üblichen Sensoren zum Monitoren von Aktivität, Schlaf, Herzfrequenz.
Als weitere Features bietet der “NO Passwords” Personal Security Manager das Eingeben von Passwörtern zu erleichern und ein Advanced Fitness Monitor darf natürlich auch nicht fehlen.

Für $59.99 scheint der NFC Ring im Vergleich zu anderen Ringen sehr teuer zu sein, ausser er bietet weitere Features als nur einen eingebauten NFC Tag. Für $59.99 scheint der NFC Ring im Vergleich zu anderen Ringen auf den ersten Blick sehr teuer zu sein, da er aber mit einer Batterie und Bluetooth BLE 4.0 ausgestattet ist, bietet er gegenüber den einfachen NFC Tags scheinbar zusätzliche Features.

Produktseite: http://www.lycos.life
Pressenotiz: http://corp.lycos.com/wp-content/uploads/2014/11/Final-June-5.pdf
Twitter Account: https://twitter.com/lycos_life
Android App: https://play.google.com/store/apps/details?id=com.lycos.lycoslife

NFC Wearables

In diesem Blogpost soll eine Liste von NFC Wearables gesammelt werden. Als erstes gleich ein paar Armbänder evtl später einmal gefolgt von Schmuckstücken (?) oder worin auch immer NFC Chips integriert werden. Falls iBeacons ebenfalls ihre Daseinsberechtigung finden und in Wearables integriert werden dann werde ich sie hier ergänzen. NFC Ringe sind bereits in einem älteren Blogpost zusammengetragen.

Haloband

haloband

Das Haloband war das erste Armband mit NFC Chips. Zuerst als Kickstarter Projekt von chinesischen Designern iniziiert und aufgrund des großen Erfolges gleich im Anschluss auf Indiegogo ebenfalls mit einem mehrfachen der geplanten Summe erfolgreich durchgeführt. In diesem Silikonband stecken 3 NTAG203/NTAG213 NFC Tags mit dem unterschiedliche Events auf einem NFC Phone grtiggert werden können.

Kickstarter Projekt ab 19$ (bis 16.01.2014) https://www.kickstarter.com/projects/haloband/haloband-control-your-smartphone-with-simple-wrist
Indiegogo Kampagne (20.01.2014-08.03.2014) https://www.indiegogo.com/projects/haloband-control-your-smartphone-with-simple-wrist-move
Twitter Account https://www.twitter.com/iHaloBand
Website http://www.haloband.me/
HALOBAND App https://play.google.com/store/apps/details?id=com.haloband.android

NFC Leder Armband

nfc_leather_bracelet
Es geht auch ohne Kunststoff – mit diesem Lederarmband für 10EUR (+ 4EUR Versand)! Zusätzlich hebt es sich noch von den anderen NFC-Armbändern ab, da es mit 3 NFC Chips ausgeliefert wird.
Website http://www.nfcleatherbracelet.com/
Kickstarter Projekt (02.09.2014-02.10.2014) https://www.kickstarter.com/projects/nfcleatherbracelet/the-first-leather-nfc-bracelet-with-3-chips
Twitter Account https://twitter.com/NLB_Support

UpLocket – Medaillon

uplocket
Wer die Arme bereits mit Uhren und Armbändern behängt hat kann sich den Hals mit einem per 3D-Drucker erstellten Medaillon für $25 verschönern. Todd Blatt’s neues Kickstarter Projekt macht’s möglich. Welcher NFC-Tag Typ hier verwendet wird war auf der Webseite leider nicht zu erfahren.
Kickstarter Projekt (21.09.2014 – 23.10.2014) https://www.kickstarter.com/projects/baltimore/uplocket-a-classic-accessory-with-contemporary-con
Todd Blatt’s Blog http://toddblatt.blogspot.de/
Todd Blatt’s Facebook Seite https://www.facebook.com/tblatt

Simples NFC Armband

nfc-tag-shop-armband

Wer es gerne einfach und günstig mag und einfach nur einen NFC Tag am Arm tragen will greift auf ein herkömmliches Armband zu, wie es zB vom NFC-Tag-Shop angeboten wird. Auf den NTAG203 können 168 Bytes geschrieben werden.

NFC Anhänger

nfc-anhaenger

nfc-herz

Ebenfalls im NFC tag Shop erhältlich ist das 7,90EUR NFC Herz und einige andere NFC-Anhänger (unterschiedliche NFC-Tag Typen)
http://www.nfc-tag-shop.de/

Arduino M24SR NFC Tag Library

M24SR_NFC_Tag_with_I2C_Interface
Gegenstand dieses Blogartikels ist der ST M24SR im praktischen Einsatz mit einem Arduino:
Oft ist eine Benutzerschnittstelle erforderlich, wenn eine Mikrokontroller Schaltung konfiguriert werden muss. Falls ein paar Taster, evtl inkl. Mini-LCD zu teuer sind bzw das Gerät nicht über Bluetooth-, RF- oder Ethernet-Schnittstelle verfügt kann die sehr stromsparende, kostengünstige NFC-Schnittstelle zum Einsatz kommen. Der M24SR von ST dient in dieser Konstellation als NFC-I2C-Brücke zum Auslesen von Logeinträgen, Status- oder Fehlercodes und zum Konfigurieren per Smartphone. Dieser NFC-Chip ist gegenüber den komplexen NFC-Controllern (zB PN532) recht günstig ($0.34 – $1.88) da er nicht alle NFC-Modie wie Reader/Writer, P2P und Card-Emulation unterstützt sondern nur als NFC-Tag fungieren kann. Daten können in den Speicher (EEPROM) des Chips entweder per I2C-Schnittstelle (Arduino) oder per NFC (NFC Phone, Smartcard-Reader) geschrieben bzw ausgelesen werden.

Was wird benötigt?

  • ST M24SR Chip
  • Breadboard + Verbindungskabel
  • SO8-Sockel oder SO8-DIL8-Adapter-Platine zum Auflöten des Chips
  • Arduino Duemilanove (o.ae.)
  • Arduino M24SR Library
  • Antenne: Größe 75 mm x 48 mm, 6 Windungen
  • 10k Ohm Pull-up Widerstand

Setup

Das IC mit 8 Pins ist recht überschaubar zu verdrahten: Spannungsversorgung (GND, VCC), I2CInterface (SDA, SCL),  Antennenanschlüsse (AC0, AC1) und optional RF disable, Schreib-/Leseereignisse (GPO).

    • Schaltung zusammen stecken:

      Pinout:
      -------------------------------------------------------------------------------
      M24SR -> Arduino / resistor / antenna
      -------------------------------------------------------------------------------
      1 RF disable -> TODO not used
      2 AC0 (antenna) -> Antenna
      3 AC1 (antenna) -> Antenna
      4 VSS (GND) -> Arduino Gnd
      5 SDA (I2C data) -> Arduino A4
      6 SCL (I2C clock) -> Arduino A5
      7 GPO -> Arduino D7 + Pull-Up resistor (>4.7kOhm) to VCC
      8 VCC (2...5V) -> Arduino 5V
      -------------------------------------------------------------------------------
    • Arduino M24SR-Lib https://github.com/rena2019/ArduinoM24SR herunterladen

Beispiele

Sample: SystemFile

Dieses Beispiel zeigt nur die Eigenschaften des Tags an (UID, Speichergrösse, Produktcode). Es dient nur zum Überprüfen der korrekten Verdrahtung/Funktionsweise des Chips. Dafür ist weder Smartcard-Reader noch NFC-Smartphone erforderlich.

#include #include
#include
#include
#include
#define gpo_pin 7
M24SR m24sr(gpo_pin);

void setup()
{
Serial.begin(9600);
//for debug purpose
//m24sr._verbose = true;
//m24sr._cmds = true;
m24sr._setup();
m24sr.displaySystemFile();
}

void loop()
{
}

 

Sample: NDefWrite

Einfachstes Beispiel, bei dem eine (von drei) vordefinierten NDef-URL-Records in den M24SR via I2C geschrieben wird. Nach einem Reset wird der Record jedesmal neu geschrieben und kann mit einem NFC-Smartphone ausgelesen werden (Browser öffnet automatisch URL)

Sample: NFC-Info-Display

Für dieses Beispiel muss der GPO-Pin mit einem Pullup-Widerstand zusätzlich zu den I2C-Leitungen an den Arduino angeschlossen werden. Über diesen Pin erhält der Arduino ein Signal bei Schreib-/Leseversuchen über das RF-Interface. Beschreibt man den NFC-Tag mit einer App (z.B. NFC-TagWriter oder ST M24SR Demo App) so wird der Inhalt des NDEF-Records auf dem optional via SPI angeschlossenen TFT zb 128×160 angezeigt.

Arduino_M24SR_Antenna_TFT_CIMG4837
Bei gleichzeitiger Nutzung von mehreren Bibliotheken (NDef, M24SR) kommt man mit dem Arduino schnell an die Grenzen des RAMs. Bei der Implementierung der M24SR-Bibliothek kam es mehrfach zu unerklärlichem Verhalten, die Funktion displayFreeRAM legte dann das Problem offen: Speicher zu klein :-/

Links
Blogartikel: ST M24SR – Low-Cost NFC Tag mit I2C-Schnittstelle
Arduino M24SR Lib (Source Code) https://github.com/rena2019/ArduinoM24SR
ST M24SR64-Y Datenblatt http://www.st.com/web/en/resource/technical/document/datasheet/DM00067892.pdf
Google Play – ST M24SR Demo App https://play.google.com/store/apps/details?id=com.nfc.m24srdemo
Google Play – NFC TagWriter App https://play.google.com/store/apps/details?id=com.nxp.nfc.tagwriter

ST M24SR – Low-Cost NFC Tag mit I2C-Schnittstelle

IC-SO8

STMicroelectronics bietet sehr günstige ($0.34 – $1.88) Bausteine an um die NFC-Schnittstelle in eigene Schaltungen/Produkte zu intergrieren: M24SR

Features

* NFC Forum Tag Type 4 (basierend auf ISO 14443 RF-Interface)
* 1 MHz I2C-Schnittstelle (2.7 bis 5.5 V)
* EEPROM Speichergrössen: 2, 4, 16, 64 Kbits mit built-in NDEF Unterstützung
* ‚RF disable‘-Pin erlaubt der Anwendung den RF Zugriff per NFC Phone zu kontrollieren
* 128-bit Passwortschutz
* Ausgangspin zum Triggern von Applikationen (bei unterschiedlichen Ereignissen)
* einfaches Antennen Design
* 7 Byte UID

Der M24SR wird u.a. im SO8-Package (neben TSSOP8- und UFDFPN8-Package ) angeboten sodass er sogar ohne SMD-Werkzeug auf PCB eingelötet werden kann. Das Konkurrenzprodukt NTAG I2C (NT3H1101/NT3H1201
) von NXP wird im Gegensatz nur als XQFN8-Package (Body 1.6 x 1.6 x 0.6mm) angeboten.

Praxis

M24SR-Pin-Layout
Schliesst man an die AC0 und AC1 Pins des Baustein nur eine Antenne an (5 Windungen aus dünnem Kabel um 2 Finger gewickelt) kann er als einfacher NFC-Tag genutzt werden. Mit einem NFC Android Smartphone z.B. kann man den Tag auslesen, bzw mit einer App mit Text-,URI-, etc NDEF-Records beschrieben werden. Das Besondere an dem Chip ist allerdings die I2C-Schnittstelle. Schliesst man zusätzlich die Pins VSS alias GND (Pin4), VCC (Pin8), SCL (Pin6) und SDA (Pin5) an einen Mikrokontroller an können hierüber Daten an den M24SR gesendet werden und aus dem statischen NFC-Tag wird ein dynamischer (z.B. Temperatur als NDEF-Record oder URI mit One-Time-Password).

GPO (General Purpose Output) Pin

Verbindet man zusätzlich noch den GPO-Pin (Pin7) kann der angeschlossene Mikrokontroller Events empfangen, wenn z.B. die Daten im Speicher via RF-Interface geändert worden sind. Somit ist es möglich Daten aus dem M24SR auszulesen ohne die RF-Kommunikation zu unterbrechen.

App Kompatibilität

ST bietet im Google Play Store die ST M24SR Demo App an, um den Tag zu beschreiben/auszulesen. Da der Tag aber NFC-Forum Tag Type 4 kompatibel ist können auch andere Apps beispielweise die NXP TagWriter App benutzt werden.

Screenshot_M24SR_Demo_App   Screenshot_M24SR_Demo_App_NDEF_Editor

Am PC lässt sich der NFC-Tag wie eine kontaktlose (ISO14443-4) Smartcard auslesen:

screenshot_mysmartcardioshell_m24sr

 

Links und Info

ST M24SR64-Y Datenblatt http://www.st.com/web/en/resource/technical/document/datasheet/DM00067892.pdf
Evalboard M24SR-DISCOVERY 32EUR http://www.exp-tech.de/Shields/Wireless/RFID/M24SR-DISCOVERY-Dynamic-NFC-RFID-tag.html
Google Play – ST M24SR Demo App https://play.google.com/store/apps/details?id=com.nfc.m24srdemo
ST M24SR Demo App – Source Code  http://www.st.com/web/catalog/tools/FM147/SC1871/PF260169
Mouser: STMicroelectronics M24SR Dynamic NFC/RFID Tag ICs http://www.mouser.com/new/stmicroelectronics/stm-m24sr-nfc-rfid/?cm_mmc=PressRelease-PR-_-STMicro-_-M24SR_RFIDNFC-_-2014-04-02
NXP NTAG I2C (NT3H1101/NT3H1201) http://www.nxp.com/documents/short_data_sheet/NT3H1101_1201_SDS.pdf

Android HCE(Host Card Emulation) JavaScript App alias Virtual JavaScript Smartcard

Die App zu diesem Artikel ist eigentlich aus drei Gründen entstanden:
* zur Evaluierung der Android HCE Funktionalität
* zur Evaluierung der Mozilla Rhino Bibliothek
* weil ich immer gern das passendes Tool parat habe

Was kann die App?

virtualjavascriptcard
Eigentlich nichts Grosses. Ein Byte-Array einem JavaScript (via Rhino-Bibliothek) übergeben und den Rückgabewert des JavaScripts wieder in ein Byte-Array konvertieren. Das einzig Spannende daran ist dass das HCE-Framework damit (via Aufruf der processApdu Funktion) befüllt wird. D.h. mit dem richtigen JavaScript-Code, den man selber editieren muss, kann man beliebige NFC Smartcards emulieren. Einziger Wermutstropfen: fehlende AIDs muessten bei Bedarf im Source-Code der App(!) ergänzt werden und die App müsste dann natürlich neu kompiliert und installiert werden. Aber diese Restriktion lässt sich bei einem gerooteten Gerät auch umgehen.

 

In der Praxis

Das einfachste JavaScript würde so aussehen:

function processApdu(apdu){
return new Array(0x90, 0x00);
}

Die virtuelle Karte würde jede Anfrage mit einem Statusword (SW) von 0x9000 (OK) quitieren.
Testen kann man das ganze wie folgt:
1. App installieren: APK-Datei direkt mit dem Smartphone runterladen und Installationsdialog bestätigen (Sicherheit | Geräteverwaltung | Installation aus andeten Quellen zulassen). Oder
1a. aus den Sourcen kompilieren, weil man evtl eine andere AID ergänzen möchte. Hierzu den Source herunterladen, AID mit folgender Zeile:

<aid-filter android:name="xxxxxxxxxxxx" />

in apduservice.xml ergänzen, mit dem SDK kompilieren und dann installieren. Optional könnte man
1b. Xposed-Framework nutzen: bei einem gerooteten Gerät kann man sich 1a auch sparen, wenn man das XposedModifyAidRouting-Modul nutzt. Hiermit können alle SELECT-Kommandos auf die App umgebogen werden und das Ergänzen von neuen/benötigten AIDs wird dynamisch erledigt.
2. JavaScript evtl verändern: nach dem ersten Start der App kann die HCE.js Datei auf den per USB-Kabel angeschlossenen PC editiert werden. Hierzu die Datei erst vom Android Gerät per adb (befindet sich im Android SDK) kopieren, zB:

~/adt-bundle-linux-x86_64-20130219/sdk/platform-tools/adb pull /sdcard/VirtualJavaScriptCard/HCE.js ~/HCE.js

Nun das Skript je nach Wunsch anpassen, zB alle Kommandos mit der Ausgabe eines File Control Information (FCI) Templates für Mastercard beantworten (macht zwar kein Sinn soll nur ein Beispiel sein)

function processApdu(apdu) {
return new Array(0x6F, 0x23, 0x84, 0x0E, 0x32, 0x50, 0x41, 0x59, 0x2E, 0x53, 0x59, 0x53, 0x2E, 0x44, 0x44, 0x46, 0x30, 0x31, 0xA5, 0x11, 0xBF, 0x0C, 0x0E, 0x61, 0x0C, 0x4F, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x04, 0x30, 0x60, 0x87, 0x01, 0x01, 0x90, 0x00);
}

Danach die editierte Datei einfach wieder auf das Gerät zurück kopieren:

~/adt-bundle-linux-x86_64-20130219/sdk/platform-tools/adb push ~/HCE.js /sdcard/VirtualJavaScriptCard/HCE.js

3. Interaktion mit Smartcard Reader testen, zB mit MySmartcardIOShell (interaktive Shell zum Senden von APDUs):

$ java -cp ./MySmartCardIOShell.jar -Dsun.security.smartcardio.library=/lib/x86_64-linux-gnu/libpcsclite.so.1 MySmartCardIOShell

Android Gerät auf den Kontaktlos-Reader des PCs legen, verbinden und APDU senden. Mit dem Nexus10 würde das ganze ungefähr so aussehen:

-/term
0: REINER SCT cyberJack RFID basis 0, sun.security.smartcardio.TerminalImpl, card present: true
protocol: T=1, ATR: 3b 80 80 01 01
>/sel 325041592E5359532E4444463031
=> 00 a4 04 00 0e 32 50 41 59 2e 53 59 53 2e 44 44
46 30 31
<= 6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46
30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 04
30 60 87 01 01 90 00
Status: OK
>

Das gewünschte JavaScript wird durch Auswahl in der Checkbox-Liste der App aktiviert, die App muss aber nicht aktiv sein um Anfragen zu beantworten, da hierfür eine Implementierung des HostApduService im Hintergrund läuft.

Probleme

Wenn mehr als 1 App zum Bezahlen installiert ist kann man unter Einstellungen | Mobil bezahlen die gewünschte App auswählen. Aus Evaluierungszwecke war auf meinem Tablet die Tapp App installiert (und mit keinem Account verknüpft). Diese Konstellation führte dazu dass entsprechende SELECT Kommandos nicht beantwortet werden konnten und die aufrufende Reader Anwendung hing. Nach Auswahl der VirtualJavaScriptCard App als Bezahl-App war das Problem behoben.

payment_select

Ausserdem kann man emulierte Karte nur mit Android Devices ab 4.4 auslesen, da hierfür der NFC-Controller in einen speziellen Modus mit enableReaderMode gesetzt werden und Android Beam ausgeschaltet sein muss.

Auf meinem Nexus 10 scheint sich der Broadcomm NFC-Controller ab und zu mal zu verabschieden. Dann hilft nur ein deaktivieren der NFC-Funktionalität mit anschliessender Re-Aktivierung.

Beispiel: Kreditkarte / PPSE

Mit dem beigefügten HCE_PPSE.js Skript kann man bereits Teile einer Kreditkarte emulieren. Cardpeek zeigt zB folgende Daten an:screenshot-cardpeek-emv

Oder man schaut sich mit dem MasterCard Terminal Simulator an welche Kommandos an die Karte gesendet werden:

screenshot_mastercard_terminal_simulator

Links

Virtual JavaScriptCard App – Source Code https://github.com/rena2019/VirtualJavaScriptCard
XposedModifyAidRouting https://github.com/johnzweng/XposedModifyAidRouting
Blogartikel: List of HCE (Host Card Emulation) Apps