Índice:

HackerBox 0058: Codificar: 7 etapas
HackerBox 0058: Codificar: 7 etapas
Anonim
HackerBox 0058: Codificar
HackerBox 0058: Codificar

Saudações aos Hackers HackerBox de todo o mundo! Com HackerBox 0058 vamos explorar a codificação de informações, códigos de barras, códigos QR, programação do Arduino Pro Micro, monitores LCD integrados, integração de geração de código de barras em projetos Arduino, exploits de dispositivos de entrada humana e muito mais.

HackerBoxes é o serviço de caixa de assinatura mensal para entusiastas de eletrônica e tecnologia de computador - Hackers de hardware - The Dreamers of Dreams.

Há uma grande quantidade de informações para membros atuais e potenciais nas Perguntas frequentes dos HackerBoxes. Quase todos os e-mails de suporte não técnico que recebemos já foram respondidos lá, portanto, agradecemos por dedicar alguns minutos para ler o FAQ.

Suprimentos

Este Instructable contém informações para começar a usar o HackerBox 0058. O conteúdo completo da caixa está listado na página do produto para o HackerBox 0058, onde a caixa também está disponível para compra enquanto durarem os estoques. Se você gostaria de receber automaticamente um HackerBox como este direto em sua caixa de correio a cada mês com um desconto de $ 15, você pode se inscrever em HackerBoxes.com e juntar-se à revolução!

Um ferro de solda, solda e ferramentas básicas de solda geralmente são necessários para trabalhar no HackerBox mensal. Um computador para executar ferramentas de software também é necessário. Dê uma olhada no HackerBox Deluxe Starter Workshop para um conjunto de ferramentas básicas e uma ampla gama de atividades introdutórias e experimentos.

Mais importante ainda, você precisará de um senso de aventura, espírito hacker, paciência e curiosidade. Construir e experimentar com eletrônicos, embora muito gratificante, pode ser complicado, desafiador e até mesmo frustrante às vezes. O objetivo é o progresso, não a perfeição. Quando você persiste e aproveita a aventura, uma grande satisfação pode ser derivada deste hobby. Dê cada passo devagar, preste atenção aos detalhes e não tenha medo de pedir ajuda

Etapa 1: codificação

Codificação
Codificação

Comunicar, gravar ou manipular informações requer codificação. Como processar, armazenar e comunicar informações são a essência da eletrônica moderna, temos muitos códigos com que nos preocupar.

Como um exemplo muito simples de codificação, pode-se representar quantos olhos ou ouvidos eles têm segurando dois dedos, ou usando os números "2" ou "] [" ou usando as palavras "dois" ou "dos" ou " Er "ou" zwei ". Na verdade não é tão simples, certo? A codificação usada na linguagem humana, especialmente em relação a tópicos como emoções ou abstração, pode se tornar altamente complexa.

FÍSICA

Sim, tudo sempre começa com a física. Em sistemas eletrônicos, começamos representando os valores mais simples por sinais elétricos, geralmente níveis de tensão. Por exemplo, ZERO pode ser representado como terra (aproximadamente 0 V) e UM como aproximadamente 5 V (ou 3,3 V, etc.) para formar um sistema binário de zeros e uns. Mesmo com apenas ZERO e UM, muitas vezes há ambigüidade para resolver. Quando o botão é pressionado é ZERO ou UM? Alto ou baixo? O sinal de seleção de chip é "ativo alto" ou "ativo baixo"? A que horas um sinal pode ser lido e por quanto tempo ele será válido? Em sistemas de comunicação, isso é conhecido como "codificação de linha".

Nesse nível mais baixo, as representações são em grande parte sobre a física do sistema. Quais tensões ele pode suportar, quão rápido pode fazer a transição, como o laser é ligado e desligado, como os sinais de informação modulam uma portadora de radiofrequência, qual é a largura de banda do canal, ou mesmo como as concentrações de íons geram potenciais de ação em um neurônio. Para eletrônicos, essas informações são frequentemente fornecidas nas tabelas imponentes da ficha técnica do fabricante.

A camada física (PHY) ou camada 1 é a primeira e mais baixa no modelo OSI de sete camadas de rede de computadores. A camada física define os meios de transmissão de bits brutos por meio de um link de dados físico que conecta os nós da rede. A camada física fornece uma interface elétrica, mecânica e processual para o meio de transmissão. As formas e propriedades dos conectores elétricos, as frequências de transmissão, o código de linha a ser usado e parâmetros de baixo nível semelhantes são especificados pela camada física.

NÚMEROS

Não podemos fazer muito com apenas UM e ZERO, ou teríamos evoluído para "falar" piscando os olhos um para o outro. Os valores binários são um ótimo começo. Em sistemas de computação e comunicação, combinamos dígitos binários (bits) em bytes e "palavras" contendo, por exemplo, 8, 16, 32 ou 64 bits.

Como essas palavras binárias correspondem a números ou valores? Em um byte simples de 8 bits, 00000000 é geralmente zero e 11111111 é geralmente 255 para fornecer 2 para 8 ou 256 valores diferentes. Claro que não para por aí, porque existem muito mais do que 256 números e nem todos os números são inteiros positivos. Mesmo antes dos sistemas de computação, representávamos valores numéricos usando diferentes sistemas numéricos, linguagens, bases, e empregando técnicas como números negativos, números imaginários, notação científica, raízes, proporções e escalas logarítmicas de várias bases diferentes. Para valores numéricos em sistemas de computador, temos que lidar com questões como épsilon de máquina, endianidade, ponto fixo e representações de ponto flutuante.

TEXTO (CETERA)

Além de representar números ou valores, bytes e palavras binários podem representar letras e outros símbolos de texto. A forma mais comum de codificação de texto é o American Standard Code for Information Interchange (ASCII). É claro que vários tipos de informação podem ser codificados como texto: um livro, esta página da web, um documento xml.

Em alguns casos, como e-mail ou postagens da Usenet, podemos querer codificar tipos de informações mais amplas (como arquivos binários gerais) como texto. O processo de uuencoding é uma forma comum de codificação binário para texto. Você pode até "codificar" imagens como texto: Arte ASCII ou, melhor ainda, Arte ANSI.

TEORIA DA CODIFICAÇÃO

A teoria da codificação é o estudo das propriedades dos códigos e sua respectiva adequação a aplicações específicas. Os códigos são usados para compressão de dados, criptografia, detecção e correção de erros, transmissão e armazenamento de dados. Os códigos são estudados por várias disciplinas científicas com o objetivo de projetar métodos de transmissão de dados eficientes e confiáveis. Disciplinas de exemplo incluem teoria da informação, engenharia elétrica, matemática, linguística e ciência da computação.

COMPRESSÃO DE DADOS (removendo redundância)

A compressão de dados, codificação de origem ou redução da taxa de bits é o processo de codificação de informações usando menos bits do que a representação original. Qualquer compactação em particular é com ou sem perdas. A compactação sem perdas reduz os bits, identificando e eliminando a redundância estatística. Nenhuma informação é perdida na compactação sem perdas. A compactação com perdas reduz os bits, removendo informações desnecessárias ou menos importantes.

Os métodos de compressão Lempel – Ziv (LZ) estão entre os algoritmos mais populares para armazenamento sem perdas. Em meados da década de 1980, após o trabalho de Terry Welch, o algoritmo Lempel – Ziv – Welch (LZW) rapidamente se tornou o método de escolha para a maioria dos sistemas de compressão de uso geral. LZW é usado em imagens GIF, programas como PKZIP e dispositivos de hardware como modems.

Estamos constantemente usando dados compactados para DVDs, streaming de vídeo MPEG, áudio MP3, gráficos JPEG, arquivos ZIP, tarballs compactados e assim por diante.

DETECÇÃO E CORREÇÃO DE ERROS (adicionando redundância útil)

A detecção e correção de erros ou controle de erros são técnicas que permitem a entrega confiável de dados digitais por canais de comunicação não confiáveis. Muitos canais de comunicação estão sujeitos a ruído de canal e, portanto, podem ser introduzidos erros durante a transmissão da fonte para um receptor. A detecção de erros é a detecção de erros causados por ruído ou outras deficiências durante a transmissão do transmissor para o receptor. A correção de erros é a detecção de erros e a reconstrução dos dados originais sem erros.

A detecção de erros é realizada de forma mais simples usando repetição de transmissão, bits de paridade, somas de verificação ou CRCs ou funções hash. Um erro na transmissão pode ser detectado (mas geralmente não corrigido) pelo receptor, que pode então solicitar a retransmissão dos dados.

Os códigos de correção de erros (ECC) são usados para controlar erros nos dados em canais de comunicação não confiáveis ou ruidosos. A ideia central é que o remetente codifique a mensagem com informações redundantes na forma de um ECC. A redundância permite que o receptor detecte um número limitado de erros que podem ocorrer em qualquer parte da mensagem e, frequentemente, corrija esses erros sem retransmissão. Um exemplo simplista de ECC é transmitir cada bit de dados 3 vezes, o que é conhecido como código de repetição (3, 1). Mesmo que apenas 0, 0, 0 ou 1, 1, 1 sejam transmitidos, os erros no canal com ruído podem apresentar qualquer um dos oito valores possíveis (três bits) ao receptor. Isso permite que um erro em qualquer uma das três amostras seja corrigido por "votação majoritária" ou "votação democrática". A capacidade de correção deste ECC é, portanto, corrigir 1 bit de erro em cada triplete transmitido. Embora simples de implementar e amplamente usada, essa redundância modular tripla é um ECC relativamente ineficiente. Os melhores códigos ECC geralmente examinam as últimas dezenas ou mesmo as últimas centenas de bits recebidos anteriormente para determinar como decodificar o pequeno punhado de bits atual.

Quase todos os códigos de barras bidimensionais, como QR Codes, PDF-417, MaxiCode, Datamatrix e Aztec Code usam Reed – Solomon ECC para permitir a leitura correta, mesmo se uma parte do código de barras estiver danificada.

CRIPTOGRAFIA

A codificação criptográfica é projetada em torno de suposições de dureza computacional. Esses algoritmos de codificação são intencionalmente difíceis de quebrar (no sentido prático) por qualquer adversário. É teoricamente possível quebrar tal sistema, mas é inviável fazê-lo por qualquer meio prático conhecido. Esses esquemas são, portanto, denominados computacionalmente seguros. Existem esquemas de informação teoricamente seguros que provavelmente não podem ser quebrados mesmo com poder de computação ilimitado, como o one-time pad, mas esses esquemas são mais difíceis de usar na prática do que os melhores mecanismos teoricamente quebráveis, mas computacionalmente seguros.

A criptografia de cifra tradicional é baseada em uma cifra de transposição, que reorganiza a ordem das letras em uma mensagem (por exemplo, 'hello world' torna-se 'ehlol owrdl' em um esquema de rearranjo trivialmente simples) e cifras de substituição, que substituem sistematicamente letras ou grupos de letras com outras letras ou grupos de letras (por exemplo, 'voar imediatamente' torna-se 'gmz bu podf' substituindo cada letra pela seguinte no alfabeto latino). Versões simples de ambos nunca ofereceram muita confidencialidade de oponentes empreendedores. Uma das primeiras cifras de substituição foi a cifra de César, na qual cada letra do texto simples era substituída por uma letra com um número fixo de posições mais abaixo no alfabeto. ROT13 é uma cifra de substituição de letra simples que substitui uma letra pela 13ª letra depois dela, no alfabeto. É um caso especial da cifra de César. Experimente aqui!

Etapa 2: códigos QR

Códigos QR
Códigos QR

Os códigos QR (wikipedia) ou "Códigos de resposta rápida" são um tipo de matriz ou código de barras bidimensional projetado pela primeira vez em 1994 para a indústria automotiva no Japão. Um código de barras é uma etiqueta óptica legível por máquina que contém informações sobre o item ao qual está anexado. Na prática, os códigos QR geralmente contêm dados para um localizador, identificador ou rastreador que aponta para um site ou aplicativo. Um código QR usa quatro modos de codificação padronizados (numérico, alfanumérico, byte / binário e kanji) para armazenar dados de forma eficiente.

O sistema Quick Response se tornou popular fora da indústria automotiva devido à sua legibilidade rápida e maior capacidade de armazenamento em comparação com os códigos de barras UPC padrão. Os aplicativos incluem rastreamento de produtos, identificação de itens, rastreamento de tempo, gerenciamento de documentos e marketing geral. Um código QR consiste em quadrados pretos dispostos em uma grade quadrada em um fundo branco, que podem ser lidos por um dispositivo de imagem, como uma câmera, e processados usando a correção de erros Reed – Solomon até que a imagem possa ser interpretada de forma adequada. Os dados necessários são extraídos de padrões que estão presentes nos componentes horizontal e vertical da imagem.

Os smartphones modernos geralmente lêem códigos QR (e outros códigos de barras) automaticamente. Basta abrir o aplicativo da câmera, direcionar a câmera para o código de barras e esperar um ou dois segundos para que o aplicativo da câmera indique que travou no código de barras. O aplicativo às vezes exibe o conteúdo do ícone de barra instantaneamente, mas normalmente o aplicativo exigirá a seleção da notificação do código de barras para exibir todas as informações extraídas do código de barras. Durante o mês de junho de 2011, 14 milhões de usuários móveis americanos escanearam um código QR ou código de barras.

Você usou seu smartphone para ler as mensagens codificadas na parte externa do HackerBox 0058?

Vídeo interessante: você consegue encaixar um jogo inteiro em um código QR?

Os veteranos podem se lembrar do Cauzin Softstrip das revistas de informática dos anos 80. (demonstração de vídeo)

Etapa 3: Arduino Pro Micro 3,3 V 8 MHz

Arduino Pro Micro 3,3 V 8 MHz
Arduino Pro Micro 3,3 V 8 MHz

O Arduino Pro Micro é baseado no microcontrolador ATmega32U4 que possui uma interface USB integrada. Isso significa que não há FTDI, PL2303, CH340 ou qualquer outro chip atuando como intermediário entre o seu computador e o microcontrolador Arduino.

Sugerimos primeiro testar o Pro Micro sem soldar os pinos no lugar. Você pode realizar a configuração básica e o teste sem usar os pinos de cabeçalho. Além disso, atrasar a soldagem ao módulo oferece uma variável a menos para depurar, caso você tenha alguma complicação.

Se você não tiver o IDE do Arduino instalado em seu computador, comece baixando o IDE do formulário arduino.cc. AVISO: Certifique-se de selecionar a versão 3.3V em ferramentas> processador antes de programar o Pro Micro. Tendo este configurado para 5V funcionará uma vez e então o dispositivo parecerá nunca se conectar ao seu PC até que você siga as instruções "Reiniciar para Bootloader" no guia discutido abaixo, o que pode ser um pouco complicado.

Sparkfun tem um ótimo Guia Pro Micro Hookup. O Guia de conexão tem uma visão geral detalhada da placa Pro Micro e, em seguida, uma seção para "Instalando: Windows" e uma seção para "Instalando: Mac e Linux". Siga as instruções na versão apropriada dessas instruções de instalação para configurar seu Arduino IDE para suportar o Pro Micro. Normalmente começamos a trabalhar com uma placa Arduino carregando e / ou modificando o esboço Blink padrão. No entanto, o Pro Micro não inclui o LED normal no pino 13. Felizmente, podemos controlar os LEDs RX / TX. Sparkfun forneceu um pequeno esboço interessante para demonstrar como. Isso está na seção do Guia de Conexão intitulada, "Exemplo 1: Blinkies!" Verifique se você pode compilar e programar este Blinkies! exemplo no Pro Micro antes de seguir em frente.

Uma vez que tudo parece estar funcionando para programar o Pro Micro, é hora de soldar cuidadosamente os pinos do cabeçote no módulo. Após a soldagem, teste cuidadosamente a placa novamente.

Para sua informação: Graças ao seu transceptor USB integrado, o Pro Micro pode ser facilmente usado para emular um dispositivo de interface humana (HID), como um teclado ou mouse, e brincar com a injeção de teclas.

Etapa 4: Códigos QR em tela LCD colorida

Códigos QR em tela LCD colorida
Códigos QR em tela LCD colorida

A tela LCD possui 128 x 160 pixels coloridos e mede 1,8 polegadas na diagonal. O chip de driver ST7735S (folha de dados) pode ser interfaceado a partir de quase qualquer microcontrolador usando um barramento de interface periférica serial (SPI). A interface é especificada para sinalização de 3,3 V e fonte de alimentação.

O módulo LCD pode ser conectado diretamente ao Pro Micro de 3,3 V usando 7 fios de ligação FF:

LCD ---- Pro Micro

GND ---- GND VCC ---- VCC SCL ---- 15 SDA ---- 16 RES ---- 9 DC ----- 8 CS ----- 10 BL ----- Sem conexão

Esta atribuição de pino específica permite que os exemplos da biblioteca funcionem por padrão.

A biblioteca chamada "Adafruit ST7735 e ST7789" pode ser encontrada no IDE do Arduino usando o menu Ferramentas> Gerenciar bibliotecas. Durante a instalação, o gerenciador da biblioteca irá sugerir algumas bibliotecas dependentes que acompanham essa biblioteca. Permita que ele os instale também.

Depois que a biblioteca estiver instalada, abra Arquivos> Exemplos> Adafruit ST7735 e Biblioteca ST7789> graphicstest

Compile e carregue o teste gráfico. Ele irá gerar uma demonstração gráfica na tela LCD, mas com algumas linhas e colunas de "pixels barulhentos" nas bordas da tela.

Esses "pixels ruidosos" podem ser corrigidos alterando a função de inicialização TFT usada próximo ao topo da função de configuração (vazio).

Comente a linha de código:

tft.initR (INITR_BLACKTAB);

E descomente a linha algumas linhas abaixo:

tft.initR (INITR_GREENTAB);

Reprograme a demonstração e tudo ficará bem.

Agora podemos usar o LCD para exibir códigos QR

De volta ao menu do IDE do Arduino, Ferramentas> Gerenciar bibliotecas.

Localize e instale a biblioteca QRCode.

Baixe o esboço QR_TFT.ino anexado aqui.

Compile e programe QR_TFT no ProMicro e veja se você pode usar o aplicativo da câmera do seu telefone para ler o código QR gerado no display LCD.

Alguns projetos usam a geração de QR Code para se inspirar

Controle de acesso

Relógio QR

Etapa 5: Cabo plano flexível

Cabo plano flexível
Cabo plano flexível

Um cabo plano flexível (FFC) é qualquer variedade de cabo elétrico plano e flexível, com condutores sólidos planos. Um FFC é um cabo formado por, ou semelhante a, um Circuito Impresso Flexível (FPC). Os termos FPC e FFC às vezes são usados alternadamente. Esses termos geralmente se referem a um cabo plano extremamente fino, freqüentemente encontrado em aplicativos eletrônicos de alta densidade, como laptops e telefones celulares. Eles são uma forma miniaturizada de cabo plano que geralmente consiste em uma base de filme plástico flexível e plana, com vários condutores metálicos planos ligados a uma superfície.

Os FFCs vêm em uma variedade de passos de pino com 1,0 mm e 0,5 mm sendo duas opções comuns. A placa de breakout FPC incluída tem traços para esses dois passos, um em cada lado do PCB. Apenas um lado do PCB é usado dependendo do passo desejado, 0,5 mm neste caso. Certifique-se de usar a numeração do pino do cabeçalho impressa no mesmo lado de 0,5 mm do PCB. A numeração do pino no lado de 1,0 mm não corresponde e é usada para uma aplicação diferente.

Os conectores FFC no breakout e no leitor de código de barras são conectores ZIF (força de inserção zero). Isso significa que os conectores ZIF têm um controle deslizante mecânico que é aberto com dobradiça antes que o FFC seja inserido e, em seguida, fechado com dobradiça para apertar o conector no FFC sem aplicar força de inserção no próprio cabo. Duas coisas importantes a serem observadas sobre esses conectores ZIF:

1. Ambos são "contato inferior", o que significa que os contatos de metal no FFC devem estar voltados para baixo (em direção ao PCB) quando inseridos.

2. O controle deslizante articulado na quebra está na frente do conector. Isso significa que o FFC passará por baixo / através do controle deslizante articulado. Em contraste, o controle deslizante articulado no leitor de código de barras está na parte traseira do conector. Isso significa que o FFC entrará no conector ZIF pelo lado oposto e não pelo controle deslizante articulado.

Lembre-se de que outros tipos de conectores FFC / FPC ZIF têm controles deslizantes laterais, ao contrário dos controles deslizantes com dobradiças que temos aqui. Em vez de dobrar para cima e para baixo, os controles deslizantes laterais deslizam para dentro e para fora dentro do plano do conector. Sempre observe com atenção antes de usar pela primeira vez um novo tipo de conector ZIF. Eles são muito pequenos e podem ser facilmente danificados se forçados para fora de sua faixa ou plano de movimento pretendido.

Etapa 6: leitor de código de barras

Leitor de códigos de barra
Leitor de códigos de barra

Uma vez que o leitor de código de barras e o breakout do FPC são conectados pelo cabo plano flexível (FFC), cinco fios de jumper fêmea podem ser usados para conectar o PCB do breakout ao Arduino Pro Micro:

FPC ---- Pro Micro

3 ------ GND 2 ------ VCC 12 ----- 7 4 ------ 8 5 ------ 9

Uma vez conectado, programe o sketch barscandemo.ino no Pro Micro, abra o Serial Monitor e escaneie todas as coisas! Pode ser surpreendente quantos objetos ao redor de nossas casas e escritórios possuem códigos de barras. Você pode até conhecer alguém com uma tatuagem de código de barras.

O manual do leitor de código de barras anexo contém códigos que podem ser lidos para configurar o processador embutido no leitor.

Etapa 7: hackear o planeta

Hack the Planet
Hack the Planet

Esperamos que você esteja aproveitando a aventura HackerBox deste mês em eletrônica e tecnologia de computador. Entre em contato e compartilhe seu sucesso nos comentários abaixo ou em outras mídias sociais. Além disso, lembre-se de que você pode enviar um e-mail para [email protected] a qualquer momento se tiver alguma dúvida ou precisar de ajuda.

Qual é o próximo? Junta-te à revolução. Viva o HackLife. Receba uma caixa de equipamentos hackeavel diretamente em sua caixa de correio a cada mes. Navegue até HackerBoxes.com e cadastre-se para obter sua assinatura mensal do HackerBox.

Recomendado: