Comandos APDU: Interagindo por Meio de Instruções e Respostas
O ICCID (Identificação de Cartão de Circuito Integrado) é um número único atribuído a cada cartão SIM (Subscriber Identity Module) e desempenha um papel essencial na identificação e autenticação dos dispositivos de telecomunicações. Composto por informações como código do país, tipo de arquivo e condições de acesso, o ICCID possibilita a programação e interação com os cartões SIM, utilizando comandos APDU (Application Protocol Data Unit) para acessar dados, realizar verificação de PIN e outras operações cruciais para o funcionamento correto dos dispositivos em redes de telecomunicações.
O ICCID (Integrated Circuit Card Identification) é um número único atribuído a cada cartão SIM (Subscriber Identify Module) utilizado em dispositivos de telecomunicações. Essa sequência de dígitos desempenha um papel fundamental na identificação e autenticação dos cartões SIM em redes de telecomunicações.
A estrutura do ICCID é padronizada e consiste em vários elementos que fornecem informações valiosas sobre o cartão SIM. Vamos analisar alguns desses elementos em mais detalhes.
Os primeiros dois dígitos do ICCID são sempre "89". Essa sequência é conhecida como código da indústria e indica que o cartão SIM é destinado ao uso em redes de telecomunicações. É uma informação importante para os operadores de rede, pois ajuda a identificar e diferenciar os cartões SIM de outros dispositivos.
Os dígitos seguintes, geralmente de dois a seis, representam o código do país. Essa informação é estabelecida pela União Internacional de Telecomunicações (UIT) e fornece uma identificação geográfica do país de origem do cartão SIM. Essa informação é útil para fins de rastreamento e gerenciamento de cartões SIM em nível global.
Além disso, o ICCID é composto por outros elementos que fornecem detalhes sobre a estrutura do cartão SIM e suas características. Por exemplo, existem bytes específicos que indicam o tipo de arquivo associado ao ICCID. Esses tipos de arquivo podem ser RFU (Reserved for Future Use), MF (Master File), DF (Dedicated File) ou EF (Elementary File). Cada tipo de arquivo possui funcionalidades e atributos específicos, determinando como os dados são armazenados e acessados no cartão SIM.
Outros elementos do ICCID incluem informações sobre as condições de acesso aos arquivos, o status dos arquivos (invalidado ou não invalidado), a estrutura dos arquivos (transparente, linear fixo ou cíclico) e o comprimento dos registros nos arquivos lineares fixos e cíclicos. Essas informações são cruciais para entender como os dados estão organizados no cartão SIM e como eles podem ser acessados e manipulados por meio de comandos e instruções adequadas.
No contexto da programação e interação com o ICCID, são utilizados comandos APDU (Application Protocol Data Unit) para enviar instruções ao cartão SIM e receber respostas. Esses comandos, como "Select MF", "Select EF ICCID", "Get Response" e "Read Binary", permitem selecionar arquivos, obter respostas do SIM e ler os dados armazenados nos arquivos do ICCID.
Comandos:
CLA - Tem apenas um comando padrão
INS - Indica a ação (Selecionar, Obter e Ler)
P1, P2 e P3 são parâmetros de instrução
P3 fornece o comprimento dos elementos de dados
A0(CLA) é um comando padrão em comandos GSM
A4(INS) indica o comando "SELECIONAR"
B0(INS) indica o comando "LER"
2FE2 indica o identificador do arquivo EF
Um DF deve ser selecionado antes da seleção de qualquer um de seus EFS. Todas as seleções são feitas usando o ID do arquivo.
Comandos APDU:
A0 A4 00 00 02 3F 00
// Selecionar MF
A0 A4 00 00 02 2F E2
// Selecionar EF ICCID
A0 C0 00 00 0F
// Obter Resposta
A0 B0 00 00 0A
// Ler Binário
A0 D6 00 00 0W
// Atualizar Binário
( W = comprimento da nova sequência de dados )
A0 f2 00 00 0A
// Status
A0 B2 0x 0y 0z
// Ler registro
A0 DC 0x 0y 0z
// Atualizar registro
(x = Registro a ser lido,
y = modo,
z = comprimento do registro)
Verificação do PIN (CHV)
x = comprimento da chave do CHV
A0 20 00 0x 08
{Chave do CHV}
Ativar PIN (CHV)
28 00 01 08
Verificação da chave de administrador {
x = comprimento da chave de administrador
00 20 00 0A 0X
{ADM_KEY}
ou
00 20 00 81 0x
{ADM_KEY}
}
Chave de Cifragem = 70
Contexto:
Enviar o comando "Selecionar MF".
Após enviar o comando "Selecionar EF ICCID", o SIM responderá com SW1 = 9F e SW2 = 0F.
Em seguida, o comando "Obter resposta" retornará SW1 = 90 e SW2 = 00.
Bytes:
1 e 2 RFU
3 e 4 -> Mostrar o comprimento atual do arquivo.
5 e 6 -> Mostrar o ID do arquivo.
7 -> Tipo de arquivo:
'00' RFU;
'01' MF;
'02' DF;
'04' EF.
8 -> Para EFs transparentes e lineares fixos, este byte é RFU. Para um EF cíclico, todos os bits, exceto o bit 7, são RFU;
b7=1 indica que o comando INCREASE é permitido no arquivo cíclico selecionado.
9, 10 e 11 - Condições de acesso (consulte 9.3)
12 - status do arquivo (consulte 9.3):
0 = invalidado
1 = não invalidado
13 -> comprimento dos dados seguintes (byte 14 até o final)
14 -> Estrutura do arquivo:
'00' transparente;
'01' linear fixo;
'03' cíclico.
15 -> Comprimento de um registro (para EFs cíclicos e lineares fixos, este byte indica o comprimento de um registro. Para um EF transparente, este byte deve ser codificado como '00', se for enviado pelo SIM.)
O conteúdo de um EF transparente pode ser lido enviando:
LER BINÁRIO:
A0 00 B0 00 0A
Fonte: https://tsemh.com/