Cartão de Crédito Eletrônico



Documentos relacionados
ESTUDO DE CASO WINDOWS VISTA

Um Driver NDIS Para Interceptação de Datagramas IP

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Orientação a Objetos

NETALARM GATEWAY Manual Usuário

Cadastramento de Computadores. Manual do Usuário

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

4 Estrutura do Sistema Operacional Kernel

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Fundamentos de Sistemas Operacionais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Controle do Arquivo Técnico

Quadro de consulta (solicitação do mestre)

Objetivo. Este documento tem como objetivo demonstrar o conceito, o processo de instalação e o funcionamento do SITEF (Tef dedicado).

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

3. Arquitetura Básica do Computador

Arquitetura de Rede de Computadores

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

PARANÁ GOVERNO DO ESTADO

Processos e Threads (partes I e II)

Sistemas Operacionais

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador.

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

5 Entrada e Saída de Dados:

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS

Entendendo como funciona o NAT

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

MANUAL DE CONFIGURAÇÃO

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Sumário 1. SOBRE O NFGoiana DESKTOP Apresentação Informações do sistema Acessando o NFGoiana Desktop

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

IW10. Rev.: 02. Especificações Técnicas

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Sistemas Operacionais

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Sistema de Controle de Solicitação de Desenvolvimento

Everson Scherrer Borges João Paulo de Brito Gonçalves

Comparativo de desempenho do Pervasive PSQL v11

Sistema Operacional Correção - Exercício de Revisão

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração.

1. Instalei o DutotecCAD normalmente no meu computador mas o ícone de inicialização do DutotecCAD não aparece.

Manual do usuário. Mobile Auto Download

Principais Comandos SQL Usados no MySql


Geral: Manual de Utilização do Software de Teste Gradual Windows

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Considerações a serem feitas antes da implantação.

SOLICITAÇÃO DO CERTIFICADO DIGITAL

CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO

Tutorial de Active Directory Parte 3

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva

Programa de Atualização de Pontos do Lince GPS

Sr. Advogado, leia com atenção antes de adquirir seu certificado digital:

Tarefa Orientada 16 Vistas

4. Quais são os serviços que podem ser utilizados através desta Tecnologia? 6. O Adaptador PLC causa um aumento no consumo de Energia Elétrica?

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Portal Sindical. Manual Operacional Empresas/Escritórios

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

MANUAL DO ADMINISTRADOR LOCAL. Entidade Municipal

1. CAPÍTULO COMPUTADORES

1- Requisitos mínimos. 2- Instalando o Acesso Full. 3- Iniciando o Acesso Full pela primeira vez

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

SISTEMAS OPERACIONAIS LIVRES GERENCIAMENTO DE SERVIÇOS NO WINDOWS. Professor Carlos Muniz

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Manual SAGe Versão 1.2 (a partir da versão )

Considerações no Projeto de Sistemas Cliente/Servidor

Introdução aos Computadores

Henry Equipamentos Eletrônicos e Sistemas Ltda.

Disciplina: Introdução à Informática Profª Érica Barcelos

Engenharia de Software III

TRUESAFE 2010 SISTEMA INTEGRADO DE CONTROLE DE ACESSO MAXTEL

MULTIACERVO Implementações da versão 19 - Completa

SISTEMAS OPERACIONAIS

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

1) Botão "Ler Versão": apresenta a versão do firmware do leitor de cartões acoplado;

Cartão BRB Pré-Pago. Como adquirir

BH PARK Software de Estacionamento

Manual do módulo Hábil NFS-e Emissor de Nota Fiscal de Serviço Eletrônica

Manual de Instalação... 2 RECURSOS DESTE RELÓGIO REGISTRANDO O ACESSO Acesso através de cartão de código de barras:...

Programa de Instalação do Lince GPS

Placa Acessório Modem Impacta

Aplicação Prática de Lua para Web

Manual Operacional SIGA

Desenvolvendo Websites com PHP

KVM CPU Switch 4 Portas Manual do Usuário

Transcrição:

Centro Universitário Positivo UnicenP Núcleo de Ciências Exatas e Tecnológicas NCET Engenharia da Computação Zorday Teixeira Cavalcanti Cartão de Crédito Eletrônico Curitiba 2005

Centro Universitário Positivo UnicenP Núcleo de Ciências Exatas e Tecnológicas NCET Engenharia da Computação Zorday Teixeira Cavalcanti ii Cartão de Crédito Eletrônico Monografia apresentada à disciplina de Projeto Final, como requisito à conclusão do Curso de Engenharia da Computação. Orientador: Prof. Luiz C. Albini. Curitiba 2005

TERMO DE APROVAÇÃO iii Zorday Teixeira Cavalcanti Cartão de Crédito Eletrônico Monografia aprovada como requisito à conclusão do curso de Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca examinadora: Prof. Luiz Carlos Pessoa. Albini (Orientador) Prof. Adriana Cursino Thomé Prof. Marcelo Mikosz Gonçalves Curitiba, 12 de dezembro de 2005

AGRADECIMENTOS iv Agradeço a Deus por ter me dado tantas oportunidades, e ter iluminado meu caminho em todos os momentos de minha vida. Agradeço aos meus pais, Vânia e Elias, e avó, Vanda, pelos conselhos e ajudas prestados em momentos exatos, que me ajudaram a crescer e vencer na vida. Agradeço a minha irmã Suemar e meus amigos, Deise, Mei, Roberto, Rogério, Fabio, Grecco, etc., por sempre acreditarem e apoiarem minhas tarefas, mesmo quando eu mesmo já havia desacreditado. Agradeço minha namorada Beatriz pela compreensão e apoio no desenvolvimento deste projeto, mesmo sendo necessárias tantas privações e várias noites inteiras de trabalho.

SUMÁRIO 1 - INTRODUÇÃO... 11 1.1 - MOTIVAÇÃO... 12 1.2 - DEFINIÇÃO DO TRABALHO... 13 1.3 - CONTEXTUALIZAÇÃO NOS DIAS ATUAIS... 14 1.4 - DESCRIÇÃO DAS PRINCIPAIS FUNCIONALIDADES... 14 2 - FUNDAMENTAÇÃO TEÓRICA... 17 2.1 - TEORIA DO SOFTWARE... 17 2.1.1 LINGUAGEM C... 17 2.1.2 LINGUAGEM VISUAL BASIC... 18 2.1.3 MYSQL... 18 2.1.4 - CRIPTOGRAFIA... 22 2.2 - TEORIA DO HARDWARE... 23 2.2.1 COMPUTADORES DE MÃO... 23 2.2.2 MICROPROCESSADOR RABBIT... 24 2.2.3 IRDA... 25 2.2.4 ETHERNET... 25 2.2.5 DISPLAY LCD... 26 2.2.6 TECLADO... 26 2.2.7 COMUNICAÇÃO SERIAL... 27 3 - ESPECIFICAÇÃO... 28 3.1 - COMPUTADOR DE MÃO:... 28 3.2 - SISTEMA AUXILIAR:... 30 3.3 - COMPUTADOR:... 33 4 - PROJETO... 35 4.1 REQUISITOS MÍNIMOS PARA O FUNCIONAMENTO DO PROJETO... 35 4.2 REQUISITOS DESEJADOS PARA O FUNCIONAMENTO DO PROJETO... 35 4.3 - HARDWARE... 36 4.4 - SOFTWARE... 37 4.4.1 - COMPUTADOR DE MÃO... 38 4.4.2 - SISTEMA AUXILIAR... 42 4.4.3 - COMPUTADOR... 45 5 - TESTES DE VALIDAÇÃO DO PROJETO... 52 6 RESULTADOS... 53 6.1 COMPUTADOR DE MÃO... 53 6.2 SISTEMA AUXILIAR... 56 6.3 COMPUTADOR... 60 7 - CONCLUSÕES... 61 8 - CRONOGRAMA DE DESENVOLVIMENTO... 62 9 - ESTUDO DE VIABILIDADE TÉCNICO-ECONÔMICA... 63 10 APÊNDICE... 64 11 - REFERÊNCIAS BIBLIOGRÁFICAS... 67

LISTA DE FIGURAS 6 Figura 1 - Diagrama de Bloco Geral do Sistema... 14 Figura 2 - Diagrama de Blocos do Módulo do Computador de Mão... 30 Figura 3 - Diagrama de Blocos do Sistema Auxiliar... 33 Figura 4 - Diagrama de Blocos do Computador... 34 Figura 5 - Esquemático de interligação Rabbit/teclado e display LCD... 37 Figura 6 - Legenda do DFD... 38 Figura 7 - Interface para cadastro de cartões... 39 Figura 8 - Interface para edição e eliminação de cadastro... 39 Figura 9 - Interface principal para escolha de cartão para pagamento... 40 Figura 10 - DFD nível 0 do computador de mão... 41 Figura 11 - DFD nível 1 do computador de mão... 41 Figura 12 - Repositório de dados de cartões no computador de mão... 42 Figura 13 - DFD nível 0 do sistema auxiliar... 44 Figura 14 - DFD nível 1 do sistema auxiliar... 44 Figura 15 - Interface para cadastro de clientes... 46 Figura 16 - Interface para cadastro cartões dos clientes... 46 Figura 17 - Interface para consulta de faturas dos cartões... 47 Figura 18 - Interface para cadastro de estabelecimentos... 47 Figura 19 - Interface para consulta de pagamentos dos estabelecimentos... 48 Figura 20 - Interface para consulta de operações realizadas... 48 Figura 21 - DFD nível 0 do computador... 50 Figura 22 - DFD nível 1 do computador... 50 Figura 23 - Modelo relacional do banco de dados do computador... 51 Figura 24 - Visão geral do sistema montado... 53 Figura 25 - Interface principal do computador de mão... 54 Figura 26 - Interface de cadastro de cartões do computador de mão... 55 Figura 27 - Interface para edição e eliminação de registros do computador de mão... 55 Figura 28 - Visão geral do sistema auxiliar... 57 Figura 29 - Protótipo do sistema auxiliar... 57 Figura 30 - Vista frontal do protótipo... 58 Figura 31 - Vista traseira do protótipo... 58 Figura 32 - Comprovante de compra ainda na miniimpressora... 59 Figura 33 - Comprovante impresso de pagamento... 59 Figura 34 - Interface de histórico de operações... 60

LISTA DE TABELAS 7 Tabela 1 Estimativa de Custos...65

LISTA DE SIGLAS 8 OS Operational System; LCD Liquid Crystal Display; ANSI American National Standards Institute; SQL Linguagem Estruturada para Pesquisa; DES Data Encryption Standard; RSA Rivest-Shamir-Adleman; MHz Mega Hertz; IRDA Infrared Data Association; IRLAP Link Access Protocol; IRLMP Link Management Protocol; IAS Information Access Service; DNS Domain Name System; TCP Transmission Control Protocol; IP Internet Protocol; IHM Interface Homem-Máquina; CNPJ Cadastro Nacional de Pessoa Jurídica; CPF Cadastro de Pessoa Física; CI Circuito Integrado; DFD Diagrama de Fluxo de Dados.

RESUMO 9 Este projeto tem o objetivo de promover a virtualização dos cartões de crédito utilizando-se os mesmos através de computadores de mão do tipo Palm. Esta utilização é realizada através da transferência de dados do computador de mão para um sistema auxiliar baseado no microprocessador Rabbit, com o uso da tecnologia do conexão infravermelha. O projeto simula a utilização real do sistema de compras através do uso de cartões de crédito, inclusive tendo um servidor dedicado de dados para registro de todas as informações necessárias. O benefício trazido por este projeto é para os usuários de sistemas Palm, pois este tipo de pessoas está interessada em ter o maior número de funcionalidades ao seu dispor, tendo que carregar para isto, a menor quantidade de objetos possíveis. Portanto, com este projeto, em determinados casos, a carteira poderia ser deixada em casa, e se carregaria apenas o computador de mão. Palavras-chave: computador de mão, cartão de crédito, conexão infravermelha, microprocessador Rabbit, servidor de dados

ABSTRACT 10 This project has the purpose of make credit cards become electronics, using handhelds of kind Palm This utility is made transferring data between the Palm and an auxiliary system based on the microprocessor Rabbit, using an infrared connection. The project simulates the real system of buys with credit cards, having until a dedicated server to keep all the needed data. The benefit of this project is for Palm users, because this kind of people wants to have the bigger number of features, taking a less number o objects. So this project can, in some cases, give the option for the user to leave the wallet in house. server Keywords: handheld, credit card, infrared connection, microprocessor Rabbit, data

1 - INTRODUÇÃO 11 Com o passar dos anos várias tecnologias foram desenvolvidas, porém, em diversos casos, estas tecnologias são desenvolvidas de forma separada e dificilmente vêem a ser integradas para que se possa obter o maior proveito das mesmas. Duas tecnologias que foram desenvolvidas e até o presente, não possuem nenhuma ligação, são os cartões de crédito e os computadores de mão. Os cartões de crédito são utilizados cada vez mais para realização de compras pela internet, pelo telefone e nos próprios estabelecimentos, proporcionando assim uma maior segurança e agilidade nas compras realizadas. E cada vez mais são desenvolvidos aparelhos e métodos que tornem a utilização desta forma de pagamento mais atrativa. Por outro lado, os computadores de mão, têm cada vez mais assumido a função de extensão do desktop, oferecendo mais recursos e com isto ganhando maiores funcionalidades do que servirem apenas como agenda eletrônica, além, claro, dos diversos programas que aparecem para este tipo de plataforma a cada dia. Temos então estas duas tecnologias que trabalham muito bem separadamente. Este trabalho busca justamente a união delas, ou seja, a utilização de cartões de crédito, eletronicamente, através de computadores de mão. Durante o decorrer da especificação deste trabalho serão apresentados fatores ligados ao conceito do trabalho, como, a motivação para realização do mesmo, a definição formal do trabalho, como o mesmo foi desenvolvido e qual o objetivo alcançado com este desenvolvimento, e neste estágio serão apresentados os três grandes módulos nos quais se divide o trabalho. Posteriormente será apresentada a contextualização deste trabalho nos dias atuais, ou seja, qual benefício pode trazer para as pessoas na atualidade e para finalizar a parte introdutória serão apresentadas as principais funcionalidades do sistema módulo a módulo. Passada esta parte introdutória serão apresentadas as teorias das tecnologias que foram utilizadas durante a implementação do trabalho, dividindo a explicação destas teorias em teorias de software e de hardware. Logo após apresentadas as teorias envolvidas no desenvolvimento do trabalho, será apresentada diretamente a especificação do trabalho em si. Apresentando módulo a módulo todos os componentes que fazem parte dos mesmos, definindo assim todas as ferramentas que foram necessárias para a concretização deste trabalho. Posteriormente, será apresentado o projeto de forma mais detalhada e com seus componentes definidos segundo métodos formais.

12 Após esta definição de tudo que esta presente, será definido como foram feitos os testes de verificação e validação do sistema, para comprovar a funcionalidade do mesmo. Baseado nos testes realizados serão apresentados os resultados obtidos no desenvolvimento do projeto e logo após, serão apresentadas as conclusões obtidas a partir destes resultados. Encerrando este documento, será apresentado o cronograma de desenvolvimento do trabalho, desde a fase de aprovação da proposta do projeto final, até a fase de entrega da documentação final do projeto. Além disso, um breve estudo de viabilidade técnico-econômica da realização do projeto, apenas levando em consideração os equipamentos essenciais para o desenvolvimento do mesmo. 1.1 - MOTIVAÇÃO Com a invenção dos cartões como forma de dinheiro (cartão de crédito, débito e etc.), muitas pessoas têm dado prioridade a esse tipo de recurso para a realização de compras. Isso ocorre devido às vantagens que a utilização dos mesmos proporciona, como agilidade e segurança. Antigamente dispúnhamos apenas de recursos como dinheiro e cheque. Isto fazia com que as pessoas andassem com grandes quantias de dinheiro ou talões de cheques no bolso, proporcionando assim, certa falta de segurança, pois estes meios significava grandes atrativos para ladrões e pessoas mal intencionadas. Por outro lado, para os comerciantes, aceitar pagamentos em cheque significava um outro perigo, pois os mesmos não tinham, e não tem até hoje, a garantia de pagamento. Sem contar que o tempo gasto com o preenchimento de cheques, dependendo do tipo de estabelecimento, causa um aborrecimento muito grande aos outros clientes. Já com o dinheiro plástico, esses problemas não acontecem. Pois se carrega apenas o cartão e, no caso do cartão de débito, ele é protegido por senha e o crédito/débito do valor da compra ocorre no ato da realização da mesma. Liberando o cliente da obrigação de andar com o dinheiro para realização da compra, e garantindo o recebimento ao estabelecimento. Com o cartão de crédito, o crédito/débito não ocorre no ato da compra, mas a garantia do pagamento também é certa. Para a pessoa o valor fica vinculado a sua próxima fatura e para o comerciante o recebimento deste

13 valor é garantido pela administradora do cartão na data de contrato. Portanto o cliente ganha um prazo para pagar a dívida e o comerciante têm a garantia de recebimento. Outra tecnologia que ganhou grande mercado nos últimos anos foi o computador de mão. Que trás grande número de funcionalidades, como entretenimento e extensão de desktops. Porém estes dispositivos foram criados com o intuito de diminuírem o volume dos objetos carregados por seus portadores e isto, atualmente, não é possível, pois as pessoas necessitam de suas carteiras para realizarem suas compras. Portanto o projeto visa à busca deste conceito dos computadores de mão, possibilitando assim a utilização dos mesmos para a realização de compras, através da virtualização de seus cartões. 1.2 - DEFINIÇÃO DO TRABALHO O sistema proporciona a virtualização do cartão do crédito através de computadores de mão do tipo Palm. Portanto os usuários deste tipo de sistema poderão utilizar o próprio computador de mão para realizar compras através de seus cartões de crédito. O sistema será composto de três grandes módulos, são eles: Computador de mão: Para este módulo foi desenvolvido um software, o qual servirá para toda a interação do usuário final. Nele os usuários devem cadastrar seus cartões de crédito e poderão utilizá-los posteriormente na realização de compras. Para este trabalho foi utilizado um computador de mão do tipo Palm ; Sistema auxiliar: O sistema auxiliar serve para realizar a validação do trabalho. Este faz a simulação das máquinas de compra via cartão existente nos estabelecimentos, onde são validadas e realizadas as compras efetivas. Este sistema auxiliar conta ainda com certos dispositivos que as máquinas atuais não possuem. O desenvolvimento foi realizado em hardware, baseado no microprocessador Rabbit com seu kit de desenvolvimento, e faz conexão, tanto com o computador de mão quanto com o computador;

14 Computador: Existe um computador que serve para fazer a simulação do servidor de dados da operadora de cartão de crédito, onde o sistema auxiliar consulta a veracidade dos dados recebidos. Através do diagrama de blocos da Figura 1, obtem-se uma visão de como é o funcionamento do trabalho como um todo. Computador de mão Kit do Rabbit RCM3000/RCM3100 Computador para validação dos dados Comunicação Infravermelha Comunicação Ethernet Figura 1 - Diagrama de Bloco Geral do Sistema 1.3 - CONTEXTUALIZAÇÃO NOS DIAS ATUAIS Através da utilização do sistema, os portadores de computadores de mão podem optar pela eliminação da carga de suas carteiras, utilizando o mesmo para realização de suas compras. Pode-se, portanto crer numa grande aceitação do sistema entre o público alvo. Pois este público geralmente procura o maior número de utilidades em seus computadores de mão, e este sistema poderá proporcionar a eliminação de um elemento a mais que é carregado pelo usuário, já que a própria Palm têm quase o tamanho de uma carteira. 1.4 - DESCRIÇÃO DAS PRINCIPAIS FUNCIONALIDADES Para que serve cada bloco que compõe o trabalho? Quais os componentes destes blocos? Estas são, basicamente, as perguntas respondidas neste tópico.

Computador de Mão: 15 Tem a função de realizar as compras utilizando-se dos dados dos cartões de crédito do usuário cadastrados no software que roda no mesmo. O usuário é o responsável por cadastrar os dados de seus cartões, para posteriormente poder utilizálos em compras. Foi desenvolvido um software que roda no sistema operacional PalmOS, e faz acesso aos recursos disponíveis na plataforma. Como por exemplo, o recurso de conexão infravermelho disponível neste tipo de computadores, ao menos na maioria dos modelos. Sistema Auxiliar: O sistema auxiliar é o responsável pela conexão direta via infravermelho com o computador de mão, recendo através desta os dados do cartão de crédito do cliente. Após recebidos os dados, uma conexão do tipo ethernet deverá ser estabelecida com o computador. Nesta conexão são transmitidos os dados do cartão e do estabelecimento para serem verificados com a base de dados. Além dos dispositivos que tornam estas conexões possíveis, alguns dispositivos auxiliares devem estar presentes neste sistema, como: display LCD; teclado; miniimpressora; memória flash. Tudo isto para que o funcionamento deste sistema auxiliar possa se equiparar ao máximo com as máquinas de compras via cartões de crédito disponíveis atualmente. Antes que o sistema auxiliar possa funcionar de forma automática, os dados de cadastro do estabelecimento devem ser gravados na memória flash do sistema. Isto para que o mesmo possa ser identificado posteriormente, tanto em suas conexões, quanto em seus comprovantes emitidos. Este sistema foi desenvolvido com base no kit de desenvolvimento do processador Rabbit, que dispõe de grande parte dos recursos necessários para desenvolvimento do trabalho, como as conexões e acesso aos recursos descritos.

O kit de desenvolvimento será detalhado posteriormente na especificação do sistema auxiliar. 16 Computador: O computador tem a função de verificar a veracidade dos dados enviados pelo computador de mão para o sistema auxiliar. Similarmente ao que acontece com as compras feitas com o próprio cartão\ em terminais de compras convencionais com leitores de tarjas magnéticas. Portanto o computador tem a função do servidor de dados da operadora de cartão de crédito, porém aplicado especificamente para verificação de dados recebidos pelo sistema auxiliar. Como se pode observar, o sistema é um espelhamento do sistema real utilizado atualmente pelas operadoras de cartões de crédito, porém com parâmetros internos especificados para este trabalho. Além de obter proporções bem inferiores. Neste módulo está presente uma conexão ethernet, um software responsável pela realização de todas as operações necessárias, e um banco de dados que serve para armazenamento dos dados dos clientes, estabelecimentos e todas as operações que ocorrem no mesmo. Ou seja, através deste banco de dados, pode-se observar que comprou o quê, aonde e de quem, além de tentativas de utilização não permitidas dos cartões de crédito, como em caso de roubo.

2 - FUNDAMENTAÇÃO TEÓRICA 17 Serão apresentadas agora as teorias das tecnologias que serão citadas posteriormente na especificação do trabalho em si. Deste modo a especificação ficará mais clara e limpa. 2.1 - TEORIA DO SOFTWARE 2.1.1 LINGUAGEM C A linguagem C é uma linguagem derivada da linguagem B, criada na década de 70. Ela foi desenvolvida em sistemas operacionais UNIX, e era distribuída junto a este sistema em sua versão 5. Porém com o aparecimento, e popularidade dos microcomputadores, várias implementações da linguagem foram aparecendo, e que quase por milagre eram compatíveis entre si. Em 1983 foi criado um padrão para a linguagem para acabar com as discrepâncias, chamado de C ANSI [16]. A linguagem C é considerada de nível médio, o que não significa que ela tem menos recursos que uma linguagem de nível alto, nem que ela é menos poderosa que uma linguagem de nível baixo. Ao contrário disto, esta linguagem é considerada de nível médio por ter vários recursos dos dois grupos e com algumas vantagens. Por exemplo, um conceito que pertence as linguagens de alto nível e que está presente na linguagem C é a definição de tipos de dados. Esta linguagem tem ainda recursos que possibilitam a manipulação de bits, bytes e endereços, elementos básicos do funcionamento de computadores. O que a aproxima de uma linguagem de baixo nível [16]. A linguagem C ainda é muito portátil entre diversas plataformas, ou seja, com apenas pequenas modificações, um programa escrito em linguagem C pode rodar em um sistema diferente daquele em que foi escrito [16]. Outra característica da linguagem C é que esta linguagem é estruturada, não em blocos, pois a mesma não permite a criação de funções dentro de outras funções, como em linguagens de nível alto, mas tem a principal característica desta classificação que é a compartimentalização do código e dos dados. Ou seja, a linguagem consegue seccionar e esconder do resto do programa todas as informações

18 necessárias para se realizar uma tarefa específica. Isto é feito através do uso de subrotinas que empregam variáveis locais. Com isto, os eventos ocorridos dentro das subrotinas causam efeito apenas nelas mesmas, isolando-as de outras partes do programa, e evitando efeitos inesperados em funções separadas. Com isto os programas em linguagem C podem compartilhar facilmente seções de código, precisando-se saber apenas o que determinada função faz, e não como ela faz [16]. Graças a esta grande variedade de atributos, que esta linguagem pode ser empregada a diversos tipos de aplicações, sem deixar a desejar em nenhum aspecto. 2.1.2 LINGUAGEM VISUAL BASIC O Visual Basic é uma combinação de ferramentas visuais no ambiente Windows com a combinação Basic. Portanto os programas em Visual Basic são compostos de dois componentes principais, o componente visual (interface) e o componente de código (o que torna possível a execução de tarefas pelo programa) [17]. 2.1.3 MYSQL O programa MySQL é um servidor robusto de bancos de dados SQL (Structured Query Language - Linguagem Estruturada para Pesquisas) muito rápido, multi-tarefa e multi-usuário [15]. O MySQL é um banco de dados relacional, ou seja, ele armazena dados em tabelas separadas ao invés de colocar todos os dados em um só local. Isto proporciona velocidade e flexibilidade. Já o SQL é a linguagem padrão mais utilizada para acesso a bancos de dados. É definida pelo Padrão ANSI/ISSO SQL [15]. Juntado estas funcionalidades básicas do MySQL (banco de dados relacional, rápido e que utiliza a linguagem SQL), o que dá total confiança de utilização deste sem temer perdas bancos de dados conhecidos, ao fato deste ser livre, portanto, sem acarretar custos adicionais ao projeto, sua utilização fica evidente como a melhor escolha. A seguinte lista descreve algumas características mais importantes do Programa de Banco de Dados MySQL [15].

19 - Portabilidade Escrito em linguagem C e C++; Testado com uma ampla faixa de compiladores diferentes; Funciona em diversas plataformas; Utiliza o GNU Automake, Autoconf, e Libtool para portabilidade; APIs para linguagem C, C++, Eiffel, Java, Perl, PHP, Python, Ruby e Tcl estão disponíveis; Suporte total a multi-threads usando threads diretamente no kernel. Isto significa que se pode facilmente usar múltiplas CPUs, se disponível; Fornece mecanismos de armazenamento transacional e não transacional; Tabelas em disco (MyISAM) baseadas em árvores-b extremamente rápidas com compressão de índices; É relativamente fácil se adicionar outro mecanismo de armazenamento. Isto é útil para adicionar uma interface SQL a um banco de dados caseiro; Um sistema de alocação de memória muito rápido e baseado em processo (thread); Joins muito rápidas usando uma multi-join de leitura única otimizada; Tabelas hash em memória que são usadas como tabelas temporárias; Funções SQL são implementadas por meio de uma biblioteca de classes altamente otimizada e com o máximo de performance. Geralmente não há nenhuma alocação de memória depois da inicialização da pesquisa; O código do MySQL foi testado com Purify (um detector comercial de falhas de memória) e também com o Valgrind, uma ferramenta GPL; Disponível como versão cliente/servidor ou embutida (ligada). - Tipos de Coluna Aceita diversos tipos de campos: tipos inteiros de 1, 2, 3, 4 e 8 bytes com e sem sinal, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET e ENUM; Registros de tamanhos fixos ou variáveis; Comandos e Funções; Completo suporte a operadores e funções nas partes SELECT e WHERE das consultas. Por exemplo: mysql> SELECT CONCAT(first_name, " ", last_name) -> FROM nome_tbl -> WHERE income/dependents > 10000 AND age > 30;

20 Suporte pleno às cláusulas SQL GROUP BY e ORDER BY. Suporte para funções de agrupamento (COUNT(), COUNT(DISTINCT...), AVG(), STD(), SUM(), MAX() e MIN()); Suporte para LEFT OUTER JOIN e RIGHT OUTER JOIN com as sintaxes SQL e ODBC; Alias em tabelas e colunas são disponíveis como definidos no padrão SQL92; DELETE, INSERT, REPLACE, e UPDATE retornam o número de linhas que foram alteradas (afetadas). É possível retornar o número de linhas com padrão coincidentes configurando um parâmetro quando estiver conectando ao servidor; O comando específico do MySQL SHOW pode ser usado para devolver informações sobre bancos de dados, tabelas e índices. O comando EXPLAIN pode ser usado para determinar como o otimizador resolve a consulta; Nomes de funções não conflitem com nomes de tabelas ou colunas. Por exemplo, ABS é um nome de campo válido. A única restrição é que para uma chamada de função, espaços não são permitidos entre o nome da função e o '(' que o segue; Você pode misturar tabelas de bancos de dados diferentes na mesma pesquisa. - Segurança Um sistema de privilégios e senhas que é muito flexível, seguro e que permite verificação baseada em estações/máquinas. Senhas são seguras porque todo o tráfico de senhas é criptografado quando se conecta ao servidor; Escalabilidade e limites; Lida com bancos de dados enormes. Usamos o Servidor MySQL com bancos de dados que contém 50.000.000 registros e sabemos de usuários que usam o Servidor MySQL com 60.000 tabelas e aproximadamente 5.000.000.000 de linhas; São permitidos até 32 índices por tabela. Cada índice pode ser composto de 1 a 16 colunas ou partes de colunas. O tamanho máximo do índice é de 500 bytes (isto pode ser alterado na compilação do MySQL). Um índice pode usar o prefixo de campo com um tipo CHAR ou VARCHAR.

21 - Conectividade Os clientes podem se conectar ao servidor MySQL usando sockets TCP/IP, em qualquer plataforma. No sistema Windows na família NT (NT, 2000 ou XP), os clientes podem se conectar usando named pipes. No sistema Unix, os clientes podem se conectar usando arquivos sockets; A interface Connector/ODBC fornece ao MySQL suporte a programas clientes que usam conexão ODBC (Open-DataBase-Connectivity). Por exemplo, você pode usar o MS Access para conectar ao seu servidor MySQL. Os clientes podem ser executados no Windows ou Unix. O fonte do Connector/ODBC está disponível. Todas as funções ODBC são suportadas, assim como muitas outras. - Localização O servidor pode apresentar mensagem de erros aos clientes em várias línguas; Suporte total para vários conjuntos de caracteres, que incluem ISO-8859-1 (Latin1), big5, ujis e mais. Por exemplo, os caracteres Escandinavos 'â', 'ä', 'ö' são permitidos em nomes de tabelas e colunas; Todos os dados são armazenados no conjunto de caracteres escolhido. Todas as comparações em colunas de seqüências caso-sensitivo; A ordenação é feita de acordo com o conjunto de caracteres escolhido (o modo sueco por padrão). É possível alterar isso quando o servidor MySQL é iniciado. Para ver um exemplo de várias ordenações avançadas, procure pelo código de ordenação Tcheca. O Servidor MySQL suporta diversos conjuntos de caracteres que podem ser especificados em tempo de compilação e execução. - Clientes e Ferramentas O servidor MySQL foi construído com suporte para instruções SQL que verificam, otimizam e reparam tabelas. Estas instruções estão disponíveis a partir da linha de comando por meio do cliente myisamcheck. O MySQL inclui também o myisamchk, um utilitário muito rápido para realizar estas operações em tabelas MyISAM;

Todos os programas MySQL podem ser chamados com as opções --help ou -? para obter ajuda online. 22 2.1.4 - CRIPTOGRAFIA A criptografia é um recurso utilizado para proteção de dados. Este recurso pode ser utilizado no armazenamento dos dados no computador de mão, ou na comunicação dos dados entre os módulos do trabalho. A criptografia é uma ciência complexa que estuda meios de guardar dados de forma segura, para que estes possam ser acessados e entendidos apenas pelas pessoas desejadas. E para realização desta tarefa difícil, existem diversas maneiras diferentes, porém somente duas são interessantes neste momento, visto que uma delas pode ser implementada neste trabalho. A criptografia simétrica baseia-se na utilização da mesma chave para cifrar e decifrar a mensagem, e pode-se observar este tipo de criptografia através do algoritmo DES (Data Encryption Standard) [1] [2]. A criptografia assimétrica utiliza chaves diferentes para cifrar e decifrar as mensagens, e pode-se observar este tipo de criptografia através do algoritmo RSA (Rivest-Shamir-Adleman) [1] [2]. A criptografia DES existe desde 1977 [1], porém apresenta uma segurança considerável até hoje. Este sistema é baseado em chaves de 64bits. Neste tipo de criptografia, é utilizado um encadeamento de permutas, onde a mensagem em determinado momento é divida em duas partes e permutada separadamente. Posteriormente estas partes são reunidas, o que causa uma grande modificação na mensagem original. Este tipo de criptografia é ideal para utilização em dados que são armazenados localmente. Entretanto para os dados que são comunicados esta criptografia não é indicada, pois seria necessário que todo bloco que necessitasse reconhecer estes dados conhecessem estas chaves e procedimentos utilizados na realização da cifragem da mensagem. A criptografia RSA consiste na utilização de chaves públicas e privadas diferentes para cifrar e decifrar as mensagens, isto ocorre por causa de toda a matemática que está envolvida por trás deste algoritmo. Como este algoritmo está baseado em regras matemáticas, claro que ele torna-se vulnerável no sentido teórico de sua aplicabilidade, porém o que o torna tão eficiente e seguro é que as chaves selecionadas são

23 extremamente grandes. Mesmo utilizando computadores de grande potência demorase um tempo proibitivo para descobri-las. Isto atende a, talvez, a mais importante e aplicável, até hoje, das regras de Kerckhoffs do século XIX definidas em seu livro La Cryptographie Militaire [1], que diz o sistema deve ser, se não teoricamente (matematicamente) inquebrável, inquebrável na prática, e é isto que este sistema propõe utilizando chaves deste tamanho. No trabalho os dados devem obrigatoriamente estar protegidos em apenas um estágio, no armazenamento dos dados, ou na comunicação entre dois módulos, através de técnicas de criptografia desenvolvidas ou através de ferramentas já existentes que proporcionem esta proteção. Outras formas de proteção de dados são consideradas módulos adicionais do projeto, com objetivo de maior segurança do mesmo. 2.2 - TEORIA DO HARDWARE 2.2.1 COMPUTADORES DE MÃO Como o próprio nome já sugere, são sistemas completos, mais próximos possíveis de computadores, porém com tamanhos reduzidos, feitos para serem carregados e manuseados apenas com uma mão. Existe uma gama muito grande de programas direcionados para este tipo de sistema, deixando-os com maior número de funcionalidades, e assim, se equiparando cada vez mais com um computador de mesa. Grande parte destes sistemas utiliza arquitetura ARM[12], porém diversas outras arquitetura são encontradas, o que gera um grande número de plataformas existentes. Isto gera diversas particularidades no desenvolvimento de softwares para cada tipo de plataforma. O que justifica o porquê que foi necessário escolher um tipo específico como base para o projeto. Quase todos os computadores de mão, principalmente os mais atuais, já dispõem de dispositivo para conexão infravermelha. Neste projeto, não foi desenvolvido, em hardware, nada de novo para este tipo de sistema, apenas foram utilizadas, via software, as funcionalidades já disponíveis.