Use o Android (android studio) e o celular Apple ios para ler e gravar o conteúdo do cartão NFC (MifareUltralight) para experimentar o processo pessoalmente

Recentemente, preciso comprar alguns cartões nfc para operações de leitura e escrita. O objetivo é usar telefones celulares para realizar alguns processos de negócios.

Taobao compra um cartão de 1-2 yuans, as informações fornecidas pelo vendedor: o chip do cartão é 215

O conteúdo encontrado na Internet é todo parágrafo por parágrafo. Agora integro todas as informações que utilizo para saber como operá-las depois de ler um artigo.

O Android oferece suporte a telefones NFC, que são mais fáceis de usar e mais confortáveis

Os telefones celulares da Apple são um pouco especiais e têm muitas restrições. Eles não são tão abertos quanto o Android. As instruções para usar cartões NFC são as seguintes:

A leitura do iPhone requer iphone7 + ios12 ou superior para ter a função nfc. Ao ler o número de série do cartão não pode ser lido diretamente, você precisa instalar o NFC TagWriter por NXP_v4.8.2_apkpure.com.apk (para download no Google play) para gravar Após o cartão, a Apple pode ler o conteúdo escrito

 

1. O cartão pertence à especificação do formato MifareUltralight, que é a seguinte:

https://blog.csdn.net/wxh0000mm/article/details/79708807?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

Há dois lugares aqui que são especialmente exclusivos para adicionar: os artigos da web na Internet não são explicados com clareza e estou um pouco tonto.

1. O número de série do cartão é lido em hexadecimal

2. O bloqueio na página2 é marcado com binário (e depois convertido para hexadecimal).

 

Estrutura de armazenamento:

Número de página

Byte0

Byte1

Byte2

Byte3

Descrição

0

SN0

SN1

SN2

BCC0

Somente leitura, armazene o número de série do cartão: os primeiros 3 bytes da Página0 + toda a Página1

Aqui está a leitura hexadecimal (observe o método de leitura, outros documentos da web não são marcados)

1

SN3

SN4

SN5

SN6

2

BCC1

Guarda

LOCK0

LOCK1

Somente leitura, 16 páginas podem ser configuradas para somente leitura configurando LOCK0 e LOCK1

Configuração do modo binário (observe o modo de leitura, outros documentos da web não são marcados)

3

OTP0

OTP1

OTP2

OTP3

Ler e escrever, contador de transações único, irreversível

4

Data0

Data1

Data2

Data3

Ler e escrever, área de armazenamento de dados

5

Data0

Data1

Data2

Data3

6

Data0

Data1

Data2

Data3

7

Data0

Data1

Data2

Data3

8

Data0

Data1

Data2

Data3

9

Data0

Data1

Data2

Data3

10

Data0

Data1

Data2

Data3

11

Data0

Data1

Data2

Data3

12

Data0

Data1

Data2

Data3

13

Data0

Data1

Data2

Data3

14

Data0

Data1

Data2

Data3

15

Data0

Data1

Data2

Data3

 

 O terceiro e o quarto bytes da Página2 são usados ​​para bloquear a área de armazenamento como somente leitura. Conforme mostrado na figura abaixo, se um bit de L4-L15 for definido como 1, o conteúdo do número de série correspondente será bloqueado como somente leitura. Cada página é Pode ser definido individualmente. Lotp é usado para bloquear a Página3 como somente leitura. O Lotp-L15 pode bloquear outros, esses próprios bits são bloqueados por três bits BL, BL15-10 é usado para bloquear L15-L10, BL9-4 é usado para bloquear L9-L4 e BLotp é usado para bloquear Lotp. Todas essas 16 posições de bloqueio também possuem características OTP. Em termos genéricos, esses "bloqueios" não têm "chaves" e, uma vez bloqueados, não podem ser revertidos, por isso tome cuidado ao bloquear.

 

Por exemplo, lock1 corresponde ao binário de 8 bits 11110000, 1 significa que o bloqueio é somente leitura e, em seguida, o binário é convertido em hexadecimal e escrito no cartão

Configuração do modo binário (observe o modo de leitura, outros documentos da web não são marcados)

2. Existem muitas maneiras de ler e escrever online, e o método de escrita é o seguinte:

https://www.cnblogs.com/sjjg/p/4783743.html

O pro-teste é válido, meu endereço de download do código-fonte de teste: https://download.csdn.net/download/qq_16005627/12366636

Expanda através dos métodos de leitura e gravação acima

1. Como ler o número de série do cartão

public String readTagc(Tag tag) throws Exception {
    //读数据 第1步,从nfc标签中得到MifareUltralight
    MifareUltralight ultralight = MifareUltralight.get(tag);

    try {
        //读数据 第2步,接连
        ultralight.connect();
        //读数据 第3步,从ultralight数据中的下标为4的位开始读数据.
        byte[] data = ultralight.readPages(0);
        byte[] serialNumber = new byte[7];
        serialNumber[0] = data[0];
        serialNumber[1] = data[1];
        serialNumber[2] = data[2];
        serialNumber[3] = data[4];
        serialNumber[4] = data[5];
        serialNumber[5] = data[6];
        serialNumber[6] = data[7];
        String CardCode = bytes2HexString(serialNumber);       
        return CardCode ;
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            ultralight.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
    }
    return null;
}

 

// Hexadecimal para string

private static String bytes2HexString(final byte[] bytes) {
    if (bytes == null) return "";
    int len = bytes.length;
    if (len <= 0) return "";
    char[] ret = new char[len << 1];
    for (int i = 0, j = 0; i < len; i++) {
        ret[j++] = HEX_DIGITS[bytes[i] >> 4 & 0x0f];
        ret[j++] = HEX_DIGITS[bytes[i] & 0x0f];
    }
    return new String(ret);
}

private static final char[] HEX_DIGITS =
        {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

 

Em segundo lugar, defina o bloqueio na página 2

ultralight.writePage(2, hexString2Bytes("DF48f000"));//第2页 LOCK设置     11110000二进制转16进制

// Hex para byte

public static byte[] hexString2Bytes(String src) 
    int l = src.length() / 2;
    byte[] ret = new byte[l];
    for (int i = 0; i < l; i++) {
        ret[i] = (byte) Integer
                .valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue();
    }
    return ret;
}

Alunos que se sentem bem, lembrem-se de gostar!

 

Acho que você gosta

Origin blog.csdn.net/qq_16005627/article/details/105786523
Recomendado
Clasificación