Как работает эмулятор карт
Сервис электронных платежей, созданный компанией Гугл и запущенный в 2017 году, функционирует на мобильных устройствах,
Современные технологии позволяют совершенствовать различные сферы повседневной жизни обычных людей. Например, создание банковских карт
В современном гаджете, как в сундуке Пандоры, хранится немало секретов. Остановимся сегодня на модулях
Совсем недавно появилась возможность производить оплату за проезд с помощью банковских карт. Однако технологии
Нередко приходится наблюдать такую картину: покупатель на кассе в супермаркете судорожно пытается осуществить платеж
Привыкли расплачиваться за покупки в магазинах бесконтактными пластиковыми карточками? Теперь это прошлый век, пора
Hi, всем доблестным владельцам яблочных гаджетов. Все кто использует iPhone априори любят идти в
Производитель цифровой техники Сяоми активно развивается и штурмует российский рынок. Большинство любителей гаджетов сейчас
Уже трудно кого либо удивить банковской карточкой с возможностью бесконтактной оплаты. Но вот платить
Xamarin.Forms — простой пример Host-based Card Emulation
В этой статье будем реализовывать так называемую Host-based Card Emulation (HCE, Эмуляция банковской карты на телефоне). В сети много подробных описаний этой технологии, здесь я сделал акцент именно на получении работающих приложений эмулятора и ридера и решении ряда практических задач. Да, понадобятся 2 устройства с nfc.
Сценариев использования очень много: система пропусков, карты лояльности, транспортные карты, получение дополнительной информации об экспонатах в музее, менеджер паролей.
При этом приложение на телефоне, эмулирующем карту, может быть запущено или нет и экран вашего телефона может быть заблокирован.
Для Xamarin Android есть готовые примеры эмулятора карты и ридера.
Попробуем с помощью этих примеров сделать 2 приложения Xamarin Forms, эмулятор и ридер, и решить в них следующие задачи:
- выводить данные от эмулятора на экране ридера
- выводить данные от ридера на экране эмулятора
- эмулятор должен работать с незапущенным приложением и заблокированным экраном
- управление настройками эмулятора
- запуск приложения эмулятора при обнаружении ридера
- проверка состояния nfc-адаптера и переход в настройки nfc
Как написано в документации android, начиная с версии 4.4 (kitkat) добавлена возможность эмулировать ISO-DEP карты, и обрабатывать APDU-команды.
Эмуляция карт основана на сервисах android, известных как «HCE services».
Когда пользователь прикладывает устройство к NFC-ридеру, андроиду необходимо понять к какому HCE-сервису хочет подключиться ридер. В ISO/IEC 7816-4 описан способ выбора приложения, основанный на Application ID (AID).
Если интересно углубиться в прекрасный мир байтовых массивов, то здесь и здесь подробнее про APDU-команды. В данной статье используется всего пара команд, необходимых для обмена данными.
Приложение «Ридер»
Начнём с ридера, т.к. он проще.
Создаём в Visual Studio новый проект типа «Mobile App(Xamarin.Forms)» далее выбираем шаблон «Blank» и оставляем только галочку «Android» в разделе «Platforms».
В андроид-проекте надо сделать следующее:
- Класс CardReader — в нём несколько констант и метод OnTagDiscovered
- MainActivity — инициализация класса CardReader, а также методы OnPause и OnResume для включения/выключения ридера при сворачивании приложения
- AndroidManifest.xml — разрешения для nfc
- Метод для вывода сообщения пользователю
Класс CardReader
using Android.Nfc; using Android.Nfc.Tech; using System; using System.Linq; using System.Text; namespace ApduServiceReaderApp.Droid.Services < public class CardReader : Java.Lang.Object, NfcAdapter.IReaderCallback < // ISO-DEP command HEADER for selecting an AID. // Format: [Class | Instruction | Parameter 1 | Parameter 2] private static readonly byte[] SELECT_APDU_HEADER = new byte[] < 0x00, 0xA4, 0x04, 0x00 >; // AID for our loyalty card service. private static readonly string SAMPLE_LOYALTY_CARD_AID = "F123456789"; // "OK" status word sent in response to SELECT AID command (0x9000) private static readonly byte[] SELECT_OK_SW = new byte[] < 0x90, 0x00 >; public async void OnTagDiscovered(Tag tag) < IsoDep isoDep = IsoDep.Get(tag); if (isoDep != null) < try < isoDep.Connect(); var aidLength = (byte)(SAMPLE_LOYALTY_CARD_AID.Length / 2); var aidBytes = StringToByteArray(SAMPLE_LOYALTY_CARD_AID); var command = SELECT_APDU_HEADER .Concat(new byte[] < aidLength >) .Concat(aidBytes) .ToArray(); var result = isoDep.Transceive(command); var resultLength = result.Length; byte[] statusWord = < result[resultLength - 2], result[resultLength - 1] >; var payload = new byte[resultLength - 2]; Array.Copy(result, payload, resultLength - 2); var arrayEquals = SELECT_OK_SW.Length == statusWord.Length; if (Enumerable.SequenceEqual(SELECT_OK_SW, statusWord)) < var msg = Encoding.UTF8.GetString(payload); await App.DisplayAlertAsync(msg); >> catch (Exception e) < await App.DisplayAlertAsync("Error communicating with card: " + e.Message); >> > public static byte[] StringToByteArray(string hex) => Enumerable.Range(0, hex.Length) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) .ToArray(); > >
В режиме чтения nfc-адаптера при обнаружении карты будет вызван метод OnTagDiscovered. В нём IsoDep — это объект с помощью которого мы будем обмениваться с картой командами (isoDep.Transceive(command)). Команды — это массивы байт.
В коде видно, что мы отправляем эмулятору последовательность, состоящую из заголовка SELECT_APDU_HEADER, длины нашего AID в байтах и самого AID:
0 164 4 0 // SELECT_APDU_HEADER 5 // длина AID в байтах 241 35 69 103 137 // SAMPLE_LOYALTY_CARD_AID (F1 23 45 67 89)
MainActivity ридера
Здесь надо объявить поле ридера:
public CardReader cardReader;
и два вспомогательных метода:
private void EnableReaderMode() < var nfc = NfcAdapter.GetDefaultAdapter(this); if (nfc != null) nfc.EnableReaderMode(this, cardReader, READER_FLAGS, null); >private void DisableReaderMode()
в методе OnCreate() инициализируем ридер и включаем режим чтения:
protected override void OnCreate(Bundle savedInstanceState)
а также, включаем/выключаем режим чтения при сворачивании/открытии приложения:
protected override void OnPause() < base.OnPause(); DisableReaderMode(); >protected override void OnResume()
App.xaml.cs
Статический метод для вывода сообщения:
public static async Task DisplayAlertAsync(string msg) => await Device.InvokeOnMainThreadAsync(async () => await Current.MainPage.DisplayAlert("message from service", msg, "ok"));
AndroidManifest.xml
В документации android написано, что для использования nfc в своём приложении и правильной с ним работы, надо объявить эти элементы в AndroidManifest.xml:
а лучше
При этом, если ваше приложение может использовать nfc, но это не обязательная функция, то можете пропустить элемент uses-feature и проверять доступность nfc в процессе работы.
Это всё, что касается ридера.
Приложение «Эмулятор»
Опять создаём в Visual Studio новый проект типа «Mobile App(Xamarin.Forms)» далее выбираем шаблон «Blank» и оставляем только галочку «Android» в разделе «Platforms».
В Android-проекте надо сделать следующее:
- Класс CardService — здесь нужны константы и метод ProcessCommandApdu(), а также метод SendMessageToActivity()
- Описание сервиса в файле aid_list.xml
- Механизм отправки сообщений в MainActivity
- Запуск приложения (при необходимости)
- AndroidManifest.xml — разрешения для nfc
- Метод для вывода сообщения пользователю
Класс CardService
using Android.App; using Android.Content; using Android.Nfc.CardEmulators; using Android.OS; using System; using System.Linq; using System.Text; namespace ApduServiceCardApp.Droid.Services < [Service(Exported = true, Enabled = true, Permission = "android.permission.BIND_NFC_SERVICE"), IntentFilter(new[] < "android.nfc.cardemulation.action.HOST_APDU_SERVICE" >, Categories = new[] < "android.intent.category.DEFAULT" >), MetaData("android.nfc.cardemulation.host_apdu_service", Resource = "@xml/aid_list")] public class CardService : HostApduService < // ISO-DEP command HEADER for selecting an AID. // Format: [Class | Instruction | Parameter 1 | Parameter 2] private static readonly byte[] SELECT_APDU_HEADER = new byte[] < 0x00, 0xA4, 0x04, 0x00 >; // "OK" status word sent in response to SELECT AID command (0x9000) private static readonly byte[] SELECT_OK_SW = new byte[] < 0x90, 0x00 >; // "UNKNOWN" status word sent in response to invalid APDU command (0x0000) private static readonly byte[] UNKNOWN_CMD_SW = new byte[] < 0x00, 0x00 >; public override byte[] ProcessCommandApdu(byte[] commandApdu, Bundle extras) < if (commandApdu.Length >= SELECT_APDU_HEADER.Length && Enumerable.SequenceEqual(commandApdu.Take(SELECT_APDU_HEADER.Length), SELECT_APDU_HEADER)) < var hexString = string.Join("", Array.ConvertAll(commandApdu, b =>b.ToString("X2"))); SendMessageToActivity($"Recieved message from reader: "); var messageToReader = "Hello Reader!"; var messageToReaderBytes = Encoding.UTF8.GetBytes(messageToReader); return messageToReaderBytes.Concat(SELECT_OK_SW).ToArray(); > return UNKNOWN_CMD_SW; > public override void OnDeactivated(DeactivationReason reason) < >private void SendMessageToActivity(string msg) < Intent intent = new Intent("MSG_NAME"); intent.PutExtra("MSG_DATA", msg); SendBroadcast(intent); >> >
При получении APDU-команды от ридера, будет вызван метод ProcessCommandApdu и в него передана команда в виде массива байтов.
Сначала проверяем, что сообщение начинается на SELECT_APDU_HEADER и если это так, составляем ответ ридеру. В реальности обмен может проходить в несколько шагов вопрос-ответ вопрос-ответ итд.
Перед классом в атрибуте Service описаны параметры сервиса android. При сборке xamarin преобразует это описание в такой элемент в AndroidManifest.xml:
Описание сервиса в файле aid_list.xml
В папке xml надо создать файл aid_list.xml:
Ссылка на него есть в атрибуте Service в классе CardService — Resource = «@xml/aid_list»
Здесь задан AID нашего приложения, по которому ридер будет к нему обращаться и атрибут requireDeviceUnlock=«false» чтобы карта считывалась при неразблокированном экране.
В коде есть 2 константы: @string/service_name и @string/card_title . Они объявляются в файле values/strings.xml:
My Loyalty Card My Company
Механизм отправки сообщений:
Сервис не имеет ссылок на MainActivity, которая в момент получения APDU команды может быть и вовсе не запущена. Поэтому отправляем сообщения из CardService в MainActivity с помощью BroadcastReceiver следующим образом:
Метод для отправки сообщения из CardService:
private void SendMessageToActivity(string msg)
Получение сообщения:
Создаём класс MessageReceiver:
using Android.Content; namespace ApduServiceCardApp.Droid.Services < public class MessageReceiver : BroadcastReceiver < public override async void OnReceive(Context context, Intent intent) < var message = intent.GetStringExtra("MSG_DATA"); await App.DisplayAlertAsync(message); >> >
Регистрируем MessageReceiver в MainActivity:
protected override void OnCreate(Bundle savedInstanceState)
App.xaml.cs
Такой же как в ридере метод для вывода сообщения:
public static async Task DisplayAlertAsync(string msg) => await Device.InvokeOnMainThreadAsync(async () => await Current.MainPage.DisplayAlert("message from service", msg, "ok"));
AndroidManifest.xml
или 14
На данный момент у нас уже есть следующие функции:
- выводить данные от эмулятора на экране ридера
- выводить данные от ридера на экране эмулятора
- эмулятор должен работать с незапущенным приложением и с выключенным экраном.
Управление эмулятором
Настройки буду хранить с помощью Xamarin.Essentials.
Сделаем так: при перезапуске приложения эмулятора будем обновлять настройку:
Xamarin.Essentials.Preferences.Set("key1", Guid.NewGuid().ToString());
а в методе ProcessCommandApdu будем каждый раз заново брать это значение:
var messageToReader = $"Hello Reader! - ";
теперь при каждом перезапуске(не сворачивании) приложения эмулятора видим новый guid, например:
Hello Reader! - 76324a99-b5c3-46bc-8678-5650dab0529d
Так же через настройки включаем/выключаем эмулятор:
Xamarin.Essentials.Preferences.Set("IsEnabled", false);
а в начало метода ProcessCommandApdu добавляем:
var IsEnabled = Xamarin.Essentials.Preferences.Get("IsEnabled", false); if (!IsEnabled) return UNKNOWN_CMD_SW; // 0x00, 0x00
Это простой способ, но есть и другие.
Запуск приложения эмулятора при обнаружении ридера
Если надо просто открыть приложение эмулятора, то в методе ProcessCommandApdu добавьте строку:
StartActivity(typeof(MainActivity));
Если необходимо передать в приложение параметры, то так:
var activity = new Intent(this, typeof(MainActivity)); intent.PutExtra("MSG_DATA", "data for application"); this.StartActivity(activity);
Прочитать переданные параметры можно в классе MainActivity в методе OnCreate:
. LoadApplication(new App()); if (Intent.Extras != null)
Проверка состояния nfc-адаптера и переход в настройки nfc
Этот раздел применим и к ридеру и к эмулятору.
Создадим в андроид-проекте NfcHelper и используем DependencyService для доступа к нему из кода страницы MainPage.
using Android.App; using Android.Content; using Android.Nfc; using ApduServiceCardApp.Services; using Xamarin.Forms; [assembly: Dependency(typeof(ApduServiceCardApp.Droid.Services.NfcHelper))] namespace ApduServiceCardApp.Droid.Services < public class NfcHelper : INfcHelper < public NfcAdapterStatus GetNfcAdapterStatus() < var adapter = NfcAdapter.GetDefaultAdapter(Forms.Context as Activity); return adapter == null ? NfcAdapterStatus.NoAdapter : adapter.IsEnabled ? NfcAdapterStatus.Enabled : NfcAdapterStatus.Disabled; >public void GoToNFCSettings() < var intent = new Intent(Android.Provider.Settings.ActionNfcSettings); intent.AddFlags(ActivityFlags.NewTask); Android.App.Application.Context.StartActivity(intent); >> >
Теперь в кроссплатформенном проекте добавим интерфейс INfcHelper:
namespace ApduServiceCardApp.Services < public interface INfcHelper < NfcAdapterStatus GetNfcAdapterStatus(); void GoToNFCSettings(); >public enum NfcAdapterStatus < Enabled, Disabled, NoAdapter >>
и используем всё это в коде MainPage.xaml.cs:
protected override async void OnAppearing() < base.OnAppearing(); await CheckNfc(); >private async Task CheckNfc() < var nfcHelper = DependencyService.Get(); var status = nfcHelper.GetNfcAdapterStatus(); switch (status) < case NfcAdapterStatus.Enabled: default: await App.DisplayAlertAsync("nfc enabled!"); break; case NfcAdapterStatus.Disabled: nfcHelper.GoToNFCSettings(); break; case NfcAdapterStatus.NoAdapter: await App.DisplayAlertAsync("no nfc adapter found!"); break; >>
Что такое эмуляция карты NFC Android и как это работает
NFC
Погрузившись в мили описаний преобразования реальных банковских карт в виртуальные аналоги, я понял, что просто не могу передать эту информацию, даже в сжатом виде, в поле статьи. Он не написан для массового читателя, набит специальными терминами и выглядит слишком научным. В статье речь пойдет об эмуляции карт NFC на Android. Поэтому — более-менее сложно!
Что такое эмуляция карты
Существует очень специфическая технология HCE (Host Card Emulation), которая позволяет воссоздать дублирующую карту NFC, которая является бесконтактным методом подключения к внешнему миру. Это, безусловно, требует некоторого программного обеспечения, которое поможет вам во втором рождении вашего «пластика». О чем мы говорим?
В него входят банковские карты, карты общественного транспорта, рабочие пропуска и множество других необходимых для повседневной жизни «электронных ключей».
Есть два основных подхода к процессу клонирования карты. Вся информация о нем может храниться во встроенном компоненте безопасности, при этом файл данных зашифровывается и хранится на самом мобильном устройстве. Или он переносится в облачное хранилище и защищается от несанкционированного доступа паролем для входа.
На протяжении всей этой истории нас в первую очередь интересовали банковские карты и связанная с ними концепция бесконтактных платежей.
Это будет продолжаться, другие функции эмуляции носят эпизодический характер и практикуются любознательными продвинутыми пользователями.
Следует отметить, что NFC-кластер Android работает с учетной записью Google, предварительно определенной вами, в случае, если на мобильном устройстве установлена другая операционная система (на ум приходит только продукция Apple), сделать двойной платежный инструмент будет работать с телефоном. Это означает, что он имеет встроенный чип, в котором хранится буквально все, что связано с вашим банковским счетом и идентификационной информацией.
В целом, все устройства, имеющие собственный «банк данных», имеют одну очень привлекательную особенность. Доступ к нему ограничен. Строго говоря, его нет даже в операционной системе устройства, и никто не сможет что-либо извлечь без вашей помощи.
Более того, такие устройства позволяют совершать бесконтактные платежи без помощи Интернета. Все необходимое для транзакции теперь у вас под рукой.
Как это работает
До 2017 года на эту тему было написано около десятка статей. С появлением новых приложений, таких как Google Pay, Samsung Pay и Apple Pay, страсти были поддержаны. Процесс виртуализации физического «пластика» был заметно упрощен, и многие проблемы, связанные с этой процедурой, исчезли сами собой. В марте прошлого года был запущен проект Android Pay (создатель Google, который затем был преобразован в современную версию), описанный подробно и очень конкретно. С тех пор в алгоритм эмуляции было внесено очень мало изменений.
Вот как это работает сегодня.
- Прежде всего, выберите и скачайте необходимое приложение из предложенных.
- Установите его на свой смартфон.
- Затем переходите к главному — имитировать банковскую карту. Его необходимо отсканировать, а оставшиеся необходимые данные ввести вручную. Ничего особенного, информация о владельце банковского счета, домашний адрес, код CVV на обратной стороне «пластика», номер телефона.
- Согласитесь с пользовательским соглашением.
- Подтвердите по SMS, что введенные данные верны.
- Карта эмулируется, она у вас есть и хранится в приложении. В нужный момент просто активируйте модуль NFC и саму программу. Оплата будет произведена немедленно.
Отдельно остановлюсь на процедуре «депонирования» куда-нибудь дубликата пластиковой карты; все другие небанковские носители данных могут быть отнесены к этой категории.
Интересные китайские умы сделали процедуру переноса физического объекта в память смартфона столь же удобной и несложной. Вам необходимо загрузить эмулятор карты NFC из Play Market и установить его на свое устройство. Затем активируйте чип NFC (без него вам не обойтись), запустите приложение и верните в телефон то, что вы хотите скопировать.«Пластик» появится на виртуальном изображении в самой программе, затем вам нужно будет щелкнуть по нему и переместить на объект взаимодействия.
Каким же удивлением будут охранники на вашей работе, когда турникет у ворот откроется после подключения к нему вашего смартфона. Бывшие полицейские из службы безопасности не любят сюрпризов, и они поймают вас с помощью смертельного трюка. Правда, ненадолго.
Что требуется для эмуляции
Эмулятор карты NFC и рут-права на вашем устройстве уже упоминались. Дело в том, что для изменения настроек в NFC (без него никак не обойтись) придется что-то менять в системных файлах. Что может сделать только суперпользователь.
Вот уловка, которую нельзя не заметить. Предыдущее описание изготовления виртуальной платежной карты возможно только на полностью «чистом» телефоне. Что я имею в виду. У вас должна быть официальная прошивка, Root-права должны отсутствовать.
Только в этом случае можно будет произвести оплату. Это означает, что если вы хотите, чтобы на вашем устройстве было буквально все, что должно вас расстраивать. Вам придется что-то выбрать. Вы либо платите в магазине, либо идете в бассейн с эмулированным пропуском. Это так сегодня, может быть, в будущем произойдут изменения к лучшему.
Безопасность
Недавно он заглянул в мой старый Xiaomi MI3 и был очень удивлен. Устройство имеет собственный элемент безопасности! В меню настроек есть возможность выбрать место хранения: встроенное или на SIM-карте. Что касается последнего расположения, то на практике оно не учитывалось из-за сложности реализации. В настоящее время облачное хранилище Google широко распространено, и те, кому повезло, могут похвастаться наличием собственного специального чипа.
Возможные проблемы
Среди возможных ошибок отмечу одну, но самую «сложную» для пользователей. Несколько лет назад мы боролись с сообщением операционной системы: «Нет безопасности». Эмуляция карты NFC будет отключена ». С появлением реально работающих инструментов передачи платежных карт в виртуальном мире эти ошибки исчезли. Это многое говорит об уровне последних разработок.
Эмуляция карты Android NFC в наши дни не является утомительным и сложным делом. По крайней мере, те, кто хочет воспользоваться бесконтактным способом оплаты покупок, легко извлекут максимум пользы из разжеванных на фотографиях шагов по подключению карты в приложении, предварительно установленном на их собственном телефоне. Все это доступно онлайн.
Как добавить пропуск в телефон через NFC – алгоритм действий
NFC
Сегодняшняя бесконтактная технология имеет ограниченный диапазон — не более десяти сантиметров. Этот процесс происходит на частоте 13,56 МГц. Информация считывается автоматически, если пара гаджетов находится в зоне действия соединения. Устройство NFS не только передает информацию, но и считывает теги, служит эмулятором пластиковых карт, выполняет идентификацию пользователя, позволяя использовать мобильное устройство вместо платежной карты. Предлагаем вам понять, как добавить пропуск на телефон с помощью NFC.
Суть работы
Мобильный телефон заменяет значок. Прикоснув смартфон к считывателю, вы позволяете системе распознавать идентификатор, проверять базу данных и разблокировать электронный замок, если доступ разрешен.
Для стабильной работы вам потребуются:
- Мобильный гаджет на операционной системе Android или iOS;
- установка мобильного приложения;
- Модуль NFS в телефоне;
- Система ACS.
Преимущества применения НФС в СКУД
В этой системе можно использовать любое устройство NFS как:
- ID — сотрудник со смартфоном использует его вместо карты доступа;
- считыватель — контроль доступа можно организовать с помощью смартфона.
Преимущества использования NFS в ACS следующие:
- создание эффективной системы безопасности;
- устройство мобильной системы управления;
- установка мобильного пункта пропуска на любом объекте
- ограничение доступа к определенному месту;
- экономия средств на приобретение карт доступа, установка соответствующих устройств.
Мобильный телефон с NFC можно использовать как пропуск для одновременной работы в нескольких системах управления.
Следует отметить, что NFC, как эмулятор значка, удобен в использовании. Например, при плановой смене системы паролей присутствие сотрудника с его мобильным устройством не обязательно, что очень важно для срочных мер по обеспечению безопасности.
Для сотрудника организации такой вариант пропускной системы удобен тем, что в случае утери или выхода из строя бесконтактной карты проблем не возникнет — смартфон продублирует проездной.
Безопасность
Его необходимый уровень обусловлен психологическим фактором: сотрудник уделяет достаточно внимания своему мобильному телефону, риск его потери намного ниже, чем у платежной карты.
Кроме того, во время связи мобильные устройства, интегрированные с системой контроля и управления трафиком, размещаются рядом друг с другом. Это сводит к минимуму вероятность перехвата информации злоумышленниками, что возможно в процессе использования Bluetooth.
Появляется возможность использовать многофакторную аутентификацию, что значительно повышает безопасность.
Для повышения эффективности к общей системе СКУД можно подключить другие элементы управления, например видеокамеры.
Как интегрировать пропуск в телефон?
Единственный способ скопировать пропуск смартфона с чипом NFS — вручную перенести микрочип с карты на телефон. В этом случае адаптер будет работать в любых условиях.
Вы не сможете сохранить его как платежную карту, потому что чип платежной карты работает на другой частоте, которая составляет 125 кГц, и имеет специальную кодировку для дополнительной защиты.
Итак, как подключить пропуск к телефону с поддержкой NFC? Алгоритм действий следующий:
- сначала чип, запрограммированный на считывание информации с турникета, удаляется из пропуска;
- используя ацетон или обезжириватель пластика, смягчаем проход;
- Для этого переложите пропуск в подходящую емкость, полейте его серединкой и накройте пластиком. Через три-четыре часа карта деформируется;
- аккуратно снимаем пластик, освобождая стружку. Будьте осторожны и аккуратны в своих действиях;
- Для дополнительной безопасности соединение между катушкой и микрочипом следует укрепить липкой лентой;
- встроить свой дизайн в сотовый телефон, приклеив микрочип к аккумулятору или внутренней поверхности задней панели;
- Соберите смартфон, осмотрите корпус, чтобы убедиться, что внешний вид устройства не изменился.
Прежде чем начать, потребитель обязательно долженпоймите, что нужно быть осторожным — провода тонкие, их легко повредить.
Заключение
Теперь вы знаете, как сымитировать передачу на мобильном телефоне с помощью NFC.Качество работы можно проверить только во время посещения рабочего места.