Representaçao de Dados

Tipos Arquivos

Para sabermos qual o tipo de arquivo (independente da sua extensão), podemos utilizar o comando:

file <file>

A maioria dos arquivos digitais tem uma assinatura localizada nos 20 primeiros bytes do arquivo e é através desse cabeçalho que seu tipo será definido, e não pela sua extensão.

Decimal

É o sistema mais amplamente utilizado e é chamado de sistema de base 10 (decimal), pois usa 10 dígitos ou símbolos (0 ,1, 2, 3, 4, 5, 6, 7, 8, 9). A posição do número indica o valor que ele representa, e cada dígito é múltiplicado pela potência de 10 associada a sua posição. Segue abaixo o exemplo do número 5437:

5437 = 5000 + 400 + 30 + 7
# Ou mais precisamente
5437 = 5x10³ + 4x10² + 3x10¹ + 7x10º

Binário

Sistema numeral de base 2 é representado por 1 e 0, contendo 8 caracteres. Este segue a mesma regra do número decimal, porém este faz a multiplicação pela potência 2. Cada 1 ou 0 é chamado de bit (ou binário) e a soma de 8 bits se chama byte. O bit de ordem mais alta se localiza à extrema esquerda e tem maior valor, sendo chamado de MSB (Most Significant Bit) ou Bit Mais Significativo. Já o bit de valor mais baixo esstá localizaro fica à extrema extrema direita, sendo chamada de LSB (Least Significat Bit) ou Bit Menos Significante.

DICA: Os número binários podem ser escritos com o prefixo b, por exemplo: 0b11001

Hexadecimal

Também conhecido como Hex, este possui a base 16, contendo letras e números: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. OBS.: As letras maiúsculas são usadas para representar os número de 10 a 15

O Hexademical é mais curto e fácil de ser compreendidos por humanos. Segue abaixo um exemplo de conversão:

# Lembrando que "A" equivale "10"
19A = (1x16²) + (9x16¹) + (10X16º) = 256 +144 + 10 = 410

DICA: Os números Hex podem ser diferenciados com a inclusão do prefixo Ox ou a inserção do subscrito 16 ou do sufixo H

Convertendo Valores

Hexadecimal para Decimal

# Bash
printf "%d\n" 0x40
printf "%d\n" 0xdd84
printf "%d.%d.%d.%d\n" 0xc0 0xa8 0x00 0xc8

# Python
python -c "print 0x88"

Hexadecimal para Ascii

printf "\x47\x45\x54\n"
echo -e "\x47\x45\x54\n"

Sites

# Diversos tipos de encode/decode
https://ascii.cl

# Lista de caracteres com URL encode
https://www.w3schools.com/tags/ref_urlencode.ASP

# Encode/Decode em tempo real
https://onlinestringtools.com/
https://gchq.github.io/CyberChef/

# Converte Hexadecimal em Arquivo (binário)
https://tomeko.net/online_tools/hex_to_file.php?lang=en

Last updated