Как эмулировать тег NFC FeliCa с помощью определенного сервисного кода и блокировать данные в Python?Python

Программы на Python
Ответить
Anonymous
 Как эмулировать тег NFC FeliCa с помощью определенного сервисного кода и блокировать данные в Python?

Сообщение Anonymous »

Я работаю над проектом по эмуляции тега NFC с определенными сервисными кодами и блокировке данных в Python с помощью nfcpy. Моя цель — прочитать карту, захватить ее данные (сервисные коды, блоки и содержимое), а затем эмулировать этот тег с точной структурой данных, чтобы считыватель распознавал его как исходную карту.
Код выполняется. без ошибок, и я вижу выходные сообщения типа «тег активирован», но устройство чтения по-прежнему не распознает эмулируемый тег, как это происходит с исходной картой. Кроме того, я не могу правильно установить сервисный код таким образом, чтобы обеспечить правильное чтение и запись данных на основе блоков, полученных с исходной карты.
Вот что я сделал. далеко:

[*]Я могу успешно считать данные с карты, включая сервисные коды и данные блокировки, с помощью nfcpy.

[*]На основании данных I снято, я настроил среду эмуляции с помощью nfcpy на USB-считывателе NFC (Sony RC-S380).

[*]Я попробовал добавление служб с помощью tag.add_service() и определение функций ndef_read и ndef_write для предоставления данных на уровне блоков.

< /ol>
Я могу успешно считать данные с карты, включая сервисные коды и данные блоков, используя nfcpy. На основе собранных данных я настроил среду эмуляции с помощью nfcpy на USB-считывателе NFC (Sony RC-S380). Я пробовал добавлять службы с помощью tag.add_service() и определять функции ndef_read и ndef_write для предоставления данных на уровне блоков.
Вот пример моего кода:

Код: Выделить всё

    import nfc
import struct

ndef_data_area = bytearray(64 * 16)
ndef_data_area[0] = 0x10  # NDEF mapping version '1.0'
ndef_data_area[1] = 12    # Number of blocks that may be read at once
ndef_data_area[2] = 8     # Number of blocks that may be written at once
ndef_data_area[4] = 63    # Number of blocks available for NDEF data
ndef_data_area[10] = 1    # NDEF read and write operations are allowed
ndef_data_area[14:16] = struct.pack('>H', sum(ndef_data_area[0:14]))  # Checksum

def ndef_read(block_number, rb, re):
if block_number < len(ndef_data_area) / 16:
first, last = block_number * 16, (block_number + 1) * 16
return ndef_data_area[first:last]

def ndef_write(block_number, block_data, wb, we):
global ndef_data_area
if block_number < len(ndef_data_area) / 16:
first, last = block_number * 16, (block_number + 1) * 16
ndef_data_area[first:last] = block_data
return True

def on_startup(target):
idm, pmm, sys = '03FEFFE011223344', '01E0000000FFFF00', '12FC'
target.sensf_res = bytearray.fromhex('01' + idm + pmm + sys)
target.brty = "212F"
return target

def on_connect(tag):
print("tag activated")

tag.add_service(0x1A88, ndef_read, ndef_write)
tag.add_service(0x000B, ndef_read, lambda: False)
return True

with nfc.ContactlessFrontend('usb:054c:06c1') as clf:
while clf.connect(card={'on-startup': on_startup, 'on-connect': on_connect}):
print("tag released")
Мои вопросы:
Как правильно эмулировать тег NFC с определенными сервисными кодами и блокировать данные, чтобы читатель интерпретировал их точно так же, как оригинал? карта? Есть ли что-то особенное для nfcpy, чего мне не хватает при настройке сервисных кодов или данных блока, что может повлиять на эмуляцию? Существуют ли лучшие библиотеки или методы для эмуляции тегов FeliCa, особенно если nfcpy имеет ограничения в обработке служебного кода?
Будем очень признательны за любые советы и предложения! Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... a-in-pytho
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»