• Nenhum resultado encontrado

4 PROPOSTA DE SOLUÇÃO

4.2 MODELAGEM DO SISTEMA PROPOSTO

4.2.1 Loja Virtual

4.2.2.4 Diagrama de atividade

Segundo Booch (2006), um diagrama de atividades mostra o fluxo de uma atividade para outra em um sistema. Uma atividade mostra um conjunto de atividade, o fluxo sequencial ou ramificado de uma atividade para outra e objetos que realizam ou sofrem ações. Na figura 15 é apresentando o diagrama de sequência do bot.

Figura 15 – Diagrama de atividade bot.

DA001 – Ataque a loja.

O usuário inicia o bot definindo a quantidade de ataques.

1. O bot acessa a loja e gera uma lista com as urls dos produtos. 2. Ele gera uma pessoa falsa para a compra.

3. Finaliza a compra com um produto e dados gerados.

4.3 FERRAMENTAS UTILIZADAS

Nesta seção é apresentado as ferramentas utilizadas para o desenvolvimento da loja virtual e do bot.

4.3.1 Loja Virtual

Nesta secção é apresentada a linguagem e bibliotecas utilizadas para o desenvolvimento da loja virtual.

4.3.1.1 Java

Segundo Lemay (1996, p. 4) “Java é uma linguagem orientada a objetos desenvolvida pela Sun Microsystems. Utilizando influências do C++, o Java foi concebido para ser uma linguagem pequena, simples e portátil entre várias plataformas e sistemas operacionais”.

Lemay (1996, p. 6) complementa que como os objetivos do Java eram de ser pequeno, rápido, eficiente e a independência de plataforma estes mesmos objetivos tornaram a

linguagem ideal para o desenvolvimento de aplicações executáveis distribuídas pela World Wide Web.

4.3.1.2 Javalin

O Javalin é um micro framework escrito em Java e Kotlin para o desenvolvimento de aplicações web (principalmente aplicações REST) que busca simplicidade, flexibilidade e leveza. O framework utiliza atualmente o Jetty como servidor Http.

4.3.1.3 SQLite

O SQLite é uma database SQL embutida, autocontida, transacional que não utiliza uma arquitetura cliente-servidor. Ela suporta transações ACID e operações com valores em JSON. O código do SQLite está no domínio público e pode ser utilizado para qualquer propósito, seja público, comercial ou privado.

4.3.2 Bot

Nesta seção é apresentada a linguagem utilizada e ferramentas de auxílio ao desenvolvimento do bot.

4.3.2.1 Python

De acordo com Borges (2010, p. 13) O Python possui uma sintaxe clara e concisa, que favorece a legibilidade do código fonte, tornando a linguagem mais produtiva.

Segundo BORGES (2010, p. 14):

A linguagem foi criada em 1990 por Guido van Rossum, no Instituto Nacional de Pesquisa para Matemática e Ciência da Computação da Holanda (CWI) e tinha originalmente foco em usuários como físicos e engenheiros. O Python foi concebido a partir de outra linguagem existente na época, chamada ABC.

É importante ressaltar que “além de ser utilizado como linguagem principal no desenvolvimento de sistemas, o Python também é muito utilizado como linguagem script em vários softwares, permitindo automatizar tarefas e adicionar novas funcionalidades.” (BORGES, 2010, p. 13)

4.3.2.2 Selenium

O Selenium automatiza os navegadores. Comumente, é utilizado para automatizar aplicativos da Web para fins de teste, mas não se limita apenas a isso.

O Selenium tem o apoio de alguns dos maiores fornecedores de navegadores que tomaram medidas para tornar o Selenium uma parte nativa de seu navegador. É também a principal tecnologia em inúmeras outras ferramentas de automação de navegadores, APIs e frameworks.

4.3.2.3 GeckoDriver

GeckoDriver é um driver utilizado para abrir instancias do browser, para abrir os sites nos testes automatizados via Selenium WebDriver.

5 DESENVOLVIMENTO

Neste capítulo, são abordadas as definições do desenvolvimento, etapas, experimentos e resultados obtidos.

5.1 DINÂMICA DO DESENVOVIMENTO

Durante o processo de desenvolvimento da proposta, não foi encontrado uma base de dados pública e de utilização gratuita, contendo compras realizadas por humanos e por bots, logo uma dinâmica de desenvolvimento foi proposta pelo o orientador do trabalho visando a construção de uma base de dados para o treinamento do classificador bayesiano.

A dinâmica foi constituída de duas partes, uma versão mais simples da loja virtual, que seria utilizada para coletar e armazenar dados e métricas para o treinamento e um bot que ficaria responsável em atacar a loja para gerar compras fraudulentas. Cada um dos autores ficou responsável por desenvolver uma parte, um responsável pela loja e outro pelo bot. Ambos os autores não sabiam como estava sendo feito a implementação das partes para assim evitar que fosse realizado um experimento viciado.

Ao fim do desenvolvimento da loja simplificada a mesma foi divulgada entre amigos e colegas dos autores e em redes socias para a coleta de dados de treinamento.

5.2 ETAPAS DO DESENVOLVIMENTO

Nesta seção é apresentado o processo de desenvolvimento da loja virtual, do bot e do método de Bayes, explicando em detalhes cada etapa e dificuldades encontradas no desenvolvimento.

5.2.1 Loja

Para desenvolver a loja virtual era necessário escolher linguagens e bibliotecas para o desenvolvimento tanto da parte visual quanto da parte lógica.

Na parte lógica da loja foi utilizada a linguagem de programação Java pela a afinidade dos autores com a mesma, a biblioteca Javalin que é uma biblioteca para o desenvolvimento de aplicações web construído em cima do servidor web Jetty e como banco de dados foi escolhido o SQLite devido a sua facilidade de implementação e também por ser um banco de dados embutido, assim facilitando a implantação da loja virtual em um ambiente de produção.

Na figura 16, é apresentado como os componentes citados se relacionam Figura 16 - Componentes e Ferramentas Utilizadas na Loja Virtual

. Fonte: Autores

5.2.2 Bot

Para desenvolvimento do bot é necessário que ele agisse de forma mais autônoma, e também que abrisse navegadores web para simular ações de um usuário normal.

Sendo assim foi optado pela escolha do desenvolvimento em Python pela escalabilidade e velocidade de desenvolvimento. Para a navegação e manipulação dos objetos de html, foi utilizado uma biblioteca muito conhecida que é a Selenium. E por fim o Geckodriver que é um driver que possibilita abrir várias instâncias de um navegador.

Na figura 17 é apresentado a interação das ferramentas utilizadas para desenvolvimento do bot.

Fonte: Autores

Como ilustrado na figura 17, todo desenvolvimento feito na linguagem Python utilizando a biblioteca externa Selenium, juntos abrem e operam ações no navegador, e executando ações previamente definidas.

5.2.3 Bayes

Para a implementação do classificador naive bayes foram consideradas algumas bibliotecas prontas disponíveis publicamente como exemplo a biblioteca WEKA, desenvolvida pela universidade de Waikato, e algumas implementações encontradas no GitHub. Foi optado por uma das implementações encontradas no GitHub devido a sua facilidade de utilização e documentação direta e clara. O código fonte está disponível em https://github.com/ptnplanet/Java-Naive-Bayes-Classifier.

5.3 EXPERIMENTO

As aplicações foram desenvolvidas com uma dinâmica entre os autores do trabalho, um ficou responsável por desenvolver a loja virtual e o outro ficou responsável por desenvolver o bot, sendo que as partes não sabiam como e o que cada implementou.

A escolha da dinâmica entre os autores foi proposta pelo orientador do trabalho, para trazer um nível de realismo ao experimento. O fluxo do experimento pode ser observado no fluxograma apresentado na figura 18:

Figura 18 – Fluxograma das etapas do experimento.

Fonte: Autores

Como não foi encontrado uma base de dados disponível que se encaixasse no cenário proposto, uma primeira versão da loja virtual foi construída com intuito de coletar dados para o treinamento do classificador bayesiano.

Tanto a loja quanto o bot foram desenvolvidos em paralelo, sem que um autor soubesse o que o outro estava fazendo e parametrizando.

Após a conclusão do desenvolvimento da loja virtual, a mesma foi divulgada em redes sociais e entre colegas e amigos dos autores.

Concluindo três semanas de coletas de dados da loja, foi efetuado o ataque o ataque a mesma com o bot, assim encerrando o processo de coleta de dados.

Por fim foram compilados os dados que foram utilizados no treinamento do classificador bayesiano e também o mesmo foi implementado e integrado na loja virtual.

5.3.1 Loja

O desenvolvimento da loja virtual foi simples e direto e sem muitos problemas. Primeiramente foram elaboradas e codificadas as telas da página principal, do catálogo, do carrinho, dos detalhes do produto, do checkout e a de agradecimento. Na figura 19 é apresentado o catálogo de produtos da loja virtual.

Figura 19 – Catalogo de produtos da loja virtual.

Fonte: Autores

Após feita as telas, começou a implementação das interações do usuário com a tela, como por exemplo, a adição de um produto ao carrinho. Na figura 20 é apresentado o checkout da loja virtual.

Figura 20 – Checkout da loja virtual.

Fonte: Autores

Para finalizar foi escrita a parte de persistência das compras realizadas pelos usuários e foram realizados testes simples para garantir o funcionamento básico.

5.3.2 Bot

O desenvolvimento do bot foi dividido em algumas etapas. Primeiramente ele coleta todos os produtos que estão expostos na loja, depois baseado na quantidade de ataques que o usuário determinou ele gera usuários falsos e por fim ele faz a compra na loja para cada usuário gerado.

Inicialmente ele foi projetado para reutilizar a mesma janela do navegador, porém, descobriu-se que o Geckodriver não é “safe thread” pois notou-se que utilizar várias threads no mesmo driver ocorria muitos erros, então foi optado por subir 10 instâncias do driver por vez e efetuar o ataque e finaliza-los.

Durante o ataque o Bot salva em um arquivo “json” dados falsos utilizados no preenchimento do formulário de compra, e também ele gera um arquivo “log” descrevendo o que aconteceu em cada etapa do processo do ataque à loja.

5.3.3 Bayes

Para o treinamento do classificador bayesiano, a loja coletou diversos dados nas compras realizadas pelos usuários, entre eles:

 As informações preenchidas nos campos.  O tempo de foco em cada campo do formulário.  Produtos que foram comprados.

 Tempo desde o início da compra até a finalização.  Quantidade de vezes que o catálogo foi visitado.

 Quantidade de vezes que a página de detalhes do produto foi visualizada.

Entre os dados mencionados acima, foram utilizadas as informações de tempo do foco em cada campo do formulário e o tempo por caractere devido a notável diferença observada entre compras realizadas por humanos e pelo bot. A loja em si não acompanha o tempo por caractere, mas um tempo aproximado foi calculado utilizando o tempo de foco total no campo dividido pela quantidade de caracteres digitadas.

𝑇𝑒𝑚𝑝𝑜 𝑑𝑒 𝑓𝑜𝑐𝑜 𝑛𝑜 𝑐𝑎𝑚𝑝𝑜 𝑁𝑢𝑚. 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠 𝑑𝑜 𝑐𝑎𝑚𝑝𝑜

Uma problemática encontrada durante o preparo dos dados de treinamento foi que os dados escolhidos eram numéricos e o classificador bayesiano trabalha com dados categóricos. Para solucionar este problema foi realizada a categorização dos dados coletados, utilizando uma escala determinada pelos autores. As escalas utilizadas para o tempo de foco e o tempo por caractere foram as seguintes demonstradas na figura 19:

Figura 19 – Categorização dos dados coletados.

Fonte: Autores

Após determinar como os dados seriam categorizados, foi feita uma análise dos dados e foram extraídos cinquenta registros de compras realizados por pessoas reais.

Com estes registros, foi aplicado a classificação dos dados, utilizando a categorização apresentada anteriormente.

O mesmo processo de categorização foi feito com os registros de compras realizadas pelo bot.

Com as informações categorizadas, foram criados arquivos de texto simples para armazenamento dos dados de treinamento e foram anexados ao código da loja.

Ao iniciar, a loja carrega estas informações pré compiladas para o treinamento do classificador.

5.4 RESULTADOS

Nesta seção é apresentado os resultados gerados pelo desenvolvimento proposto, tabelas e análises.

5.4.1 Tempo de Foco

O tempo de foco representa quanto tempo em milissegundos o usuário levou para digitar uma informação em um dos campos do formulário. Nas figuras 20 e 21 são apresentados o menor, o maior e o tempo médio de focos em cada campo do formulário preenchido pelo bot e por humanos respectivamente.

Figura 20 – Estatística de compras realizadas pelo bot

Fonte - Autores

Figura 21 – Estatística de compras realizadas por humanos

Fonte – Autores

Observando as tabelas é possível observar uma grande discrepância entre pessoas reais e o bot em todas as colunas.

5.4.2 Matriz de Confusão

A matriz de confusão é uma tabela onde é possível observar a precisão de um algoritmo supervisionado. Na figura 22 é apresentada a matriz de confusão utilizando um esquema de teste 50/50, ou seja, 50% das tentativas foram realizadas por humanos e as outras 50% pelo bot.

Figura 22 – Matriz de confusão

Fonte: Autores

É possível observar que em duas instâncias o classificador bayesiano previu erroneamente a classe, no caso da classificação errônea do humano como bot foi devido a utilização da funcionalidade de autopreenchimento do formulário do navegador.

Documentos relacionados