it-swarm.com.de

Emulieren Sie die Mifare-Karte mit Android 4.4

Ich habe Mifare und andere Kartenemulationen recherchiert. Ich habe sehr gute Programmierkenntnisse (nicht Android, sondern C/C++). Ich habe Proxy und ich habe mehrere Emulationscodes für Proxy erstellt, damit ich weiß, wie die Karten kommunizieren.

Ich verstehe derzeit nicht, ob Android die vollständige Kartenemulation aktiviert ... Ich habe dies seit ungefähr 3 Tagen recherchiert und die Schlussfolgerung lautet, es gibt kein konstantes Muster. Einige Leute sagen, dass es möglich ist, andere sagen, dass es nicht möglich ist. Ich habe die Android-API durchgesehen, und die Host-basierte Kartenemulation scheint den Trick auszuführen, aber wenn ich es verstehe, ist das eine neue Sache in 4.4 KitKat. Hat jemand Erfahrung damit?

Zur Vereinfachung untersuche ich derzeit die einfachste einfache Emulation für Mifare Ultralight. Diese Karte ist ein Alptraum der Sicherheit, es gibt keine Verschlüsselung und nur etwa 10 Funktionen. Ich bin also daran interessiert, mit dieser Karte zu recherchieren, weil sie am einfachsten zu reproduzieren ist.

Hat jemand auch Kenntnisse in der Kartenemulation auf Android. Vielleicht nicht mit dem Standard-Betriebssystem. Alles, was es wert ist zu wissen, wäre sehr dankbar.

Vielen Dank.

30
user2570174

Mit der hostbasierten Kartenemulation (HCE) in Android 4.4 können Sie nur das ISO/IEC 14443-4-Protokoll emulieren. Insbesondere können Sie nur Anwendungsstrukturen nach ISO/IEC 7816-4 emulieren (daher müssen Kartenemulationsanwendungen über eine AID ausgewählt werden). Darüber hinaus gibt Ihnen die API keine Möglichkeit, anzugeben, ob die Kartenemulation mit dem Protokoll Typ A oder Typ B erfolgen soll.

Also zur Emulation verschiedener MIFARE-Protokolle:

  • MIFARE Das Ultralight-Protokoll (und Derivate) arbeitet zusätzlich zu ISO/IEC 14443-3. Es ist nicht möglich, Karten mit solchen Low-Layer-Protokollen mit Android HCE zu emulieren.
  • Das MIFARE Classic -Protokoll arbeitet teilweise zusätzlich zu ISO/IEC 14443-3 (mit etwas anderen Rahmen). Daher ist es auch nicht möglich, MIFARE Classic mit Android HCE zu emulieren.
  • Die Protokolle MIFARE DESFire werden zusätzlich zu ISO/IEC 14443-4 ausgeführt. Es gibt drei Varianten des DESFire-Protokolls:

    1. native protocol: Da dieses Protokoll keine APDUs gemäß ISO/IEC 7816-4 verwendet, kann es nicht mit Android HCE emuliert werden.
    2. wrapped native protocol: Dieses Protokoll verwendet APDUs gemäß ISO/IEC 7816-4. Leser geben jedoch normalerweise keinen SELECT-Befehl mit der DESFire-AID aus, wenn die Kommunikation mit einer Karte im eingebetteten systemeigenen Befehlsmodus beginnt. (Hinweis: Neuere Reader-Implementierungen geben wahrscheinlich einen mit Android HCE kompatiblen SELECT-Befehl aus, da dies auch für einige neuere Smartcard-Produkte von NXP mit DESFire-Protokollemulation erforderlich ist.)
    3. ISO-Protokoll: Dieses Protokoll basiert auf ISO/IEC 7816-4 und verwendet die Anwendungsauswahl nach AID. Daher kann es möglich sein, dieses Protokoll mit Android HCE zu emulieren.

    Einige Leser erfordern möglicherweise bestimmte Parameterwerte in niedrigeren Protokollschichten (z. B. eine bestimmte UID-Kaskadenebene, einen bestimmten ATQA-Wert, einen bestimmten SAK-Wert oder einen bestimmten ATS). Android HCE hat keine Möglichkeit, diese Werte einzustellen. Siehe Bearbeitungsfunktion der Hostkartenemulation in Android für einen möglichen Ansatz zum Ändern dieser Werte auf bestimmten gerooteten Geräten und meine Antwort auf die hostbasierte Kartenemulation mit fester Karten-ID für eine Strategie zum programmatischen Ändern dieser Werte in einem benutzerdefinierten ROM.

Ein Hinweis zur HCE-Funktion in CyanogenMod von Version 9.1 bis Version 10.2: Dadurch werden alle auf ISO/IEC 14443-4 basierenden Protokolle emuliert, ohne dass eine Anwendungsstruktur gemäß ISO/IEC 7816-4 erforderlich ist. Sie können sogar auswählen, ob Sie das Protokoll vom Typ A oder Typ B emulieren möchten. Es sollte also möglich sein (obwohl ich noch nicht getestet habe), eines der drei DESFire-Protokolle zu emulieren. Selbst mit der HCE-Funktion von CyanogenMod ist es nicht möglich, die Protokolle MIFARE Ultralight oder Classic zu emulieren. Außerdem ist es nicht möglich, Low-Level-Protokollparameter wie UID, ATQA, SAK oder ATS zu beeinflussen.

51
Michael Roland

Ich habe vor einem Jahr Wochen damit verbracht, nach diesem Thema zu suchen, und meine Schlussfolgerung basierend auf der aktuellen Implementierung war: Die Emulation von MIFARE Classic ist möglich, aber nur durch das Embedded Secure Element ist dieses Element in NXPs NFC eingebettet. Chip (eingebauter PN65-Chip zum Beispiel beim Samsung I9300).

Ich konnte eine Mifare Classic-Karte mit versteckten Funktionen in der Android_external_libnfc-nxp-Bibliothek vollständig emulieren. Obwohl ich nur die Karte lesen konnte, und für den Zugriff auf das Secure Element, wo in den meisten Fällen ein Applet von NXP vorhanden ist, dient dieses Applet als Front-End für die Verwaltung der emulierten Karten. 

Eine gute Möglichkeit, diese Suche fortzusetzen, wäre das Reverse Engineering der Google-Wallet-Anwendung.

16
Simplect

Der MIFARE Ultralight-Chip MF0ICU1 (jeweils 16 Seiten x 4 Bytes) ist in der Tat ein Alptraum, kann jedoch auf keiner NXP-Schnittstelle einschließlich PN53x emuliert werden, da er das erste UID-Byte (UID0) mit 0x08 festverdrahtet hat UID (gemäß NXP-Standards). Sie benötigen UID0 = 0x04, um MIFARE Ultralight zu emulieren.

Es gibt einen Standalone-MIFARE Ultralight-Emulator , der einen beliebigen Wert für UID0 zulässt, über rücksetzbare OTP-, Sperr- und Blockierbits verfügt. Weitere Informationen finden Sie im Handbuch.

4
nCipher

Die kurze Antwort lautet YES. Hängt jedoch von vielen Faktoren ab, wie z. B. Android-Version, Telefon NFC Chip usw. 

Wenn Sie wissen möchten, ob Ihr Gerät dies unterstützt, laden Sie einfach eine App wie " NFC Check " "von Tapkey herunter und Sie werden informiert, ob MiFare Classic & Mifare Ultralight unterstützt wird. Es gibt auch eine aktuelle Liste, anscheinend kann es jedoch zu Abweichungen kommen: https://www.shopnfc.com/de/content/7-nfc-compatibility

Nun ist die Frage "wie". Ich habe noch keine App gefunden, um die Host-basierte Kartenemulation des neuen Android ( HCE ) für diesen Zweck zu verwenden (siehe hier): Wie gut funktioniert das Android NFC API-Unterstützung Mifare Desfire?

In der Tat wird kürzlich von MiFare vorgeschlagen, stattdessen die Methode "sicheres Element" zu verwenden: https://www.mifare.net/support/forum/topic/emulate-mifare-classic-1k/

Zurück zu Ihrer Frage nach dem Ultralight-Gerät besteht die Hauptschwierigkeit darin, dass die Android-API das Senden einer zufälligen UID am heutigen Tag definiert, wie von einem früheren Benutzer nCypher vorgeschlagen: https://developer.Android.com/guide/ topics/connectivity/nfc/hce

Als Alternative kann der Root-Zugriff (oder benutzerdefinierte Cyanogen-ROMs) helfen, die UID wie in diesem Beispiel zu ändern: http://osgt7405i.bkt.clouddn.com/help/de/index.html?t = 1536931682474

Die neueste Android-API bezieht sich jedoch direkt auf das Ultralight-Objekt: https://developer.Android.com/reference/Android/nfc/tech/MifareUltralight

Ich kenne einige Firmen, die dies durch den SIM-Speicher nachahmen. Für die Verwendung Ihres Telefons als RFID-Karte dieser MIFARE-Typen hat MiFare bereits eine Lösung entwickelt, mit der Unternehmen Karten in die Cloud laden können, die mit ihrer Mobilfunk-SIM-Karte verbunden sind. [ Https://www.mifare4mobile.org/ ] Es gibt eine Liste der offiziell zertifizierten NFC Chips, die funktionieren, die meisten von ihnen sind NPX, die weitgehend in Smartphones enthalten sind.

Ihre Lösung ist jedoch eine SDK-API (nämlich TapLinx). Es gibt kein reines Softwareprodukt von NXP wie etwa eine Telefonemulationssoftware oder eine Cloud-Basislösung.

Darüber hinaus spricht das MiFare-Forum darüber: https://www.mifare.net/support/forum/topic/creating-nfc-Android-app-to-act-as-mifare-card- to-interact-with-mifare-reader /

1
JCM