Funkcja edycji emulacji karty hosta w Androidzie

Jestem obecnie w trakcie opracowywania projektu dla mojego kursu Uniwersyteckiego, w którym mam nadzieję edytować funkcjonalność funkcji HCE Androida, aby umożliwić mi ustawienie własnego UID podczas emulowania karty.

Teraz pobrałem źródło AOSP i zbudowałem niestandardowy obraz bez edytowanego kodu i zainstalowałem go do mojego Nexusa 7 (obejmuje to pobieranie i włączanie sterowników sprzętowych określonych przez Dostawcę) i utknąłem w następnej części.

Fizycznie nie mogę znaleźć kod urządzenia, który reguluje funkcje NFC Androida, i nie jestem pewien, jak przejść o) szuka go, i b) jak powinienem edytować ten kod.

Czy kod dla NFC w Androidzie jest w jądrze bazowym? a jeśli tak, to jak mam to edytować, zanim uruchomię" make " ponownie i mam nadzieję, że się zbuduje? a może gdzieś indziej? Zauważyłem, że pliki w folderze dostawcy, które pobrałem i wyodrębniłem, znajdują się w.format ncd, który nie wydaje mi się edytowalny.

Każda pomoc, jaką mogę uzyskać, byłaby bardzo doceniam to.

Author: Michael Roland, 2015-02-09

2 answers

Ok ! Więc znalazłem rozwiązanie problemu, który miałem!

Na Nexusie 7, gdy NFC jest włączone, pobiera informacje z pliku konfiguracyjnego w " / etc / "o nazwie" libnfc-brcm-20791b05.conf "

Wewnątrz tego pliku znajduje się parametr o nazwie "NFA_DM_START_UP_CFG"

Domyślnie wygląda to tak:

NFA_DM_START_UP_CFG={42:CB:01:01:A5:01:01:CA:14:00:00:00:00:0E:C0:D4:01:00:0F:00:00:00:00:C0:C6:2D:00:14:0A:B5:03:01:02:FF:80:01:01:C9:03:03:0F:AB:5B:01:00:B2:04:E8:03:00:00:CF:02:02:08:B1:06:00:20:00:00:00:12:C2:02:01:C8}

Aby edytować UID generowany podczas emulacji, musisz dodać kilka bajtów na końcu tego parametru.

Pierwszy dodany bajt to 0x33 (Oznacza to, że ręcznie ustawisz UID)

Dodawany drugi bajt jest długością identyfikatora użytkownika, który chcesz ustawić (może to być 4,7 lub 10 bajtów, więc ten drugi bajt może wynosić 0x04, 0x07 lub 0x0A)

Następny bajt to ID, które chcesz ustawić! (Uwaga: w zależności od tego, ile bajtów dodasz, powinieneś zmienić pierwszy bajt tablicy, aby odzwierciedlić nowy rozmiar tablicy - zaczyna się od 42, więc jeśli chcesz dodać 6 bajtów, powinien zmienić się na 48)

Dla przykład, jeśli chcesz ustawić 7-bajtowy identyfikator 01 02 03 04 05 06 07, nowa linia konfiguracyjna będzie wyglądać następująco:

NFA_DM_START_UP_CFG={4B:CB:01:01:A5:01:01:CA:14:00:00:00:00:0E:C0:D4:01:00:0F:00:00:00:00:C0:C6:2D:00:14:0A:B5:03:01:02:FF:80:01:01:C9:03:03:0F:AB:5B:01:00:B2:04:E8:03:00:00:CF:02:02:08:B1:06:00:20:00:00:00:12:C2:02:01:C8:33:07:01:02:03:04:05:06:07}

Możesz następnie przesłać ten plik konfiguracyjny do urządzenia nexus za pomocą adb:

-> adb root
-> adb remount
-> adb push libnfc-brcm-20791b05.conf /etc/
-> adb reboot

Spowoduje to zresetowanie Nexusa z nowym plikiem konfiguracyjnym, a po emulacji UID zostanie teraz ustawiony na 01 02 03 04 05 06 07

Mam nadzieję, że to pomoże każdemu przeczytać moje pytanie!
 13
Author: Jay Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-25 13:32:37

Stos NFC Androida jest zasadniczo podzielony na pięć części:

  • Sterownik urządzenia interfejsu NFC. Jest to część jądra. W skrócie, sterownik ten po prostu tuneluje ramki danych (np. ramki protokołu NCI) między plikiem urządzenia znakowego a sprzętem kontrolera NFC. Nie będziesz musiał dotykać tej części swojego projektu.

  • Biblioteka niskopoziomowego interfejsu napisana w języku C (libnfc-nci lub libnfc-NXP dla urządzeń z NXP PN544 NFC kontroler). Biblioteka ta zapewnia zestaw funkcji wysokiego poziomu do interakcji z kontrolerem NFC. "Start polling for technologies X, Y and Z") na polecenia NCI, które są wysyłane do kontrolera NFC za pośrednictwem sterownika jądra. Jest to z pewnością miejsce, w którym trzeba będzie dodać modyfikacje. Ponieważ jest częścią AOSP, możesz go skompilować używając normalnego systemu budowania AOSP.

  • Biblioteka interfejsu JNI napisana w C++ (libnfc_nci_jni ). Ta warstwa łączy bibliotekę libnfc-NCI C z wysokopoziomowym kodem Java. Jeśli chcesz zmodyfikować emulowany UID z aplikacji na Androida, jest to z pewnością miejsce, w którym będziesz musiał dodać modyfikacje. Ponieważ jest częścią AOSP, możesz go skompilować używając normalnego systemu budowania AOSP.

  • Android NFC system service napisany w Javie. Usługa ta przejmuje kontrolę nad całym stosem NFC i wdraża funkcje wysokiego poziomu oparte na zasoby dostarczane przez libnfc-nci. Jeśli chcesz zmodyfikować emulowany UID z aplikacji na Androida, jest to z pewnością miejsce, w którym będziesz musiał dodać modyfikacje. Ponieważ jest częścią AOSP, możesz go skompilować używając normalnego systemu budowania AOSP.

  • Android core framework zapewnia API do funkcjonalności usługi systemu NFC, do której dostęp mają aplikacje na Androida.

Jeśli chodzi o ustawianie / modyfikowanie emulowanego UID na pewno będziesz chciał spójrz na te projekty, które niedawno opublikowałem na Githubie (choć wciąż trwają prace):

 4
Author: Michael Roland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-30 17:29:37