Apuntes de Kirby
  • 👀whoami
  • 🦉Redes
    • Introducción Redes
      • Organizaciones
      • Historia
      • Puntos de conexión
      • Métodos de acceso a la red
    • Clasificación de las redes
    • Topología de las red
    • Direccionamiento IP
      • IPv4
        • Subredes IPv4
        • Superredes IPv4
        • VLSM
      • IPv6
      • MAC
      • NAT
    • Enrutamiento estático
    • Enrutamiento dinámico
      • RIPv1 & RIPv2
      • Tablas de enrutamiento
      • 🚧Redes conmutadas
    • CML
      • 🚧1er CML lab
    • CISCO
      • ¿Qué son las VLAN?
        • Ejemplo 1 de VLAN
        • Ejemplo 2 de VLAN
      • Acceso y password
      • NAT / PAT
    • Firewalls
      • Tipos de firewalls
      • ZPF
        • Funcionamiento
        • Configurando un ZPF
      • Sophos Firewall XG
        • Sophos home
        • Aprendiendo a usar Sophos
      • pfSense
        • Instalando pfSense
        • OpenVPN en pfSense
        • Port Forward
        • Alias
    • Proxy
      • Squid en pfSense
        • Squid Proxy Server
        • SquidGuard Proxy
      • Proxy reverse Nginx
    • 🚧Suricata
  • 🐝Servicios
    • Servidores Web
      • Nginx
        • NGINX, hosts virtuales
        • Hosts virtuales basados en dominio
        • PHP-FPM
        • Nginx: PHP y MySQL
          • MySQLi - PHP
        • En Alpine linux
        • 🚧Proxy
    • Servidores de correo
      • Seguridad en el correo
      • Postfix
      • hMailServer
      • Clientes de correo
        • Mailutils
        • Mutt
    • Servidores de FTP
      • FileZilla
      • VSFTPD
      • FTP vía IIS
    • Servidores DNS
      • DNS - Windows Server 2016
      • DNS - Ubuntu Server 22.04
      • Systemd
    • Servidores DHCP
      • DHCP-Windows Server 2016
      • DHCP-Ubuntu Server 22.04
    • Servidores MySQL
    • 🚧Mensajería instantánea
      • Ejabberd
    • 🚧Imágenes - Vídeos
      • FFMPEG + YT-DLP
      • Plex
      • Jellyfin
      • Plesk
      • RTMP
      • SRT
    • Webmin + Virtualmin
  • NextCloud
  • 🔑Seguridad
    • NAS
      • Instalación Synology NAS en VirtualBox
        • Creación de volúmenes y su uso
        • Actualización Synology NAS
        • Creación de usuarios y carpetas compartidas
        • Funciones del panel de control
          • Acceso por SSH
          • Configuración de los servicios de archivos
          • Configuración de red
          • Copias de seguridad (restauración)
          • Seguridad
          • Personalizar páginas de inicio
          • Servicio de notificaciones
        • Centro de paquetes Synology
          • Servidores multimedia
          • Paquetes de utilidades
          • Cloud Sync
          • Hyper Backup
          • Synology Office
      • Truenas
        • Rsync en Truenas
      • OpenmediaVault
    • Backups
      • Rsync
        • Ejemplo de rsync
    • ¿Qué son las ACL?
    • SOPS/AGE
    • RAID
      • mdadm
  • 🐳Virtualización
    • Proxmox
      • Instalar en VMWare
      • Instalar en VirtualBox
      • Entorno Proxmox
      • Almacenamiento local
      • Añadir discos
      • Clonar
      • Qemu agent
      • Linux container - LXC
      • Clúster
      • Red Interna
      • 🚧Proxmox Backup
      • 🚧Otras consideraciones
    • Alpine Linux
    • Contenedores
      • Docker
        • YAML
        • Instalando Docker
        • Portainer
          • Instalando Portainer
          • Dentro de Portainer
        • Docker volumen
        • Docker compose
          • Docker: PHP y MySQL
          • Importar sitio web en Docker
          • Instalando Wordpress
      • Pi-hole
        • Instalando Pi-hole en Docker
        • Instalando Pi-hole en Debian
        • RDP
          • RDP - Docker
  • 🐞Misceláneas
    • Datos - codificación
    • IPTables
    • Túnel con Cloudflare
    • Servidor de video
    • Comandos de Linux
    • Anaconda & Spyder
    • CGI - NGINX
    • Arduino
      • Capítulo 0 Blink
      • Capítulo 1 Led
      • Capítulo 2 Botton & LED
  • ⁉️Interesante
    • Curioso
    • Ideas
Powered by GitBook
On this page
  • Bits
  • Bytes
  • Patrones de bits
  • Códigos
  • ASCII
  • ASCII Extendido
  • Unicode
  • ISO
  • UTF8
  • Representación de imágenes
  • Mapa de bits
  • Gráfico de vectores
  • BASE 64
  • Ejemplo (1)
  • Ejemplo (2)
  • Ejemplo (3)
  • HEX
  • Links

Was this helpful?

Edit on GitHub
  1. Misceláneas

Datos - codificación

Los datos son una mezcla de diferentes tipos: texto, números, imagen, audio, video.

  • Utilizamos representaciones uniformes de todos los tipos de datos

  • Cuando se entran datos a un dispositivo,al ser usados y almacenados, éstos se transforman según la representación uniforme establecida.

  • Se le denomina patrón de bits a esa representación o formato universal

La representación uniforme de datos en un equipo se refiere a un formato estándar en el que la información se organiza y almacena de manera consistente para facilitar su manipulación y procesamiento.

Bits

Un bit es la unidad mas pequeña de datos que puede almacenarse en un dispositivo: 0 o 1. Un bit no sirve para representar los datos. Se necesita almacenar número más grandes, textos, gráficos, etc. Se hace necesario el uso los patrones de bits, secuencia o cadenas de bits.

Bytes

Un patrón, secuencia o cadenas de bits con una longitud de 8 bits es un byte Cualquier idioma se puede definir como una secuencia de sḿbolos usados. Se puede representar cada símbolo con un patrón de bits ¿Cuántos bits podemos necesitar en una secuencia para representr un símbolo en un idioma dado?

Patrones de bits

  • Si tenemos un patrón de 2 bits tendríamos 4 combinaciones posibles: 00, 01, 10 y 11

  • Si tenemos un patrón de 3 bits tendríamos 8 combinaciones posibles: 000, 001, 010, 011,00, 101, 110 y 111

  • Cada combinación puede representar un símbolo

Códigos

Se han diseñado distintos tipos de secuencias de patrones para poder representar los caracteres de un texto. Al proceso de de representar los caracteres o símbolos se le conoce como codificación.

ASCII

Es el estándar para la representación de caracteres en cualquier dispositivo electrónico. Código de caracteres basado en el alfabeto latino. Creado en 1963 por ANSI como una evolución de los códigos utilizados en telegrafía. En 1967 se publicó En 1986 tuvo la última actualización Utiliza 7 bits para representar los caracteres. Casi todos los sistemas informáticos actuales usan el ASCII o una extensión compatible.

ASCII Extendido

Para hacer que el tamaño de cada patrón sea de 1 byte (8 bits), a los patrones de bits ASCII se les aumenta un cero más a la izquierda. Cada patrón cabe fácilmente en un byte de memoria.

Los caracteres ASCII van:

  • De 0 a 127 en decimal De la “A – Z” (del 65 al 90)

  • De la “a – z” (del 97 al 122)

Algunas representaciones de caracteres:

  • Alt + 32 - espacio

  • Alt + 64 - arroba desde el teclado alfanumérico

  • Alt + 10 – cambio de línea

  • Alt + 27 - escape

Muchos de los caracteres de control se usaban para controlar protocolos de transmisión de datos, como ocurre en comunicación:

  • ACKnowledge: acuse de recibo - mensaje que el destino envía al origen para confirmar la recepción de un mensaje.

  • Se definen también diferentes ACK con información más compleja como peticiones de reenvío de determinadas tramas o información sobre incidencias entre otros.

  • Los mensajes ACK se utilizan en la mayoría de las capas del OSI pero son esenciales en la capa 2 y 3.

  • NACK (negative acknowledgement o acuse de recibo negativo – se envía para informar que en la recepción de una trama de datos ha habido un error. Es el contrario de ACK.

  • SYN – sincronía en espera dado que no hay bits de start, stop o paridad presentes en los sistemas de comunicación en serie síncronos, hubo que establecer una serie de caracteres para el reconocimiento de los caracteres a sincronizar en el envío de información.

Unicode

Por la necesidad de disponer de un código con mayores capacidades. Se creó una coalición de fabricantes de hardware y software que desarrolló un código que utiliza 16 bits y puede representar hasta 65 536 (216) símbolos. Distintas secciones del código se asignan a los símbolos de distintos idiomas en el mundo.

ISO

La ISO diseñó un código que utiliza patrones de 32 bits.

ISO 8859-1. Es una norma de la ISO que define la codificación del alfabeto latino. Incluye letras acentuadas, ñ, ç) y especiales como ß, Ø) que son necesarios para la escritura de idiomas europeos como: alemán, español, catalán, euskera, francés, inglés, islandés, italiano, neerlandés, noruego, portugués, etc.

UTF8

  • Diseñado en 1992

  • Formato de codificación de caracteres Unicode e ISO 10646 de longitud variable.

  • Es una de las 3 posibilidades de codificación reconocidas por Unicode y Web.

  • Es capaz de representar todos los caracteres Unicode.

  • Representa cualquier mensaje ASCII sin cambios: compatible con versiones anteriores del ASCII.

  • Ahorra espacio de almacenamiento para textos en caracteres latinos.

Representación de imágenes

Se representan de dos maneras:

  • Gráfico de mapas de bits

  • Gráfico de vectores

Mapa de bits

Una imagen se divide en una matriz de pixeles.

A cada pixel se le asigna un patrón de bits. El tamaño y el valor del patrón depende de la imagen, para una imagen formada solo por puntos blancos y negros, un patrón de un bit es suficiente para representar un pixel.

Para representar imágenes a color, cada pixel de color se descompone en tres colores primarios: rojo, verde, azul (RGB).

Cada pixel tiene tres patrones de bits:

  • uno para representar la intensidad del color rojo,

  • otro para la intensidad del color verde

  • el tercero para la intensidad del color azul

Gráfico de vectores

No guarda los patrones de bits. La imagen se descompone en una combinación de curvas y líneas. Cada curva o línea se representa por medio de una formula matemática. En este caso cada vez que se dibuja la imagen, la formula se vuelve a evaluar.

BASE 64

Es un sistema de numeración posicional de base 64. Es la mayor potencia que podemos representar usando solo los caracteres ASCII. Se usa en codificaciones de E-mail y PGP entre otras aplicaciones. Por tanto, es un método de codificación que convierte datos binarios en una representación de texto ASCII utilizando un conjunto de 64 caracteres.

El alfabeto consta de 64 caracteres [A-Z][a-z][0-9] y los símbolos / y +

Esto es: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

Su funcionamiento es como sigue:

  1. Los datos binarios se dividen en bloques de 3 bytes, o sea 24 bits. Si al final quedan menos de 3 bytes para codificar, se agregan bytes nulos para formar un bloque completo.

  2. Cada bloque de 3 bytes se convierte en un número entero de 24 bits, que es equivalente a 3 bytes en binario.

  3. El número entero de 24 bits se divide en 4 números enteros de 6 bits.

  4. Cada número entero de 6 bits se mapea a un carácter del conjunto de caracteres Base64. Estos caracteres están definidos como: A-Z, a-z, 0-9, +, /.

  5. Si el número de bytes de entrada no es divisible por 3, se añaden uno o dos caracteres de relleno (=) al final de la cadena Base64 para asegurar que la longitud total sea un múltiplo de 4.

Ejemplo (1)

Vamos a ver como se transforma la palabra Hi! codificada en Base64:

  1. Convertir cada caracter a su correspondiente valor ASCII:

    • H -> 72

    • i -> 105

    • ! -> 33

  2. Convertir esos valores en su correspondiente binario:

    • H -> 01001000

    • i -> 01101001

    • ! -> 00100001

  3. Combinar estos bits en un solo bloque de 24 bits: 01001000 01101001 00100001

  4. Dividir este bloque en 4 bloques de 6 bits: 010010 000110 100100 100001

  5. Convertir cada bloque de 6 bits a sus valores decimales:

    • 010010 -> 18

    • 000110 -> 6

    • 100100 -> 36

    • 100001 -> 33

  6. Mapear los valores decimales en caracteres Base64:

    • 18 -> S

    • 6 -> G

    • 36 -> k

    • 33 -> !

Por lo tanto, la palabra Hi! en Base64 representa como SGk=.

Para realizar la decodificación de Base64 simplemente realizamos el proceso inverso:

  • tomamos la cadena en Base64,

  • convertimos cada carácter a su valor numérico de 6 bits,

  • combinamos estos valores para formar bloques de 24 bits, y

  • convertimos estos bloques de bits de vuelta a los datos binarios originales.

Ejemplo (2)

Pensemos en este otro ejemplo. La palabra Man.

Ejemplo (3)

Tomemos la palabra Bola

  • Buscamos el binario de cada letra en ASCII

  • Dividimos en grupos de 6 y rellenamos con ceros a la derecha (4 en este caso)

  • Ahora tenemos que convertir de 6 bits a 8 bits, para lo cual agregamos 2 ceros (00) a la izquierda:

  • Volvemos a la tabla ASCII - buscamos los binarios correspondientes y tomamos nota de su número decimal:

  • Por último, buscamos la referencia decimal en la tabla Base64:

A continuación te dejo algunos casos comunes en los que utilizar Base64:

  1. Autenticación y cifrado: Se puede utilizar para ciertas aplicaciones de autenticación o para la representación de datos cifrados en un formato legible.

  2. Intercambio de datos en la web: Útil para incrustar imágenes en documentos HTML o CSS.

  3. Transmisión de datos binarios en texto: En el correo electrónico, en HTTP, donde solo se permiten caracteres de texto legibles. Al codificar datos binarios en Base64, estos datos pueden enviarse como texto ASCII.

  4. Incorporación de datos binarios en formatos de texto: Algunos formatos de archivo o protocolos, como XML o JSON, no admiten directamente la inclusión de datos binarios. Al codificar los datos binarios en Base64, pueden ser incluidos como una cadena de texto en estos formatos.

  5. Protección de datos binarios en sistemas que podrían alterarlos: Algunos sistemas de transmisión o almacenamiento podrían alterar datos binarios si no se representan correctamente. Base64 proporciona una representación segura y confiable de datos binarios.

Base64 convierte datos binarios en un formato de texto legible y seguro, pero conlleva un aumento del tamaño de los datos (aproximadamente un 33% de aumento), debido a la forma en que los bits se agrupan en bloques de 6 bits para representar los 64 caracteres.

HEX

Es un sistema de numeración posicional basado en 16 dígitos del 0 al 9 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) las letras de la A a la F (A, B, C, D, E, F).

  • Se utiliza para registrar valores numéricos en los registros de memoria.

  • Ocupa menor cantidad de dígitos a la hora de almacenar datos y valores numéricos muy grandes.

  • Cada dígito hexadecimal se representa con 4 dígitos binarios.

  • Facilita la conversión y almacenamiento de números en los dispositivos electrónicos, memorias y equipos.

  • Es una notación más compacta y utiliza menos dígitos que el sistema binario.

Links

  • https://programmerclick.com/article/9056135008/

  • https://marquesfernandes.com/es/tecnologia-es/que-y-base64-para-que-serve-y-como-funciona/ https://gchq.github.io/CyberChef/#recipe=To_Base64('A-Za-z0-9%2B/%3D')&input=Qm9sYQ

  • https://gchq.github.io/CyberChef/#recipe=To_Base64('A-Za-z0-9%2B/%3D')&input=TWFu

PreviousRDP - DockerNextIPTables

Last updated 1 year ago

Was this helpful?

🐞
Códigos ASCII - Tabla de caracteres y simbolos ascii
http://www3.uacj.mx/CGTI/CDTE/JPM/Documents/IIT/sistemas_numericos/representacion/index.htmlwww3.uacj.mx
Representación en HEX
Descripción general de Unicode - Guía para entornos de idiomas internacionales
Logo
Tabla de caracteres Unicode - Todos los símbolos Unicode y sus códigos en una sola página (◕‿◕) SYMBL
Logo