Buscar

Desenvolvimento de Sistema Biométrico de Identificação e Autenticação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Atividades Práticas Supervisionadas (APS)
“DESENVOLVIMENTO DE UM SISTEMA DE IDENTIFICAÇÃO E AUTENTICAÇÃO BIOMÉTRICA”
· 
Sumário
Objetivo do trabalho	3
Introdução	4
Fundamentos das principais técnicas biométricas	6
Plano de desenvolvimento da aplicação	13
Projeto do código	21
Relatórios de linhas do código	28
Imagens do Sistema	38
Ficha APS	42
Referências	45
Objetivo do trabalho
O objetivo deste trabalho pode ser definido primeiramente, pela comprovação do conhecimento sobre os conceitos e principais fundamentos do tema sugerido, os sistemas biométricos são uma das aplicações muito presentes e importantes da tecnologia atualmente. Por esse motivo e pelo contexto dessa tecnologia ser interessante, o tema também incita a curiosidade e aprofundamento de sistemas e áreas relacionadas, que são também objetivos da entrega do trabalho, comprovando que o uso de sistemas biométricos pode trazer um nível de segurança superior do que os sistemas de senhas, pensando que cada indivíduo possui sua própria digital, com suas linhas e reconhecimento único.
Seguido disso, a comprovação das competências técnicas obtidas na pesquisa e uso dos conhecimentos adquiridos em aula de forma prática, além familiarização para trabalhar com uma aplicação similar da tecnologia ao uso cotidiano são outros pontos relevantes para aquisição de experiências, tanto acadêmicas quanto profissionais, com o uso de técnicas que já estão presentes nos sistemas de empresas.
Por fim, é importante também o exercício da documentação do aprendizado formalmente como alunos, seguindo os padrões impostos pelo manual da APS
Introdução
A impressão digital, vem se tornando um aliado para a validação de dados, empresas, bancos e até nas eleições está presente essa tecnologia.
Antes de falar sobre o sistema, irei comentar um pouco sobre a história da biometria.
A biometria é uma ciência que faz a análise estatística sobre as características biológicas, a biometria então serve para fazer a validação entre duas impressões digitais por exemplo.
Francis Galton foi quem inventou a impressão digital em 1892, que foi muito utilizado nos departamentos de polícia pois era a forma mais confiável de identificação que eram feitas através de fotos ou tintas
A proposta do nosso sistema é implementar a ideia em um sistema do Ministério do meio Ambiente para eles terem o controle de acesso das pessoas que possam utilizar seu banco de dados para visualizarem informações sobre o uso de agrotóxicos proibidos nas propriedades rurais e a separação dos níveis de acesso será feita da seguinte forma
1. Todos podem ter acesso
2. Somente diretores de divisões
3. Somente ministro do meio ambiente
Então sabendo a “hierarquia” do banco, a forma de login proposta foi através da impressão digital do usuário que está querendo entrar no sistema, ou seja, no banco de dados, teremos todos os usuários que possuirão acesso ao sistema, não importando o nível, para um usuário entrar no sistema, será requerido a digital dele e através dessa digital coletada, o sistema faz a validação passando por todas as digitais presentes no banco e a que válida será redirecionado a tela de acordo com suas permissões, caso ele não seja cadastrado no banco, a digital coletada não dará a permissão do usuário entrar no sistema.
Essa forma de validação de dados vem sendo uma alternativa para o uso de senhas, muitos sistemas optam por sugerir que o usuário permita o desbloqueio de aplicativos por reconhecimento facial, como é utilizado em muitos celulares da nova geração, pela própria digital como é usado em catracas, caixas eletrônicos e recentemente usado para as eleições (porém com a pandemia muitos eleitores não tiveram suas digitais coletadas e tiveram que entrar pelo seu código de eleitor para validar seus votos).
Ao decorrer do trabalho, iremos citar 9 das técnicas de biometrias mais populares atualmente, sendo elas:
· Impressões digitais
· Impressões da palma da mão
· Íris
· Retina
· Rosto
· Geometria da mão
· Assinatura
· DNA
Ainda sobre as eleições, as urnas eletrônicas começaram a ser utilizadas a partir dos anos 2000, garantindo uma contagem de votos mais segura do que como era feita antigamente que era através do voto impresso. Em 2008, a biometria foi testada pela primeira vez em alguns municípios e em 2020(dado mais recente) cerca de 120 milhões de brasileiros já tinham registrados sua biometria para votar, com a pandemia, o cadastramento obrigatório da biometria foi suspensa, ou seja, nas eleições de 2022 terão 2 métodos de registro de voto, com a biometria e com a digitação dos dados manualmente.
Na área financeira, os bancos têm estudado muito sobre formas de segurança contra fraudes, principalmente em caixas eletrônicos, a biometria veio para amenizar os problemas, não resolver totalmente. Mais da metade dos caixas eletrônicos brasileiros possuem essa tecnologia de reconhecimento de digital, principalmente para sacar o dinheiro do caixa, eles requerem o reconhecimento digital, normalmente do dedo indicador, para a validação dos dados.
Fundamentos das principais técnicas biométricas
A biometria é amplamente utilizada como método de identificação e autenticação de sistemas de vários segmentos como bancos, urnas eleitorais, bloqueios de telefones celulares e identificação criminal.
A biometria surgiu no campo jurídico para individualização do indivíduo a fim de criar uma identificação criminal registrando os dados e sinais que caracterizam uma pessoa investigada. Nos séculos passados a forma que era utilizada para identificação de um indivíduo que cometia crime se dava através de marcação com ferro quente, mutilação da orelha, nariz, dedos e até mesmo amputação da mão.
Embora essas marcações fossem feitas para identificação de indivíduos criminosos também eram muito cruéis e em 1832 o jurista Benjamin Bentham propôs que fosse utilizado tatuagens para identificação dos indivíduos. Com o passar dos anos e o surgimento da fotografia no século 19 foram aperfeiçoados os métodos de identificação que nessa época usavam medidas corporais, retratos falados e anotações de particularidades como cicatrizes, manchas na pele etc. Com base em estudos anteriores Juan Vucetich criou um processo que identifica o indivíduo através das linhas das pontas dos dedos conhecido como “sistema datiloscópico de Vucetich".
Em 1903 o sistema datiloscópico de Vucetich foi introduzido na legislação brasileira através do decreto 4.764, então em caso de infração penal a polícia coleta a digital pelo processo datiloscópico e anexa ao antecedente criminal do indivíduo.
Com os avanços tecnológicos a biometria digital vem sendo utilizada eficientemente para identificar pessoas em diversas atividades que antes eram feitas manualmente como por exemplo a empresa Control ID que usa a biometria para controle de acesso a ambientes restritos em condomínios comerciais e residenciais. A Control ID também usa a biometria em soluções de controle de ponto. Hoje em dia todas as marcas consolidadas fabricantes de smartphones como Samsung, LG, Xiaomi e Apple utilizam a biometria digital para desbloqueio do sistema operacional e aplicativos. Nas últimas eleições a biometria já começou a ser o método principal para identificar o eleitor que não precisa assinar o papel comprovando que foi a sua zona eleitoral votar. Segundo o site do TSE até 2026 todos os eleitores estarão com a biometria cadastrada e essas informações biométricas poderão ser utilizadas por outros órgãos do governo através de integração de sistemas.
A biometria digital que capta e lê as linhas dos dedos são as mais conhecidas, existem outras como a biometria facial, íris, retina, palma das mãos e até mesmo de padrão comportamental. Em 2015 o site do G1 fez uma reportagem de um cientista japonês, professor Yasushi Yagi, que criou um programa capaz de identificar biometricamente uma pessoa através de padrões comportamentais como tamanho do passo, velocidade, postura, forma de movimentar os braços entre outras coisas. Ou seja, o programa consegue mapear os gestosdas pessoas para identificá-las. Segundo o responsável do projeto, o índice de acerto é de 95%. O professor Yasushi Yagi tem um artigo publicado detalhando o projeto Gait Recognition Using a View Transformation Model in the Frequency Domain.
Existem empresas como a Alarm.com que possuem câmeras (ADC-523) capazes de processar imagens e identificar fluxo de pessoas no local onde está instalada e o usuário pode usar esses dados para identificar o horário com maior pico de clientes em filas de supermercados por exemplo e administrar a quantidade de caixas disponíveis para atendimentos gerando maior eficiência na operação. A Intelbras empresa brasileira também vem inovando sua tecnologia e possui gravadores como o SVR716IA que tem inteligência artificial que permitem configurar áreas de interesse na imagem e em caso de mudança no padrão capturado pela câmera o usuário recebe uma notificação com a gravação.
Nos últimos anos surgiram grandes empresas do ramo financeiro que utilizam bastante a tecnologia de biometria digital e reconhecimento facial, as mais conhecidas do mercado são Nubank, Inter, Next e C6 Bank. Diferentemente das empresas financeiras tradicionais, as citadas acima nasceram totalmente dentro do ambiente tecnológico e capitalizam rapidamente muitos clientes por ser fácil de criar conta e sem burocracia, mas a C6 Bank entrou em uma polêmica depois que um dos seus usuários tentou criar uma conta. Uma das etapas antes de concluir a abertura de conta é solicitar ao usuário que tire uma foto, o rapaz tentava tirar, porém o algoritmo não o reconhecia o rapaz que tentava o procedimento é negro e ao colocar uma foto da internet de uma pessoa branca o algoritmo reconhecia o caso foi tratado como racismo nas redes sociais a empresa lançou uma nota informando que o índice de falhas na biometria facial ao abrir conta é de 0.1 % e que trabalha constantemente para melhorar a ferramenta.
Em geral o sistema de biometria digital, facial e os outros são muito eficientes, mas podem ser aprimorados no caso do C6 Bank um problema técnico acabou tomando uma proporção social que poderia gerar transtornos que levaria a suspensão do uso da ferramenta de reconhecimento facial.
O principal objetivo da segurança digital é evitar fraudes ou falsificação de identidade, ou seja, fortalecer os sistemas para que a identificação e o reconhecimento de um indivíduo sejam eficazes para que assim ele consiga tem acesso ao sistema, uma conta bancária ou a um prédio.
Os conceitos que temos hoje para identificação são:
Identidade Pessoal: Conjunto de dados que é associado a uma pessoa
Gerenciamento de Identidade: Permite estabelecer a associação entre um indivíduo e sua identidade pessoal
 As técnicas mais tradicionais de autenticação e autorização envolvem o uso de senhas ou credenciais de identificação, como cartões de acesso. Por exemplo, em um sistema baseado em senha, é necessária uma correspondência exata de duas sequências alfanuméricas para confirmar a identidade de um usuário.
 E para isso, o usuário deve criar essas strings e lembrá-las, duas tarefas que podem colocar em risco o nível de segurança do aplicativo ou sistema, pois é costume usar senhas fáceis de lembrar (ex: aniversários, nomes, classificação etc.) e assim não serem seguras.
Para melhorar e aumentar o nível de segurança em tais aplicações é recomendado que se empreguem tecnologias mais confiáveis, como o uso da Biometria, ou Reconhecimento Biométrico.
Biometria
A biometria ou identificação biométrica pode ser definida como a ciência de determinar a identidade de um indivíduo com base nas características físicas e comportamentais de uma pessoa, de forma completa ou semiautomática.
Sistema Biométrico
Um sistema biométrico é essencialmente um sistema de reconhecimento ou correspondência de padrões que consiste em quatro elementos principais:
• Sensor: uma interface de usuário que mede ou armazena os dados biométricos brutos do usuário. 
• Separação de funções: módulo que realiza o pré-processamento dos dados brutos lidos pelo sensor. As funções incluem avaliação da qualidade da leitura realizada, segmentação e aprimoramento desses dados
• Banco de dados: Em função do armazenamento dos dados biométricos e de identidade.
• Comparador (Sistema de Correspondência): Módulo que compara amostras biométricas com dados bancários para confirmar ou rejeitar uma identidade reivindicada.
O pré-processamento seria a separação entre os dados coletados e o ruído presente na leitura das características desejadas. O aprimoramento inclui processos como equalização, suavização, redução de ruído adicional etc., usados para melhorar a qualidade dos dados coletados por um sensor biométrico. 
Características biométricas comuns
Algumas das principais características biométricas mais comuns empregadas em sistemas incluem:
· Impressões digitais
· Impressão da palma da mão
· Íris
· Rosto
· Geometria da mão
· Voz
· Retina
· Assinatura
· DNA
Impressão Digital
Uma impressão digital é um padrão de sulcos (papilas) e sulcos na superfície da ponta do dedo, cuja formação é determinada durante os primeiros sete meses de desenvolvimento fetal. As impressões digitais podem variar de pessoa para pessoa fator que define sua viabilidade em ser usada em aplicações forenses há mais de 100 anos.
Impressão da Palma da Mão
Como as impressões digitais, as palmas das mãos humanas têm sulcos e sulcos e, portanto, são usadas em aplicações biométricas. A área de superfície da palma da mão é muito maior que a do dedo e, portanto, as impressões da palma da mão podem ser mais distinguíveis do que as impressões digitais.
Reconhecimento de Íris
Mais de 200 pontos são analisados com um scanner de íris padrão, sua estrutura visual é formada durante o desenvolvimento fetal e se estabiliza durante os dois primeiros anos de vida (a cor muda por mais tempo). Como essa estrutura é muito complexa, também pode ser usada para identificação pessoal (o uso de óculos ou lentes de contato não altera as características da íris.)
Scanner de retina para biometria
Trata-se de um método indicado e apropriado para ambientes que requeiram segurança máxima, como instalações militares, governamentais ou financeiras por conta da sua confiabilidade, mesmo que muito complexo em ser aplicado.
Reconhecimento Facial (Rosto)
Reconhecimento facial é um método não-intrusivo, que leva em conta características específicas do rosto de uma pessoa, sendo que os atributos faciais são os traços biométricos mais comuns empregadas pelos humanos para se reconhecerem entre si.
Envolve a análise de características e padrões faciais para verificação e autenticação de um indivíduo.
Geometria da Mão
Sistema baseado em um número de medidas tiradas da mão humana, incluindo formato, tamanho da palma, comprimentos e larguras dos dedos, entre outras.
Scanner de geometria das mãos
A geometria das mãos não é muito distintiva, e por isso não pode ser escalonada para sistemas que necessitem identificar um indivíduo em uma população grande, sendo indicada para ambientes com poucas pessoas, como pequenos escritórios ou residências.
DNA
O DNA, ou Ácido Desoxirribonucleico, é a molécula que contém a informação genética necessária para o desenvolvimento e funcionamento de organismos vivos. Trata-se de uma espécie de código unidimensional único para cada indivíduo, sendo distinto até mesmo em gêmeos idênticos.
A chance de dois indivíduos compartilharem o mesmo DNA é menor do que uma em cem bilhões. Mesmo gêmeos idênticos não compartilham 100% do mesmo DNA, com algumas mutações diferindo entre eles.
A identificação por DNA é usada atualmente em aplicações forenses para identificar suspeitos e vítimas, ou para verificar a existência de laços familiares entre pessoas. É uma forma de identificação suscetível à contaminação ou degradação, necessita de métodos químicos, e pode acabar revelando informações privadas, como a existência de doenças no indivíduo.
Outros tipos de biometria
Existem diversos outros tipos de traços biométricos que podem encontrar aplicação em sistemasde reconhecimento, apesar de não serem muito empregados atualmente (ainda).
Entre eles se incluem:
· Termograma infravermelho das veias
· Odor
· Formato das Orelhas
Multibiometria
Uma forma de melhorar ainda mais a precisão de um sistema biométrico é usar mais de um traço biométrico em uma aplicação de reconhecimento, tornando-os mais confiáveis devido ao emprego de múltiplas peças de evidência.
Esse tipo de sistema é denominado sistema multibiométrico ou ainda biometria multimodal.
Ao se combinar mais de uma forma de identificação biométrica em uma mesma aplicação, obtém-se um sistema de identificação ultra seguro, com aplicações geralmente nas áreas militar e governamental.
Algumas das principais aplicações dos sistemas de biometria seriam:
· Controle de acesso a edifícios, como empresas.
· Identificação de cadáveres
· Investigação criminal
· Testes de paternidade
· Localização de pessoas desaparecidas
· E-commerce e e-banking
A biometria traz diversas vantagens quando comparada a sistemas de autenticação baseados em tokens ou informações conhecidas:
· Desencoraja a fraude e aumenta a segurança
· Detecta duplicação de identidades
· Não pode ser transferido, esquecido, perdido ou copiado com facilidade
· Aumenta a conveniência e facilidade de uso para o usuário.
Plano de desenvolvimento da aplicação
Frameworks em Phyton
Os frameworks para desenvolvimento web são essenciais para os desenvolvedores, eles atendem os padrões dos aplicativos da Web. Muito utilizados para criar sites sofisticados e intuitivos é a melhor forma de atrair novos usuários. A utilização do framework, pode ajudá-lo no desenvolvimento de sistemas, aplicativos e websites.
Em outras palavras, o framework tem o objetivo de simplificar o processo e torná-lo descomplicado, pois desenvolver, testar e manter aplicativos se torna quase impossível sem eles.
Dicas de frameworks conhecidos em Phyton:
· Bottle
· CherryPy
· Django
· Flask
· Hub
· Web2py
Flask
Flask é um framework para o desenvolvimento de aplicações web Python. Onde você mesmo pode desenvolver de acordo com as suas necessidades, ele não restringe a estrutura da sua aplicação de nenhuma forma particular te permitindo explora e desfrutar na integra. Ele fornece maior flexibilidade e controle aos desenvolvedores. Flask fornece as ferramentas básicas para criar um aplicativo web.
Flask é uma estrutura leve entre os Frameworks comuns, especificamente, o flask somente necessita de duas bibliotecas: a biblioteca Jinja e a biblioteca Werkzeug. Sua ideia é ser um modelo simples para a construção de sites, buscando facilitar tarefas e economizar tempo.
O Jinja2 é muito utilizado em todo ecossistema Python, tendo sua principal ferramenta o Flask. Ele é incorporado ao Flask por padrão, o que o torna seu principal sistema de templates, permitindo a criação de páginas HTML em conjunto com os recursos do Python.
Uma característica interessante é que esse framework segue os princípios estabelecidos pelo “Zen of Python”, uma série de conceitos que orientam a programação em Python. Isso gera uma série de benefícios, como uma melhoria da legibilidade do código.
Mais um aspecto positivo são as extensões open source oferecidas pela comunidade de desenvolvedores. São diversos projetos muito úteis, como o Flask-Google-Maps, Flask-Login, Flask-Mail, aplicações data driven, entre outros.
Entre as vantagens destacadas pelos criadores deste framework está a flexibilidade da linguagem de programação Python, apresentando um modelo simples para desenvolvimento web em geral. Ao começar a usar esse framework, os desenvolvedores poderão economizar um tempo significativo edificando as mais variadas utilizações web.
Já a biblioteca Werkzeug, é um conjunto de utilidades e aplicações de um WSGI (Web Server Gateway Interface - Interface de Gateway de Servidor Web), ou seja, essa biblioteca apresenta aplicações para as maneiras de comunicações de um servidor da Web com aplicativos da Web e como esses podem ser encadeados para processar uma solicitação. Em resumo, essa biblioteca controla as interações entre a internet e nossas aplicações em flask.
Para começar com o Flask é indicado, que você tenha conhecimento básico de Python, juntamente com conhecimento de HTML, CSS e JavaScript, abaixo um modelo de site com o Flask
Importe da Biblioteca: from flask import Flask
Agora criaremos um objeto da classe Flask: site = Flask(__Nome__)
Após isso seguimos com o @app.route() o parâmetro dentro dos parênteses
representam um endereço da nossa rota será dominio.com.br/AlunoUnip
@app.route('/')
def ola_mundo():
 return 'Ola Mundo!'
@app.route('/AlunoUnip ')
def ola_lisandra():
return '<h1>Olá Aluno!</h1>'
Cors em Phyton
CORS - Cross-Origin Resource Sharing (Compartilhamento de recursos com origens diferentes) o compartilhamento de recursos entre origens (CORS) é um recurso de segurança de navegador que restringe as solicitações HTTP entre origens que são iniciadas em scripts em execução no navegador.
Com isso para habilitar o CORS, você deve configurar o servidor web para enviar um cabeçalho HTTP que permita acesso remoto aos seus recursos.
Para fazer isso, é preciso que crie ou modifique o arquivo .htaccess no diretório em que deseja permitir solicitações CORS adicione a seguinte linha ao arquivo .htaccess.
Como um acesso de administrador padrão ou membro com os privilégios corretos, você determina se HTTPS será exigido para todas as transações e se o acesso anônimo será permitido para seu portal. 
Você também pode definir configurações de segurança para compartilhamento e pesquisa, políticas de senha, opções de entrada, avisos de acesso, banners de informações e servidores confiáveis e configurar uma lista de portais com os quais deseja compartilhar conteúdo seguro
Erros Cors
Além de ser um mecanismo que adicionam cabeçalhos HTTPS, existem possíveis erros que podem ser solucionados, os mais comuns são javascript que utilizam XMLHttpRequest ou Fetch APIs decorrentes de utilização e compartilhamento de recursos de origens diferentes é algo bastante comum na internet, onde qualquer página está sujeita a esse tipo de erro.
Ao nós confrontarmos com uma situação dessas de erros Cors, o ideal nesse caso é verificarmos onde está a requisição causadora do problema pelo seu próprio navegador. Podendo ser por falta de Headers no servidor e para corrigir esse problema certifique-se que o servidor está enviado os seguintes Headers abaixo no retorno.
Access-Control-Allow-Origin: https://perfil.treinaweb.com.br
Access-Control-Allow-Methods: POST, GET
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
Solicitações e credenciais de comprovação
As solicitações de comprovação de CORS nunca devem incluir credenciais. A resposta a uma solicitação de comprovação deve especificar Access-Control-Allow-Credentials: true para indicar que a solicitação real pode ser feita com credenciais.
Esta seção lista os cabeçalhos que os clientes podem usar ao emitir solicitações HTTP para usar o recurso de compartilhamento de origem cruzada. Observe que esses cabeçalhos são definidos para você ao fazer chamadas a servidores. Os desenvolvedores que usam o recurso XMLHttpRequest de origem cruzada não precisam definir nenhum cabeçalho de solicitação de compartilhamento de origem cruzada programaticamente.
MySQL?
MySQL é um sistema de gerenciamento de banco de dados relacional (SGBD) baseado em Structured Query Language (SQL) desenvolvido pela Oracle.
Um banco de dados é uma coleção estruturada de dados. Pode ser qualquer coisa, desde uma simples lista até uma galeria imagens ou um local para armazenar grandes quantidades de informações como a central de um banco. Especificamente, um banco de dados relacional ele coleta os dados e organizar de acordo com um modelo relacional. Nesse modelo, as tabelas consistem em linhas e colunas, e os relacionamentos entre os elementos de dados seguem uma estrutura lógica estrita amarrados a uma coluna chave. Um SGBD é apenas um conjunto de ferramentas de software usadas para realmente implementar, gerenciare consultar esse banco de dados.
O MySQL faz parte de muitos softwares mais populares usados para criar e manter tudo, desde aplicativos da Web voltados para o cliente até poderosos serviços B2B orientados a dados. Sua natureza de código aberto, estabilidade e rico conjunto de recursos, juntamente com o desenvolvimento e suporte contínuos da Oracle, significam que as principais organizações na Internet, como Facebook, Flickr, Twitter, Wikipedia e YouTube, usam backends MySQL.
Bancos de dados MySQL são relacionais
O principal fator que diferencia os bancos de dados relacionais é a organização dos dados em alto nível. Bancos de dados como MySQL contêm registros em várias tabelas separadas e altamente codificadas, em vez de um único repositório abrangente ou coleção de documentos semi ou não estruturados.
Isso permite que o RDBMS otimize melhor as operações, como recuperação de dados, atualização de informações ou operações mais complexas, como agregações. Um modelo lógico é definido em cima de todo o conteúdo do banco de dados, como descrever os valores permitidos em várias colunas, as características das tabelas e visualizações ou como os índices de duas tabelas estão relacionadas.
O modelo relacional continua popular por várias razões. Em vez de escrever meticulosamente cada etapa do programa que leva a esse resultado, eles fornecem aos usuários uma linguagem de programação declarativa e intuitiva, basicamente informando ao banco de dados o resultado desejado compreensível. Isso transfere a maior parte do trabalho para o mecanismo RDBMS e SQL, reforça melhor as regras lógicas e economiza recursos e mão de obra valiosos.
. 
VSCODE
O Visual Studio Code (VS Code) é um editor de código de código aberto desenvolvido pela Microsoft. A saber, ele está disponível para Windows, Mac e Linux. É criado com Electron, ferramenta criada pelo GitHub que permite a criação de softwares Desktop com HTML, CSS e JavaScript.
O Visual Studio fornece suporte avançado para o desenvolvimento de JavaScript, usando JavaScript diretamente e usando o TypeScript, uma linguagem de código aberto que se baseia no JavaScript e é frequentemente usada no desenvolvimento de aplicativos Web de grande porte
Foi anunciado, com uma versão prévia lançada, em 29 de abril de 2015 pela Microsoft na conferência Build de 2015. Em 18 de novembro de 2015, o Visual Studio Code foi lançado sob a licença MIT e o seu código-fonte foi postado no GitHub. O suporte para extensões também foi anunciado.
Ele abrange hoje diversas linguagens possibilitando trabalhar com ele de várias formar, facilitando cada ver mais a centralização das informações em uma única ferramenta de trabalho, sem conta seu visual simples e cleam.
Contendo diversos recursos práticos que estão disponíveis na ferramente, como depuração, controle de versão do Git , edição focalizada em, navegação e compreensão de código.
Abaixo nome de algumas grandes empresas conhecidas e que utilizam de algumas das ferramentas e linguagens citadas acima:
Empresas que utilizam Python
Instagram (utiliza Django como backend, um framework Pyrhon para a web)
Google (grande parte do algoritmo de busca é escrito em Python)
Spotify (o aplicativo é construído em Python)
Netflix (utiliza muitas bibliotecas Python)
Uber (boa parte do aplicativo é feita com Python)
Empresas que utilizam MySQL
Entre os usuários do banco de dados MySQL estão: NASA, Friendster, Banco Bradesco, Dataprev, HP, Nokia, Sony, Lufthansa, U.S. Army, U.S. Federal Reserve Bank, Associated Press, Alcatel, Slashdot, Cisco Systems, Google, entre outros.
Angular
Angular é uma plataforma e estrutura para criar aplicativos cliente de página única usando HTML e TypeScript. Angular é escrito em TypeScript. Ele implementa funcionalidade principal e opcional como um conjunto de bibliotecas TypeScript que você pode importar para seu aplicativo.
A arquitetura de um aplicativo Angular depende de certos conceitos fundamentais. Os blocos de construção básicos da estrutura Angular são componentes Angular organizados em NgModules. Os NgModules coletam o código relacionado em assemblies de trabalho; um aplicativo Angular é definido por um conjunto de NgModules. Um aplicativo sempre tem pelo menos um módulo raiz que pode ser iniciado e, geralmente, muitos outros módulos de recursos.
Os componentes definem visualizações, que são conjuntos de elementos de tela que o Angular pode selecionar e modificar com base na lógica e nos dados do seu programa.
Os componentes consomem serviços, que fornecem funcionalidade específica não diretamente relacionada às exibições. Os provedores de serviços podem ser injetados em componentes como dependências, tornando seu código modular, reutilizável e eficiente.
Módulos, componentes e serviços são classes que usam decoradores. Esses decoradores marcam seus tipos e fornecem metadados informando ao Angular como usá-los.
Os metadados para uma classe de componente associam-no ao modelo que define a exibição. Os modelos combinam HTML regular com diretivas Angular e tags de ligação, permitindo que Angular modifique o HTML para exibição antes de renderizá-lo.
Os metadados da classe de serviço fornecem as informações que o Angular precisa para disponibilizá-lo ao componente via injeção de dependência (DI)
Os componentes de um aplicativo geralmente definem muitas exibições organizadas hierarquicamente. Angular fornece o serviço Roteador para ajudá-lo a definir os caminhos de navegação entre as visualizações. Os roteadores fornecem recursos sofisticados de navegação no navegador.
 que exatamente é material angular?
Angular Material é uma biblioteca de componentes de interface do usuário (UI) que os desenvolvedores podem usar em seus projetos Angular para acelerar o desenvolvimento de interfaces de usuário elegantes e consistentes. O Angular Material oferece componentes de interface do usuário bonitos e reutilizáveis, como cartões, entradas, tabelas de dados, selecionadores de data e muito mais.
Cada componente está pronto para ser usado com estilo padrão que segue a Especificação de Design de Material .  você pode personalizar facilmente a aparência dos componentes do Angular Material. A lista de componentes Angular Material disponíveis continua a crescer a cada iteração da biblioteca.
O TypeScript foi desenvolvido pela Microsoft a partir de 2012 para adicionar recursos e ferramentas que não existiam na própria linguagem (ou eram muito mais complexos de implementar), como tipagem estática (onde o tipo de uma variável é claramente definido no código) e orientação a objetos.
Como tal, muitas vezes não é considerada uma nova linguagem de programação, mas sim um superconjunto de JavaScript, uma vez que o código é "transformado" (termo técnico: transpilado) em JavaScript "puro" antes de ser executado.
Os arquivos TypeScript geralmente têm uma extensão ".ts". Como ainda é JavaScript em sua essência, qualquer código nativo para a linguagem pode ser adicionado a um arquivo JavaScript, e os programas escritos em JavaScript também podem ser considerados programas TypeScript válidos. Várias bibliotecas JavaScript populares também são suportadas, como Angular, Vue.js, D3.js, etc.
Sites e aplicativos criados com TypeScript podem ser executados no lado do cliente (por exemplo, diretamente no navegador do usuário) e no lado do servidor (usando Node.js). O próprio compilador TypeScript padrão é escrito em TypeScript e depois convertido em JavaScript.
Projeto do código
Validação da Biometria
keypoints_1, descriptors_1 = sift.detectAndCompute(original, None)
 keypoints_2, descriptors_2 = sift.detectAndCompute(entrada, None)
 comp = cv2.FlannBasedMatcher(dict(algorithm=1, trees=10),
 dict()).knnMatch(descriptors_1, descriptors_2, k=2)
 ponts = []
 for x, y in comp:
 if x.distance < 0.1 * y.distance:
 ponts.append(x)
 keypoints = 0
 if len(keypoints_1) <= len(keypoints_2):
 keypoints = len(keypoints_1)else:
 keypoints = len(keypoints_2)
 compt = (len(ponts) / keypoints)
 if compt > 0.95:
 print(id)
 return { 'success': True, 'result': compt * 100, 'imagePath': "{}".format(i[6]), 'caminhoUsado': caminho, 'dadosFuncionario': linha[int(id)-1] } 
 
 return { 'success': False, 'result': compt * 100, 'imagePath': "{}".format(i[6]), 'caminhoUsado': caminho } 
if __name__ == '__main__':
 app.run()
Para começar a validação, separamos nas primeiras linhas os keypoints da biometria de entrada e a biometria que já está no banco de dados.
Colocamos os pontos necessários para confirmar que uma imagem é válida no nosso BD, criamos um método for para que de forma aleatória coloque pontos da mesma medida em cada imagem para conseguir fazer a validação em cada imagem e assim conseguir autenticar qual biometria que está no nosso BD é a da mesma pessoa que está tentando entrar no nosso sistema.
Assim que fazer essa validação, a que possuir melhor pontuação irá entrar no BD com os dados do usuário e seu nível de acesso adequado. Caso não dê os pontos necessários (no caso do nosso sistema, 10 pontos) aparecerá uma mensagem de erro: Digital Incompatível
def enviarDigital():
 data = request.data.__str__()
 caminho = data[11:64]
 id = data[59]
 entrada = cv2.imread(caminho)
 print(entrada)
 con = mysql.connector.connect(host='localhost',database='Digital',user='nikolau',password='12345678')
 if con.is_connected():
 cursor = con.cursor()
 cursor.execute("select * from func;")
 linha = cursor.fetchall()
Essa função servirá para que após o usuário enviar a digital dele, o sistema irá se conectar no BD para que o sistema possa ver as biometrias existentes e assim possa comparar e chegar a conclusão de qual a melhor digital e assim possa mostrar os dados do sistema.
Front-end
<mat-card class="card">
 <mat-card class="sub-card">
 <mat-card-title>Verificador de Digitais</mat-card-title>
 <mat-card-subtitle class="subtitle"
 >Insira a digital que deseja verificar!</mat-card-subtitle
 >
 <mat-divider></mat-divider>
 <input
 class="input"
 formControlName="display"
 type="file"
 class="form-control"
 (change)="onFileChange($event)"
 />
 <div class="spinner">
 <mat-spinner *ngIf="loader"></mat-spinner>
 </div>
 <button
 mat-raised-button
 color="primary"
 [disabled]="display.invalid"
 (click)="confirmar()"
 >
 Confirmar
 </button>
 </mat-card>
</mat-card>
<ng-template #dialogComponent>
 <div *ngIf="dados; else noData">
 <mat-card-title>Funcionário</mat-card-title>
 <mat-card-subtitle class="subtitle">{{
 dados.dadosFuncionario[1]
 }}</mat-card-subtitle>
 <mat-divider></mat-divider>
 <mat-card-subtitle class="subtitle">{{
 dados.dadosFuncionario[3]
 }}</mat-card-subtitle>
 <img src="{{ '../assets/img/' + dados.dadosFuncionario[4] }}" />
 <mat-divider></mat-divider>
 <mat-card-title class="subtitle">Digital</mat-card-title>
 <img src="{{ '../assets/img/' + dados.dadosFuncionario[6] }}" />
 </div>
 <button
 mat-raised-button
 color="primary"
 routerLink="/dados"
 (click)="abrir()"
 >
 Ver Dados
 </button>
</ng-template>
<ng-template #noData>
 <div class="error">Os dados informados estão incorretos ou não existem na base de dados!</div>
</ng-template>
Criamos nosso Front-end com base na linguagem Angular.
O trecho do código acima, irá para a tela de login do nosso sistema e para a validação da digital para entrar no nosso sistema, então caso ele consiga encontrar a digital, irá se conectar com o BD para conseguir pegar os dados do funcionário selecionado, como seu nome, cargo e foto do funcionário.
Caso não encontre nenhuma digital semelhante, irá aparecer a mensagem escrita nas últimas linhas do código e sem aparecer dados ou informações confidenciais.
Como pode-se ver na classe input fica as funções necessárias para conseguir coletar a digital do usuário que está tentando acessar o sistema e faz um evento que conecta com o botão de confirmar que terá duas alternativas, retornar algum dado, que no caso seria informações do funcionário ou retornar nenhuma informação dando erro e nesse caso já foi explicado acima.
Esse trecho de código que separamos, não é todo o nosso código feito para o Front-end, existe outros componentes em outras classes que permitem que nosso sistema consiga fazer a interação do usuário para o BD, porém separamos a base do nosso sistema para explicarmos nessa APS
Banco de Dados
drop database Digital;
create database Digital;
use	Digital;
create table Niveis (
id int,
nome varchar(25),
endereco varchar(25),
produto varchar(25),
ano_kg float,
destino varchar(30),
funcionarios int,
maquinas int,
auto int,
/* usuarios nivel 2 */
imp_municipal varchar(25),
imp_estadual varchar(25),
imp_federal varchar(25),
taxas varchar(25),
/* USUARIOS com o nivel 3*/
agrotoxico varchar(25),
primary key (id)
);
Nesse trecho do BD, criamos a database e a tabela com os níveis e os acessos de cada níveis
create table func (
id_func int,
nome_comp varchar(25),
id_perm int,
funcao varchar(25),
foto_func varchar(100),
cod_digital int,
fotos_digital varchar(100),
primary key(id_func)
);
Nessa tabela será para cadastrar os novos funcionários para que suas informações apareçam quando acessarem o nosso sistema como foi explicado na parte do Front-end anteriormente
insert into func values
(1, "Arthur Siqueira", 1 , "Funcionário" , "funcionarios/user1.jfif", 1 , "database/fingerprint1.jpg"),
(2, "Patrick Gonçalves", 3 , "Diretores" , "funcionarios/user2.jfif", 2 , "database/fingerprint2.jpg"),
(3, "Bruno Galdino", 3 , "Ministro" , "funcionarios/user3.jpg", 3 , "database/fingerprint3.jpg"),
(4, "Nikolas Alencar", 2 , "Gestor" , "funcionarios/user4.jfif", 1 , "database/fingerprint4.jpg"),
(5, "Paulo Henrique", 1 , "Funcionário" , "funcionarios/user5.jfif", 2 , "database/fingerprint5.jpg"),
(6, "Gustavo Ribeiro", 1 , "Funcionário" , "funcionarios/user6.jpg", 1 , "database/fingerprint6.jpg");
Nesse trecho usamos para inserir os funcionários dando uma demonstração do trecho anterior, com o ID do funcionário, o nome, o nível de acesso, cargo, foto de perfil, código da digital e a digital que estará no BD para que quando precisar acessar o sistema ele consiga usar sua digital
Relatórios de linhas do código
Nosso sistema deu mais código do que está limitado pelo número de páginas da APS, então caso precise do código inteiro, iremos enviar pelo teams ou junto com o arquivo pelo site da UNIP, mas separamos a base do Banco de Dados, do servidor e do Front-end
Banco de Dados
drop database Digital;
create database Digital;
use	Digital;
create table Niveis (
id int,
nome varchar(25),
endereco varchar(25),
produto varchar(25),
ano_kg float,
destino varchar(30),
funcionarios int,
maquinas int,
auto int,
/* usuarios qu edeve sem inserido tem de ter o id nivle 2 para cima */
imp_municipal varchar(25),
imp_estadual varchar(25),
imp_federal varchar(25),
taxas varchar(25),
/* USUARIOS com o nivel 3*/
agrotoxico varchar(25),
primary key (id)
);
create table func (
id_func int,
nome_comp varchar(25),
id_perm int,
funcao varchar(25),
foto_func varchar(100),
cod_digital int,
fotos_digital varchar(100),
primary key(id_func)
);
create table agrotoxico(
	id_agrotoxico int,
	foto_cont varchar(100),
 primary key(id_agrotoxico)
);
create table regioes(
	id_regioes int,
 cont varchar(1500),
 primary key(id_regioes)
);
create table proprietario(
	id_proprietario int,
 cont varchar(1200),
 primary key (id_proprietario)
);
insert into agrotoxico values
(1, "comum/agrotoxico1.jpg"), 
(2, "comum/agrotoxico2.jpg"),
(3, "comum/agrotoxico3.jpg");
insert into func values
(1, "Arthur Siqueira", 1 , "Funcionário" , "funcionarios/user1.jfif", 1 , "database/fingerprint1.jpg"),
(2, "Patrick Gonçalves", 3 , "Diretores" , "funcionarios/user2.jfif",2 , "database/fingerprint2.jpg"),
(3, "Bruno Galdino", 3 , "Ministro" , "funcionarios/user3.jpg", 3 , "database/fingerprint3.jpg"),
(4, "Nikolas Alencar", 2 , "Gestor" , "funcionarios/user4.jfif", 1 , "database/fingerprint4.jpg"),
(5, "Paulo Henrique", 1 , "Funcionário" , "funcionarios/user5.jfif", 2 , "database/fingerprint5.jpg"),
(6, "Gustavo Ribeiro", 1 , "Funcionário" , "funcionarios/user6.jpg", 1 , "database/fingerprint6.jpg");
insert into proprietario values
(1, "“Se tornar o maior produtor individual de soja no mundo e o maior na cultura do algodão no Brasil, nunca foi um propósito na Bom Futuro, mas se tornou uma consequência através de um planejamento eficaz, trabalho em equipe, auxilio da tecnologia e principalmente a harmonia com a natureza ao produzir toneladas de grãos e plumas de algodão em uma área total aproximada de 583 mil hectares cultivados em Mato Grosso”.
Esse é o anunciado na apresentação do Grupo Bom Futuro, o maior produtor agrícola do país na atualidade e que tem como carro-chefe a soja, totalizando uma produção aproximada de 1,3 milhão de toneladas por safra. Atualmente, a Bom Futuro possui 33 unidades centralizadoras de produção em Mato Grosso, sendo 21 Unidades de Beneficiamento e Armazenamento de Grãos, 9 Unidades de Beneficiamento de Algodão e 3 Unidades de Beneficiamento de Sementes.
O grupo tem mais de 30 anos de atuação no Estado de Mato Grosso. As atividades são distribuídas em todo o estado, gerando desenvolvimento e inúmeras oportunidades para centenas de municípios."),
(2, "A SLC Agrícola, fundada em 1977 pelo Grupo SLC, é produtora de soja, milho e algodão. Foi uma das primeiras empresas do setor a ter ações negociadas em Bolsa de Valores no mundo, tornando-se uma referência no seu segmento. Com Matriz em Porto Alegre (RS), a Empresa possui 16 Unidades de Produção estrategicamente localizadas em 6 estados brasileiros que totalizaram 448.568 hectares no ano-safra 2019/20 – sendo 125.462 ha de algodão, 235.444 ha de soja, 82.392 ha de milho e 5.270 ha de outras culturas. 
Na safra 2021/2021, a empresa comemorou um novo recorde: 468,2 mil hectares (aumento de 4,4% na comparação com a safra anterior) e celebrou 78 mil hectares com aplicação seletiva de defensivos, 8 fazendas com lavouras conectadas à internet e expansão das atividades da SLC Sementes e Integração Lavoura-Pecuária e Floresta.
Em negociação para aquisição da Terra Santa, outro gigante do agro, a SLC espera se tornar a maior produtora do Brasil, somando 601,5 mil hectares, caso o negócio seja concluído com aquisição total da Terra Santa."),
(3, "A Amaggi Agro, braço voltado para o agronegócio do Grupo Amaggi, atua na produção agrícola de soja, milho e algodão em grande escala e investimos no desenvolvimento da Agricultura de Precisão (AP), um conjunto de técnicas e metodologias inovadoras que visa aperfeiçoar o manejo das culturas e potencializar áreas produtivas para que produzam mais, sem a necessidade de novas áreas de plantio.
Segundo o grupo, tais tecnologias regulam também a utilização dos insumos agrícolas, permitindo o uso racional de corretivos, fertilizantes e de defensivos agrícolas, reduzindo assim progressivamente os impactos ao meio ambiente.
Na safra 2020, foram mais de 1 milhão de toneladas de grãos e fibras produzidos em aproximadamente 258 mil hectares.
A Amaggi nasceu em 1979, com a empresa Sementes Maggi, em São Miguel do Iguaçu (PR). Mas não demorou para a família Maggi ir para Mato Grosso e montar um dos maiores impérios do agro brasileiro. Atualmente a Amaggi possui fazendas em Itiquira, Sapezal, Campo Novo do Parecis, Querência e São Félix do Araguaia, todas em Mato Grosso");
insert into regioes values
(1, "A região Centro-Oeste é a que mais cresce no Brasil, sua principal atividade econômica é a pecuária, embora nos últimos anos a agricultura tenha se intensificado, assim como o setor industrial.
Dentre as várias criações que constituem a pecuária, a bovinocultura é a mais representativa na região, são cerca de 70 milhões de cabeças de gado. O Centro-Oeste responde por cerca de 36% da produção nacional, detém o maior rebanho do Brasil.
A segunda principal criação é a de suíno, no entanto, os criadores estão dispersos na região, estão respectivamente no sul de Goiás e no Mato Grosso do Sul.
Um dos fatores que favorecem essa atividade econômica são as condições naturais (clima, relevo, vegetação, água) da região.
A criação de gado é geralmente desenvolvida de maneira extensiva. No Pantanal, a pecuária é a principal fonte econômica, a região oferece pastagens naturais, além das águas salobras oriundas de lagos que se encontram nas áreas mais elevadas. É justamente para esses locais que o rebanho é levado no período chuvoso. No período entre janeiro e junho, o pantanal se torna uma enorme planície alagada.
A criação de gado de corte é a de maior destaque, embora haja bacias leiteiras nos Estados que compõem a região. A produção de carne, além de abastecer o mercado local, supre o mercado consumidor da região Sudeste.");
Servidor
import cv2
from flask_cors import CORS
import mysql.connector
from flask import Flask, request
app = Flask(__name__)
CORS(app)
@app.post('/enviar-digital')
def enviarDigital():
 data = request.data.__str__()
 caminho = data[11:64]
 id = data[59]
 entrada = cv2.imread(caminho)
 print(entrada)
 con = mysql.connector.connect(host='localhost',database='Digital',user='nikolau',password='12345678')
 if con.is_connected():
 cursor = con.cursor()
 cursor.execute("select * from func;")
 linha = cursor.fetchall()
 for i in linha:
 original = cv2.imread("{}".format(i[6]))
 sift = cv2.xfeatures2d.SIFT_create()
 keypoints_1, descriptors_1 = sift.detectAndCompute(original, None)
 keypoints_2, descriptors_2 = sift.detectAndCompute(entrada, None)
 comp = cv2.FlannBasedMatcher(dict(algorithm=1, trees=10),
 dict()).knnMatch(descriptors_1, descriptors_2, k=2)
 ponts = []
 for x, y in comp:
 if x.distance < 0.1 * y.distance:
 ponts.append(x)
 keypoints = 0
 if len(keypoints_1) <= len(keypoints_2):
 keypoints = len(keypoints_1)
 else:
 keypoints = len(keypoints_2)
 compt = (len(ponts) / keypoints)
 if compt > 0.95:
 print(id)
 return { 'success': True, 'result': compt * 100, 'imagePath': "{}".format(i[6]), 'caminhoUsado': caminho, 'dadosFuncionario': linha[int(id)-1] } 
 
 return { 'success': False, 'result': compt * 100, 'imagePath': "{}".format(i[6]), 'caminhoUsado': caminho } 
@app.post('/adquire-info')
def adquireInfo():
 data = request.data.__str__()
 nivel = data[11]
 if nivel=='1':
 agrotoxicos = adquireAgro()
 return { 'agrotoxicos': agrotoxicos }
 elif nivel=='2':
 agrotoxicos = adquireAgro()
 regioes = adquireRegioes()
 return { 'agrotoxicos': agrotoxicos, 'regioes': regioes }
 elif nivel=='3':
 agrotoxicos = adquireAgro()
 regioes = adquireRegioes()
 proprietarios = adquireProp()
 return { 'agrotoxicos': agrotoxicos, 'regioes': regioes, 'proprietarios': proprietarios }
 else:
 return 'Nível incorreto!'
def adquireAgro():
 con = mysql.connector.connect(host='localhost',database='Digital',user='nikolau',password='12345678')
 if con.is_connected():
 cursor = con.cursor()
 cursor.execute("select * from agrotoxico;")
 result = cursor.fetchall()
 return { 'conteudo': result} 
def adquireRegioes():
 con = mysql.connector.connect(host='localhost',database='Digital',user='nikolau',password='12345678')
 if con.is_connected():
 cursor = con.cursor()
 cursor.execute("select * from regioes;")
 result = cursor.fetchall()
 return { 'conteudo': result} 
def adquireProp():con = mysql.connector.connect(host='localhost',database='Digital',user='nikolau',password='12345678')
 if con.is_connected():
 cursor = con.cursor()
 cursor.execute("select * from proprietario;")
 result = cursor.fetchall()
 return { 'conteudo': result} 
if __name__ == '__main__':
 app.run()
Front End
<mat-card class="card">
 <mat-card class="sub-card">
 <mat-card-title>Verificador de Digitais</mat-card-title>
 <mat-card-subtitle class="subtitle"
 >Insira a digital que deseja verificar!</mat-card-subtitle
 >
 <mat-divider></mat-divider>
 <input
 class="input"
 formControlName="display"
 type="file"
 class="form-control"
 (change)="onFileChange($event)"
 />
 <div class="spinner">
 <mat-spinner *ngIf="loader"></mat-spinner>
 </div>
 <button
 mat-raised-button
 color="primary"
 [disabled]="display.invalid"
 (click)="confirmar()"
 >
 Confirmar
 </button>
 </mat-card>
</mat-card>
<ng-template #dialogComponent>
 <div *ngIf="dados; else noData">
 <mat-card-title>Funcionário</mat-card-title>
 <mat-card-subtitle class="subtitle">{{
 dados.dadosFuncionario[1]
 }}</mat-card-subtitle>
 <mat-divider></mat-divider>
 <mat-card-subtitle class="subtitle">{{
 dados.dadosFuncionario[3]
 }}</mat-card-subtitle>
 <img src="{{ '../assets/img/' + dados.dadosFuncionario[4] }}" />
 <mat-divider></mat-divider>
 <mat-card-title class="subtitle">Digital</mat-card-title>
 <img src="{{ '../assets/img/' + dados.dadosFuncionario[6] }}" />
 </div>
 <button
 mat-raised-button
 color="primary"
 routerLink="/dados"
 (click)="abrir()"
 >
 Ver Dados
 </button>
</ng-template>
<ng-template #noData>
 <div class="error">Os dados informados estão incorretos ou não existem na base de dados!</div>
</ng-template>
Imagens do Sistema
Tela inicial
Caso não reconheça a digital inserida
Digital reconhecida
Dados para o nível 1
Nível 2 de acesso
Nível 3 de acesso
Caso alguém de acesso 1 tente acessar área que permita acesso 2 ou superior
Ficha APS
Referências
· JAIN, A.K.; ROSS, A.A.; NANDAKUMAR, K. Introduction to Biometrics. 1ª ed. 2001. Springer
· JAIN, A.K.; ROSS, A.A.; NANDAKUMAR, K. Handbook of Multibiometrics. 1ª ed. 2006. Springer
· http://www.sinfic.pt/SinficWeb/displayconteudo.do2?numero=25030#:~:text=Em%201892%2C%20Galton%20inventou%20o,em%20finais%20do%20s%C3%A9culo%20XX.
· http://www.formacerta.com.br/blog/a-evolucao-da-impressao-digital/
· https://www.justicaeleitoral.jus.br/biometria/
· http://www.mundodigital.net.br/index.php/noticias/ti/3926-uso-de-biometria-em-bancos-traz-mais-seguranca

Outros materiais