O que e Jaccal?Jaccal (Java Card Communication Access Layer) e uma antiga API de comunicacao Smart Card para aplicacoes Java e desde de 2006 nao recebe atualizacoes, provavelmente por conta da introducao da API Java Smart Card I/O no Java 6.Porque Jaccal?Ele e uma otima ferramenta para se testar rapidamente aplicacoes Smart Card de maneira facil e descomplicada, gracas a uma poderosa e simples Interface Grafica de Scripts. Porem voce nao utilizara a API Jaccal para desenvolver suas aplicacoes Java, considere nesse caso utilizar a API Java Smart Card I/O.O Material Necessario:Cartao Java Card de Desenvolvimento com o Applet Hello World instalado.Leitor / Gravador padrao PC/SC ISO7816.Jaccal Instalado na maquina.O Jaccal pode ser baixado gratuitamente no seguinte endereco: http://jaccal.sourceforge.net/ Apos baixar o Jaccal, instale-o no lugar de sua preferencia, eu aconselho ser na raiz C: para ser de facil acesso.Por ser desenvolvido em Java, o Jaccal necessita de ao menos uma JRE instalada na maquina.Apos instalado, va ao diretorio de instalacao e voce vera dois executaveis o "jaccal.exe" e "anubis.exe", execute entao a aplicacao anubis.exe.Editor de Scripts AnubisOk, nao parece ser grande coisa a primeira vista, mas ele e exatamente do jeito que eu gosto, simples, rustico, facil de usar e por consequencia eficiente.O Programa possui apenas quatro botoes com as seguintes funcoes (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 e um script extremamente simples, vamos entao analisar algumas linhas chaves neste script:Na linha 1, o comando open() realiza toda a funcao de se conectar ao cartao na leitora, esse comando retorna o atr do cartao que na linha 2 e impresso pelo comando prints(atr).Na linha 5, o comando new ApduCmd("00A4...") cria um cmd que nada mais e que um APDU de envio para o cartao que e tambem impresso pelo comando da linha 6 prints(cmd).Na linha 7 o APDU cmd criado na linha 5 e transferido para o cartao atraves do comando execute(cmd) que retorna a resposta do cartao em card_response, impresso na linha 8 pelo comando prints(card_response). No caso card_response pode ou nao conter dados mas ele sempre contera o Status Word SW1 e SW2.Por fim na Linha 16 o comando close() finaliza a comunicacao com o cartao, e sempre importante que seus scripts contenham o comando close() no final pois se nao o canal de comunicacao ficara aberto e futuras tentativas de comunicacao com o cartao terminara em erros. Caso esqueca do close() voce podera forcar esse comando atraves do botao Reset do Anubis.Execute o Script clicando no botao Run.Uma segunda aba e criada e preenchida com os testes do script.Para interpretar o resultado dos testes e igualmente simples, como pode ver existe uma Tag seguido pelos bytes de teste onde [ATR] e o Answer To Reset do cartao, [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