Tabla de contenido:

HackerBox 0058: Codificar: 7 pasos
HackerBox 0058: Codificar: 7 pasos

Video: HackerBox 0058: Codificar: 7 pasos

Video: HackerBox 0058: Codificar: 7 pasos
Video: Rasa Livecoding: Dialect bot (Encoding user input: Part 2) 2024, Mes de julio
Anonim
HackerBox 0058: Codificar
HackerBox 0058: Codificar

¡Saludos a HackerBox Hackers de todo el mundo! Con HackerBox 0058 exploraremos la codificación de información, códigos de barras, códigos QR, programación de Arduino Pro Micro, pantallas LCD integradas, integración de la generación de códigos de barras en proyectos Arduino, exploits de dispositivos de entrada humana y más.

HackerBoxes es el servicio de caja de suscripción mensual para entusiastas de la electrónica y la tecnología informática - Hardware Hackers - The Dreamers of Dreams.

Hay una gran cantidad de información para miembros actuales y potenciales en las preguntas frecuentes de HackerBoxes. Casi todos los correos electrónicos de soporte no técnico que recibimos ya están respondidos allí, por lo que realmente agradecemos que se tome unos minutos para leer las preguntas frecuentes.

Suministros

Este Instructable contiene información para comenzar con HackerBox 0058. El contenido completo de la caja se enumera en la página del producto de HackerBox 0058, donde la caja también está disponible para su compra hasta agotar existencias. Si desea recibir automáticamente un HackerBox como este en su buzón cada mes con un descuento de $ 15, puede suscribirse en HackerBoxes.com y unirse a la revolución.

Generalmente se necesitan un soldador, una soldadura y herramientas de soldadura básicas para trabajar en el HackerBox mensual. También se requiere una computadora para ejecutar herramientas de software. Eche un vistazo al Taller de inicio de HackerBox Deluxe para obtener un conjunto de herramientas básicas y una amplia gama de actividades y experimentos introductorios.

Lo más importante es que necesitará sentido de la aventura, espíritu hacker, paciencia y curiosidad. Construir y experimentar con la electrónica, aunque es muy gratificante, puede ser complicado, desafiante e incluso frustrante en ocasiones. El objetivo es el progreso, no la perfección. Cuando persiste y disfruta de la aventura, se puede derivar una gran satisfacción de este pasatiempo. Dé cada paso lentamente, preste atención a los detalles y no tenga miedo de pedir ayuda.

Paso 1: codificación

Codificación
Codificación

Comunicar, registrar o manipular información requiere codificación. Dado que el procesamiento, el almacenamiento y la comunicación de información son la esencia de la electrónica moderna, tenemos que preocuparnos mucho por la codificación.

Como ejemplo muy simple de codificación, uno podría representar cuántos ojos u oídos tienen levantando dos dedos, o usando los números "2" o "] [" o usando las palabras "dos" o "dos" o " Er "o" zwei ". En realidad, no es tan simple, ¿verdad? La codificación utilizada en el lenguaje humano, especialmente en temas como las emociones o la abstracción, puede volverse muy compleja.

FÍSICA

Sí, todo siempre empieza por la física. En los sistemas electrónicos, comenzamos por representar los valores más simples mediante señales eléctricas, generalmente niveles de voltaje. Por ejemplo, CERO se puede representar como tierra (aproximadamente 0 V) y UNO como aproximadamente 5 V (o 3,3 V, etc.) para formar un sistema binario de ceros y unos. Incluso con solo CERO y UNO, a menudo hay ambigüedad que resolver. Cuando se presiona el botón, ¿es CERO o UNO? ¿Alto o bajo? ¿La señal de selección de chip es "activa alta" o "activa baja"? ¿A qué hora se puede leer una señal y durante cuánto tiempo será válida? En los sistemas de comunicación, esto se denomina "codificación de línea".

En este nivel más bajo, las representaciones tratan principalmente sobre la física del sistema. ¿Qué voltajes puede soportar, qué tan rápido puede hacer la transición, cómo se enciende y apaga el láser, cómo las señales de información modulan una portadora de radiofrecuencia, cuál es el ancho de banda del canal, o incluso cómo las concentraciones de iones generan potenciales de acción en un neurona. Para la electrónica, esta información a menudo se proporciona en las tablas imponentes de la hoja de datos del fabricante.

La capa física (PHY) o capa 1 es la primera y más baja capa en el modelo OSI de siete capas de redes de computadoras. La capa física define los medios para transmitir bits sin procesar a través de un enlace de datos físico que conecta los nodos de la red. La capa física proporciona una interfaz eléctrica, mecánica y de procedimiento al medio de transmisión. Las formas y propiedades de los conectores eléctricos, las frecuencias para transmitir, el código de línea a usar y parámetros similares de bajo nivel, son especificados por la capa física.

NÚMEROS

No podemos hacer mucho con solo UNO y CERO, o hubiéramos evolucionado para "hablar" parpadeando. Sin embargo, los valores binarios son un gran comienzo. En los sistemas informáticos y de comunicación, combinamos dígitos binarios (bits) en bytes y "palabras" que contienen, por ejemplo, 8, 16, 32 o 64 bits.

¿Cómo se corresponden estas palabras binarias con números o valores? En un byte simple de 8 bits, 00000000 es generalmente cero y 11111111 es generalmente 255 para proporcionar 2 a 8 o 256 valores diferentes. Por supuesto, no se detiene ahí, porque hay mucho más de 256 números y no todos los números son enteros positivos. Incluso antes de los sistemas informáticos, representábamos valores numéricos utilizando diferentes sistemas numéricos, lenguajes, bases y empleando técnicas como números negativos, números imaginarios, notación científica, raíces, razones y escalas logarítmicas de varias bases diferentes. Para los valores numéricos en los sistemas informáticos, tenemos que lidiar con problemas como las representaciones de épsilon de máquina, endianidad, punto fijo y punto flotante.

TEXTO (CETERA)

Además de representar números o valores, los bytes binarios y las palabras pueden representar letras y otros símbolos de texto. La forma más común de codificación de texto es el Código estándar estadounidense para el intercambio de información (ASCII). Por supuesto, se pueden codificar varios tipos de información como texto: un libro, esta página web, un documento xml.

En algunos casos, como el correo electrónico o las publicaciones de Usenet, es posible que deseemos codificar tipos de información más amplios (como archivos binarios generales) como texto. El proceso de codificación uuencoding es una forma común de codificación de binario a texto. Incluso puede "codificar" imágenes como texto: Arte ASCII o mejor aún, Arte ANSI.

TEORIA DE CODIFICACION

La teoría de la codificación es el estudio de las propiedades de los códigos y su respectiva idoneidad para aplicaciones específicas. Los códigos se utilizan para la compresión de datos, criptografía, detección y corrección de errores, transmisión de datos y almacenamiento de datos. Los códigos son estudiados por diversas disciplinas científicas con el fin de diseñar métodos de transmisión de datos eficientes y confiables. Las disciplinas de ejemplo incluyen teoría de la información, ingeniería eléctrica, matemáticas, lingüística e informática.

COMPRESIÓN DE DATOS (eliminando la redundancia)

La compresión de datos, la codificación de la fuente o la reducción de la tasa de bits es el proceso de codificar información utilizando menos bits que la representación original. Cualquier compresión en particular tiene pérdida o no tiene pérdida. La compresión sin pérdida reduce los bits al identificar y eliminar la redundancia estadística. No se pierde información en la compresión sin pérdidas. La compresión con pérdida reduce los bits al eliminar información innecesaria o menos importante.

Los métodos de compresión Lempel – Ziv (LZ) se encuentran entre los algoritmos más populares para el almacenamiento sin pérdidas. A mediados de la década de 1980, siguiendo el trabajo de Terry Welch, el algoritmo Lempel-Ziv-Welch (LZW) se convirtió rápidamente en el método de elección para la mayoría de los sistemas de compresión de uso general. LZW se utiliza en imágenes GIF, programas como PKZIP y dispositivos de hardware como módems.

Constantemente utilizamos datos comprimidos para DVD, transmisión de video MPEG, audio MP3, gráficos JPEG, archivos ZIP, bolas de alquitrán comprimidas, etc.

DETECCIÓN Y CORRECCIÓN DE ERRORES (agregando redundancia útil)

La detección y corrección de errores o el control de errores son técnicas que permiten la entrega confiable de datos digitales a través de canales de comunicación no confiables. Muchos canales de comunicación están sujetos a ruido de canal y, por lo tanto, pueden introducirse errores durante la transmisión desde la fuente a un receptor. La detección de errores es la detección de errores causados por ruido u otras alteraciones durante la transmisión del transmisor al receptor. La corrección de errores es la detección de errores y la reconstrucción de los datos originales sin errores.

La detección de errores se realiza de forma más sencilla mediante la repetición de transmisión, bits de paridad, sumas de comprobación o CRC, o funciones hash. Un error en la transmisión puede ser detectado (pero generalmente no corregido) por el receptor, quien luego puede solicitar la retransmisión de los datos.

Los códigos de corrección de errores (ECC) se utilizan para controlar errores en los datos a través de canales de comunicación ruidosos o poco confiables. La idea central es que el remitente codifica el mensaje con información redundante en forma de ECC. La redundancia permite al receptor detectar un número limitado de errores que pueden ocurrir en cualquier parte del mensaje y, a menudo, corregir estos errores sin retransmisión. Un ejemplo simplista de ECC es transmitir cada bit de datos 3 veces, lo que se conoce como código de repetición (3, 1). Aunque solo se transmiten 0, 0, 0 o 1, 1, 1, los errores dentro del canal ruidoso pueden presentar cualquiera de los ocho valores posibles (tres bits) al receptor. Esto permite corregir un error en cualquiera de las tres muestras mediante "voto mayoritario" o "votación democrática". La capacidad de corrección de este ECC es, por tanto, corregir 1 bit de error en cada triplete transmitido. Aunque simple de implementar y ampliamente utilizado, esta triple redundancia modular es un ECC relativamente ineficiente. Los mejores códigos ECC normalmente examinan las últimas decenas o incluso los últimos cientos de bits recibidos previamente para determinar cómo decodificar el pequeño puñado de bits actual.

Casi todos los códigos de barras bidimensionales como QR Codes, PDF-417, MaxiCode, Datamatrix y Aztec Code utilizan Reed-Solomon ECC para permitir una lectura correcta incluso si una parte del código de barras está dañada.

CRIPTOGRAFÍA

La codificación criptográfica está diseñada en torno a supuestos de dureza computacional. Tales algoritmos de codificación son intencionalmente difíciles de romper (en un sentido práctico) por cualquier adversario. Teóricamente es posible romper un sistema de este tipo, pero no es factible hacerlo por ningún medio práctico conocido. Por lo tanto, estos esquemas se denominan computacionalmente seguros. Existen esquemas teóricamente seguros de la información que probablemente no se pueden romper incluso con una potencia informática ilimitada, como el pad de un solo uso, pero estos esquemas son más difíciles de usar en la práctica que los mejores mecanismos teóricamente rompibles pero computacionalmente seguros.

El cifrado de cifrado tradicional se basa en un cifrado de transposición, que reordena el orden de las letras en un mensaje (por ejemplo, 'hola mundo' se convierte en 'ehlol owrdl' en un esquema de reordenación trivialmente simple), y cifrados de sustitución, que reemplazan sistemáticamente letras o grupos de letras con otras letras o grupos de letras (por ejemplo, 'volar a la vez' se convierte en 'gmz bu podf' al reemplazar cada letra con la que le sigue en el alfabeto latino). Las versiones simples de ambos nunca han ofrecido mucha confidencialidad a los oponentes emprendedores. Un cifrado de sustitución temprano fue el cifrado César, en el que cada letra del texto llano fue reemplazada por una letra con un número fijo de posiciones más abajo en el alfabeto. ROT13 es un cifrado de sustitución de letras simple que reemplaza una letra con la decimotercera letra después de ella, en el alfabeto. Es un caso especial del cifrado César. ¡Pruébalo aquí!

Paso 2: códigos QR

Códigos QR
Códigos QR

Los códigos QR (wikipedia) o "códigos de respuesta rápida" son un tipo de código de barras de matriz o bidimensional diseñado por primera vez en 1994 para la industria automotriz en Japón. Un código de barras es una etiqueta óptica legible por máquina que contiene información sobre el artículo al que está adherido. En la práctica, los códigos QR a menudo contienen datos para un localizador, identificador o rastreador que apunta a un sitio web o aplicación. Un código QR utiliza cuatro modos de codificación estandarizados (numérico, alfanumérico, byte / binario y kanji) para almacenar datos de manera eficiente.

El sistema Quick Response se hizo popular fuera de la industria automotriz debido a su rápida legibilidad y mayor capacidad de almacenamiento en comparación con los códigos de barras UPC estándar. Las aplicaciones incluyen seguimiento de productos, identificación de artículos, seguimiento del tiempo, gestión de documentos y marketing general. Un código QR consta de cuadrados negros dispuestos en una cuadrícula sobre un fondo blanco, que pueden ser leídos por un dispositivo de imágenes como una cámara y procesados usando la corrección de errores Reed-Solomon hasta que la imagen se pueda interpretar apropiadamente. Luego, los datos requeridos se extraen de los patrones que están presentes en los componentes horizontales y verticales de la imagen.

Los teléfonos inteligentes modernos generalmente leerán automáticamente los códigos QR (y otros códigos de barras). Simplemente abra la aplicación de la cámara, dirija la cámara hacia el código de barras y espere uno o dos segundos para que la aplicación de la cámara indique que se ha bloqueado en el código de barras. La aplicación a veces mostrará el contenido del cono de barra al instante, pero generalmente la aplicación requerirá la selección de la notificación del código de barras para mostrar cualquier información que se haya extraído del código de barras. Durante el mes de junio de 2011, 14 millones de usuarios móviles estadounidenses escanearon un código QR o un código de barras.

¿Usó su teléfono inteligente para leer los mensajes codificados en el exterior de HackerBox 0058?

Video interesante: ¿Puedes incluir un juego completo en un código QR?

Los veteranos pueden recordar el Cauzin Softstrip de las revistas de informática de los 80. (demostración de video)

Paso 3: Arduino Pro Micro 3.3V 8MHz

Arduino Pro Micro 3.3V 8MHz
Arduino Pro Micro 3.3V 8MHz

El Arduino Pro Micro se basa en el microcontrolador ATmega32U4 que tiene una interfaz USB incorporada. Esto significa que no hay FTDI, PL2303, CH340 o cualquier otro chip que actúe como intermediario entre su computadora y el microcontrolador Arduino.

Sugerimos probar primero el Pro Micro sin soldar los pines en su lugar. Puede realizar la configuración básica y las pruebas sin utilizar los pines del encabezado. Además, retrasar la soldadura al módulo da una variable menos para depurar en caso de que surja alguna complicación.

Si no tiene el IDE de Arduino instalado en su computadora, comience descargando el formulario IDE arduino.cc. ADVERTENCIA: asegúrese de seleccionar la versión de 3.3V en herramientas> procesador antes de programar el Pro Micro. Tener este conjunto para 5V funcionará una vez y luego parecerá que el dispositivo nunca se conectará a su PC hasta que siga las instrucciones de "Restablecer al cargador de arranque" en la guía que se describe a continuación, lo cual puede ser un poco complicado.

Sparkfun tiene una gran guía de conexiones Pro Micro. La Guía de conexión tiene una descripción detallada de la placa Pro Micro y luego una sección para "Instalación: Windows" y una sección para "Instalación: Mac y Linux". Siga las instrucciones en la versión apropiada de esas instrucciones de instalación para configurar su Arduino IDE para que sea compatible con Pro Micro. Por lo general, comenzamos a trabajar con una placa Arduino cargando y / o modificando el boceto estándar de Blink. Sin embargo, el Pro Micro no incluye el LED habitual en el pin 13. Afortunadamente, podemos controlar los LED RX / TX. Sparkfun ha proporcionado un pequeño bosquejo para demostrar cómo. Esto se encuentra en la sección de la Guía de conexiones titulada, "Ejemplo 1: ¡Blinkies!" Verifique que puede compilar y programar este Blinkies! ejemplo en el Pro Micro antes de seguir adelante.

Una vez que todo parece estar funcionando para programar el Pro Micro, es hora de soldar con cuidado los pines del cabezal en el módulo. Después de soldar, vuelva a probar cuidadosamente la placa.

FYI: Gracias a su transceptor USB integrado, el Pro Micro se puede usar fácilmente para emular un dispositivo de interfaz humana (HID) como un teclado o mouse, y jugar con la inyección de pulsaciones de teclas.

Paso 4: Códigos QR en pantalla LCD a todo color

Códigos QR en pantalla LCD a todo color
Códigos QR en pantalla LCD a todo color

La pantalla LCD presenta 128 x 160 píxeles a todo color y mide 1.8 pulgadas en diagonal. El chip de controlador ST7735S (hoja de datos) se puede conectar desde casi cualquier microcontrolador utilizando un bus de interfaz periférica en serie (SPI). La interfaz está especificada para señalización y fuente de alimentación de 3.3V.

El módulo LCD se puede conectar directamente al 3.3V Pro Micro usando 7 cables de puente FF:

LCD ---- Pro Micro

TIERRA ---- TIERRA VCC ---- VCC SCL ---- 15 SDA ---- 16 RES ---- 9 CC ----- 8 CS ----- 10 BL ----- No conecta

Esta asignación de pines específica permite que los ejemplos de la biblioteca funcionen de forma predeterminada.

La biblioteca llamada "Adafruit ST7735 y ST7789" se puede encontrar en el IDE de Arduino usando el menú Herramientas> Administrar bibliotecas. Durante la instalación, el administrador de la biblioteca sugerirá algunas bibliotecas dependientes que van con esa biblioteca. Permita que los instale también.

Una vez que la biblioteca esté instalada, abra Archivos> Ejemplos> Biblioteca Adafruit ST7735 y ST7789> prueba de gráficos

Compile y cargue la prueba de gráficos. Generará una demostración de gráficos en la pantalla LCD, pero con algunas filas y columnas de "píxeles ruidosos" en el borde de la pantalla.

Estos "píxeles ruidosos" se pueden solucionar cambiando la función de inicio de TFT que se utiliza cerca de la parte superior de la función de configuración (anulación).

Comente la línea de código:

tft.initR (INITR_BLACKTAB);

Y descomente la línea un par de líneas hacia abajo:

tft.initR (INITR_GREENTAB);

Vuelva a programar la demostración y todo debería verse bien.

Ahora podemos usar la pantalla LCD para mostrar códigos QR

Volver al menú Herramientas> Administrar bibliotecas de Arduino IDE.

Busque e instale la biblioteca QRCode.

Descargue el boceto QR_TFT.ino adjunto aquí.

Compile y programe QR_TFT en el ProMicro y vea si puede usar la aplicación de la cámara de su teléfono para leer el código QR generado en la pantalla LCD.

Algunos proyectos que utilizan la generación de códigos QR para inspirarse

Control de acceso

Reloj QR

Paso 5: cable plano flexible

Cable plano flexible
Cable plano flexible

Un cable plano flexible (FFC) es cualquier variedad de cable eléctrico que sea tanto plano como flexible, con conductores sólidos planos. Un FFC es un cable formado a partir de, o similar, un circuito impreso flexible (FPC). Los términos FPC y FFC a veces se usan indistintamente. Estos términos generalmente se refieren a un cable plano extremadamente delgado que a menudo se encuentra en aplicaciones electrónicas de alta densidad como computadoras portátiles y teléfonos celulares. Son una forma miniaturizada de cable plano que generalmente consiste en una base de película plástica plana y flexible, con múltiples conductores metálicos planos unidos a una superficie.

Los FFC vienen en una variedad de pasos de clavija, siendo 1.0 mm y 0.5 mm dos opciones comunes. La placa de conexión FPC incluida tiene rastros para ambos pasos, uno a cada lado de la PCB. Solo se utiliza un lado de la placa de circuito impreso según el paso deseado, 0,5 mm en este caso. Asegúrese de utilizar la numeración de los pines del encabezado impresa en el mismo lado de 0,5 mm de la PCB. La numeración de los pines en el lado de 1,0 mm no coincide y se utiliza para una aplicación diferente.

Los conectores FFC tanto en el escáner de código de barras como en el de ruptura son conectores ZIF (fuerza de inserción cero). Esto significa que los conectores ZIF tienen un deslizador mecánico que se abre con bisagras antes de insertar el FFC y luego se cierra con bisagras para apretar el conector en el FFC sin aplicar fuerza de inserción sobre el cable. Dos cosas importantes a tener en cuenta sobre estos conectores ZIF:

1. Ambos son "contactos inferiores", lo que significa que los contactos metálicos del FFC deben mirar hacia abajo (hacia la PCB) cuando se insertan.

2. El control deslizante con bisagras en la salida se encuentra en la parte frontal del conector. Esto significa que el FFC pasará por debajo / a través del control deslizante con bisagras. Por el contrario, el control deslizante con bisagras del escáner de código de barras se encuentra en la parte posterior del conector. Esto significa que el FFC ingresará al conector ZIF desde el lado opuesto y no a través del control deslizante con bisagras.

Tenga en cuenta que otros tipos de conectores FFC / FPC ZIF tienen deslizadores laterales a diferencia de los deslizadores con bisagras que tenemos aquí. En lugar de girar hacia arriba y hacia abajo, los deslizadores laterales se deslizan hacia adentro y hacia afuera dentro del plano del conector. Mire siempre con atención antes de utilizar por primera vez un nuevo tipo de conector ZIF. Son bastante pequeños y pueden dañarse fácilmente si se fuerzan fuera de su rango o plano de movimiento previsto.

Paso 6: Escáner de código de barras

Escáner de código de barras
Escáner de código de barras

Una vez que el escáner de código de barras y la ruptura de FPC están conectados por el cable plano flexible (FFC), se pueden usar cinco cables de puente hembra para conectar la PCB de ruptura al Arduino Pro Micro:

FPC ---- Pro Micro

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

Una vez conectado, programe el sketch barscandemo.ino en el Pro Micro, abra el Serial Monitor y escanee todas las cosas. Puede ser sorprendente cuántos objetos alrededor de nuestros hogares y oficinas tienen códigos de barras. Puede que incluso conozcas a alguien con un tatuaje de código de barras.

El manual del escáner de código de barras adjunto tiene códigos que se pueden escanear para configurar el procesador integrado en el escáner.

Paso 7: piratea el planeta

Hackear el planeta
Hackear el planeta

Esperamos que esté disfrutando de la aventura de HackerBox de este mes en la electrónica y la tecnología informática. Comuníquese y comparta su éxito en los comentarios a continuación o en otras redes sociales. Además, recuerde que puede enviar un correo electrónico a [email protected] en cualquier momento si tiene una pregunta o necesita ayuda.

¿Que sigue? Únete a la revolución. Vive la HackLife. Reciba una caja fresca de equipo pirateable directamente en su buzón de correo cada mes. Navegue a HackerBoxes.com y regístrese para obtener su suscripción mensual a HackerBox.

Recomendado: