O que é Jaccal?
Jaccal (Java Card Communication Access Layer) é uma antiga API de comunicação Smart Card para aplicações Java e desde de 2006 não recebe atualizações, provavelmente por conta da introdução da API Java Smart Card I/O no Java 6.
Porque Jaccal?
Ele é uma ótima ferramenta para se testar rapidamente aplicações Smart Card de maneira fácil e descomplicada, graças a uma poderosa e simples Interface Gráfica de Scripts. Porém você não utilizará a API Jaccal para desenvolver suas aplicações Java, considere nesse caso utilizar a API Java Smart Card I/O.
O Material Necessário:
- Cartão Java Card de Desenvolvimento com o Applet Hello World instalado.
- Leitor / Gravador padrão PC/SC ISO7816.
- Jaccal Instalado na máquina.
O Jaccal pode ser baixado gratuitamente no seguinte endereço:
Após baixar o Jaccal, instale-o no lugar de sua preferência, eu aconselho ser na raiz C: para ser de fácil acesso.
Por ser desenvolvido em Java, o Jaccal necessita de ao menos uma JRE instalada na máquina.
Após instalado, vá ao diretório de instalação e você verá dois executáveis o "jaccal.exe" e "anubis.exe", execute então a aplicação anubis.exe.
Editor de Scripts Anubis |
ENTRE EM CONTATO PARA ADQUIRIR SOFTWARE
Ok, não parece ser grande coisa a primeira vista, mas ele é exatamente do jeito que eu gosto, simples, rústico, fácil de usar e por consequencia eficiente.
O Programa possui apenas quatro botões com as seguintes funções (da esquerda para a direita), Open (Carrega um Script), Save (Salva um Script), Run (Executa um Script) e Reset (Reseta a camada PC/SC).
Escrevendo o Script :
- atr = open();
- prints(atr);
- prints("Select Application");
- cmd = new ApduCmd("00A404000B0102030405060708090000");
- prints(cmd);
- card_response = execute(cmd);
- prints(card_response);
- prints("Teste Bytes");
- cmd = new ApduCmd("00000000060A0B0C0D0E0F");
- prints(cmd);
- card_response = execute(cmd);
- prints(card_response);
- close();
Como pode ter notado é um script extremamente simples, vamos então analisar algumas linhas chaves neste script:
Na linha 1, o comando open() realiza toda a função de se conectar ao cartão na leitora, esse comando retorna o atr do cartão que na linha 2 é impresso pelo comando prints(atr).
Na linha 5, o comando new ApduCmd("00A4...") cria um cmd que nada mais é que um APDU de envio para o cartão que é também impresso pelo comando da linha 6 prints(cmd).
Na linha 7 o APDU cmd criado na linha 5 é transferido para o cartão através do comando execute(cmd) que retorna a resposta do cartão em card_response, impresso na linha 8 pelo comando prints(card_response). No caso card_response pode ou não conter dados mas ele sempre conterá o Status Word SW1 e SW2.
Por fim na Linha 16 o comando close() finaliza a comunicação com o cartão, é sempre importante que seus scripts contenham o comando close() no final pois se não o canal de comunicação ficará aberto e futuras tentativas de comunicação com o cartão terminará em erros. Caso esqueça do close() você poderá forçar esse comando através do botão Reset do Anubis.
Execute o Script clicando no botão Run.
Uma segunda aba é criada e preenchida com os testes do script.
Para interpretar o resultado dos testes é igualmente simples, como pode ver existe uma Tag seguido pelos bytes de teste onde [ATR] é o Answer To Reset do cartão, [S] indica um APDU de envio (Send), [R] indica um APDU de resposta (Receive) e [SW] o Status Word (SW1 e SW2).
O Jaccal possui alguns módulos internos como GSM, serviços de criptografia SAM (Security Authentication Module), Global Platform e funções para cartões MULTOS.
Porém esses módulos são muito mau documentados e pode acabar sendo um bom desafio coloca-los para funcionar.
0 comments:
Post a Comment