Blog do Guilherme

Hackers do bem - Identificar Componentes de Hardware de Computador

Introdução

Este post é um resumo sobre o conteúdo abordado no segundo módulo de nivelamento do curso hackers do bem que iniciou em 22/01/2024.

A ideia é compartilhar como o conhecimento de cibersegurança está sendo passado para os centenas de milhares de inscritos que vão popular o cenário profissional do país.

Os módulos do nivelamento são:

  1. Introdução à cibersegurança visitar
  2. Identificar componentes de hardware de computador (você está aqui)
  3. Compreender Internet e Camada de acesso à rede
  4. Compreender acesso a rede e camada de internet (IP)
  5. Compreender IPV6 e Camada de transporte
  6. Compreender Camada de Aplicação/Serviços de Rede
  7. Utilizar Sistemas Operacionais Windows
  8. Utilizar Sistemas Operacionais - Linux
  9. Lógica de programação
  10. Desenvolvimento de Scripts

A ementa do módulo Componentes de Hardware de Computadores começa com grandezas computacionais e sistemas numéricos, passa por arquitetura de hardware, identificação de componentes de hardware e termina com a instalação de sistemas operacionais e criação de ambientes virtuais (virtualização).

As aulas são compostas de textos interativos junto à vídeos gravados pelo instrutor Tulio Saji.

Aula 1: Grandezas computacionais e sistemas numéricos

O início da informática está ligado com a busca por uma resolução rápida de cálculos complexos.

Alguns marcos no desenvolvimento das máquinas utilizadas são:

Em 1948 surge o termo bit (b), junção das palavras Binary Digit, que representa a menor unidade computacional (0 ou 1).

Depois é definido o Byte (B) como o conjunto de 8 bits, usado para representar caracteres através da tabela ASCII.

A tabela ASCII é formada por 256 valores, cada um representando um caracter específico:

Mais info sobre a tabela ascii

O total de 256 valores é dado pelo tamanho do byte: são oito bits que podem, cada um deles, ter dois valores. Isso dá uma combinação de 2^8 = 256 valores.

Cada valor nesse intervalo pode ser calculado pela soma das potencias de 2 equivalente a sua posição.

Por exemplo, o caractere A (“a maiúsculo”) é definido pelo decimal 65, que em binário é 01000001.

O 65 pode ser encontrado partindo de 01000001 pelo cálculo

0  1  0  0  0  0  0  1
|  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |___ 1 * 2^0 = 1 *  1 = 1
|  |  |  |  |  |  |_______0 * 2^1 = 0 *  2 = 0
|  |  |  |  |  |__________0 * 2^2 = 0 *  4 = 0
|  |  |  |  |_____________0 * 2^3 = 0 *  8 = 0
|  |  |  |________________0 * 2^4 = 0 * 16 = 0
|  |  |___________________0 * 2^5 = 0 * 32 = 0
|  |______________________1 * 2^6 = 1 * 64 = 64
|_________________________0 * 2^7 = 0 * 128 = 0

1 + 64 = 65.

Da mesma forma, podemos encontrar o equivalente decimal de outros caracteres:

-Aaç
27001
26111
25011
24000
23000
22001
21001
20111
-6597231
  • os 31 primeiros valores (do 00000000 até o 00011111) são caracteres de controle, que não podem ser impressos.
  • do 32 ao 127, são os caracteres comuns, passíveis de impressão, como os numerais e as letras maiúsculas e minúsculas.
  • do 128 ao 255 são os caracteres extendidos, contendo valores como o cedilha (ç), letras acentuadas (á, à, ä) e alguns símbolos como ¼, ¿, ¬.

Existem 2 nomenclaturas para grandezas computacionais:

SI - Sistema internacional, em Base 10: KiloByte, MegaByte, GigaByte, etc.

IEC - PrefixoBinário, em Base 2: KibiByte (Kilo Binary), MebiByte (Mega Binary), etc.

Sistema InternacionalSistema Binário
NomeSimb.ValorNomeSimb.Valor
byteB1byteB1
kilobyteKB1000B (103B)kibibyteKiB1024B (210B)
megabyteMB1000KB (106B)mebibyteMiB1024KiB (220B)
gigabyteGB1000MB (109B)gibibyteGiB1024MiB (230B)
terabyteTB1000GB (1012B)tebibyteTiB1024GiB (240B)
petabytePB1000TB (1015B)pebibytePiB1024TiB (250B)
exabyteEB1000PB (1018B)exibibyteEiB1024PiB (260B)
zettabyteZB1000EB (1021B)zebibyteZiB1024EiB (270B)
yottabyteYB1000ZB (1023B)yobibyteYiB1024ZiB (280B)

Existem também grandezas para velocidade de transmissão.

Outra grandeza utilizada é o conjunto de grandezas elétricas:

Outras grandezas comuns são:

Bases numéricas e conversões

O “nome” da base indica a quantidade de algarismos disponíveis.

Exemplos:

A Base 10 possui os algarismos (do 0 ao 9). A base 2 possui apenas dois (0 e 1), enquanto a base 16 possui do 0 ao 9 e do A ao F (totalizando 16).

Para converter binários e hexadecimal para decimal, usamos a Notação Posicional.

Por ex, o número 6238 pode ser descrito em notação posicional da seguinte forma:

6238 = 6000 + 200 + 30 + 8
6238 = 6*1000 + 2*100 + 3*10 + 8*1
6238 = 6*103 + 2*102 + 3*101 + 8*100

Quando aplicamos a mesma lógica para binários, temos o seguinte:

111100012 = 1*27 + 1*26 + 1*25 + 1*24 + 0*23 +0*22 + 0*21 + 1*20
111100012 = 1*128 + 1*64 + 1*32 + 1*16 + 0*8 + 0*4 + 0*2 + 1
111100012 = 128 + 64 + 32 + 16 + 0 + 0 + 0 + 1
111100012 = 24110

Para hexadecimais:

EFBD99816 = E*166 + F*165 + B*164 + D*163 + 9*162 + 9*161 + 8*160
EFBD99816 = 14*166 + 15*165 + 11*164 + 13*163 + 9*162 + 9*161 + 8*160
EFBD99816 = 14*16777216 + 15*1048576 + 11*65536 + 13*4096 + 9*256 + 9*16 + 8*1
EFBD99816 = 234881024 + 15728640 + 720896 + 53248 + 2304 + 144 + 8
EFBD99816 = 25138626410

Para converter de números decimais para binários e hexadecimais, existem diferentes técnicas.

No caso dos binários, podemos utilizar uma sequência de divisões por 2.

O algoritmo consiste em dividir o número inicial por 2, e depois todos os quocientes também por dois, até atingir um quociente menor que 2.

O número convertido vai ser formado pelo resto das divisões somadas ao último quociente, na ordem contrária.

Clique para ver uma implementação simples desse algoritmo em Python
def dec_to_bin(dec_number: int, bin_num: str) -> str:
    if dec_number < 2:
        return str(dec_number) + bin_num
    quocient = dec_number // 2
    remainder = dec_number % 2
    return dec_to_bin(quocient, str(remainder) + bin_num)


bin_number = dec_to_bin(347, "")
print(bin_number)  # 101011011

Algoritmo para conversão manual de números decimais para binários, usando como exemplo o número decimal 347

Para conversão de Base 16 para Base 2 ou Base 2 para Base 16, podemos usar uma tabela:

HexadecimalBinário
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
A1010
B1011
C1100
D1101
E1110
F1111

FACA16 = F(1111) A(1010) C(1100) A(1010) FACA16= 1111 1010 1100 10102

Aula 2 - CPU, Placa-mãe, Memórias e BIOS/UEFI

Os computadores são formados por conjuntso de peças construídas e instaladas ao redor de um microprocessador. Nessa aula são abordados os seguintes componentes:

Processador (CPU)

O processador, ou CPU (Central Processing Unit), é definido em função de algumas características:

É bom se familiarizar com a nomenclatura usada pelos diferentes fabricantes.

No exemplo da AMD, temos o seguinte formato:

AMD Ryzen 7 3700X
 |   |    | ||  |__ indicador de alta performance
 |   |    | ||
 |   |    | ||_____ variação da série
 |   |    | |
 |   |    | |______ série 3000
 |   |    |
 |   |    |________ modelo
 |   |
 |   |_____________ marca
 |
 |_________________ fabricante

Existem os seguintes indicadores para processadores da AMD:

Para a Intel temos:

Intel Core I7 11700F
  |     |  |   | | |_ indicador de "sem vídeo integrado"
  |     |  |   | |
  |     |  |   | |___ variação da geração
  |     |  |   |
  |     |  |   |_____ geração 11
  |     |  |
  |     |  |_________ modelo
  |     |
  |     |____________ marca
  |
  |__________________ fabricante

A Intel usa os seguintes indicadores:

O processador precisa de um Cooler para manutenção da temperatura.

O processador precisa ser compatível com a placa mãe e o cooler selecionados.

Placa mãe

A placa mãe interliga todos os componentes necessários para funcionamento do computador.

Os componentes podem ser considerados “onboard” ou “offboard”, onde a placa mãe pode ter alguns recursos, como placa de som, placa de rede e outros, integrados direto na placa mãe (chamados de “onboard”).

As principais conexões feitas na placa mãe são:

  1. Socket para conexão do processador

  2. Slots de memória RAM

  3. Slot PCIe, para conexão de periféricos como placas de vídeo ou SSDs.

  4. Chipset, responsável pela comunicação entre os diversos componentes da placa mãe.

  5. Bateria BIOS/UEFI, responsável por manter a hora do sistema entre boots.

  6. BIOS.

    Responsável pelo boot do sistema e comumente chamada de BIOS, mas computadores mais novos utilizam a especificação UEFI.

  7. Conector 24 pinos para alimentação da placa mãe.

  8. Conector 8 pinos para alimentação da CPU.

  9. Conector SATA, para discos rígidos e SSDs.

  10. M.2 (SATA / NVMe), comumente usado para conectar SSDs.

Existem alguns formatos padronizados de placa mãe: ATX, mATX e ITX. Onde o ITX é para gabinetes menores, e possui menos conexões.

Memórias

A memória do computador é responsável por armazenar dados, mas também impacta na velocidade de utilização e troca de dados.

Elas são separadas entre voláteis e não voláteis.

Voláteis:

Não voláteis:

Memória ROM: Read Only Memory - Memória somente de leitura

Memória RAM: Random Access Memory - Memória de Acesso Aleatório.

Memória que salva os dados em endereços aleatórios, de forma não sequêncial.

Aula 3 - Armazenamento, Fonte, Placas Offboard e Gabinete

Para que o computador funcione é necessária a instalação de um sistema operacional e outros dados. Esses dados devem ser armazenados em algum dispositivo.

HD - Disco rígido

São discos mecânicos, com motores e cabeças de leitura, e a gravação ocorre de forma magnética.

Vantagens:

Desvantagens:

Vídeos de HDs em operação


Fonte: https://www.youtube.com/watch?v=ojGvHDjHPb4


Fonte: https://www.youtube.com/watch?v=3owqvmMf6No

Os HDs são compostos de partes pesadas em movimento, e datacenters antigos sofriam muito com vibrações. O vídeo abaixo mostra como até mesmo gritar com um HD pode gerar latência e problemas de performance. Aviso: volume alto.


Fonte: https://www.youtube.com/watch?v=tDacjrSCeq4

Os discos rígidos são conectados na placa mãe através de uma conexão SATA (Serial Advanced Technology Attachment). Um disco rígido vai aceitar duas conexões, uma para a transferência de dados (o conector menor) e uma para a energia (o conector maior).

Disco rígido aberto mostrando as conexões SATA de dados e energia

Disco rígido aberto mostrando as conexões SATA de dados e energia. Fonte: https://www.datalab247.com/articles/desktop-connectors.html

Discos rígidos mais antigos utilizavam conexão PATA (Parallel Advanced Technology Attachment), que podem ser identificados pelo cabo de transmissão de dados.

Disco rígido aberto mostrando as conexões PATA de dados e energia

Disco rígido aberto mostrando as conexões PATA de dados e energia. Fonte: https://www.datalab247.com/articles/desktop-connectors.html

Os conectores SATA existem em três versões:

Atualmente, os conectores SATA, enquanto ainda utilizados, estão em processo de substituição pelos conectores M.2.

Midias Óticas

Os mais comuns foram os CDs, DVDs e Blu-ray.

MídiaArmazenamentoVelocidade de Leitura *
CD700MB150KB/s
DVD4.7GB1.35 MB/s
Blu-Ray25GB4.5 MB/s

Flash (pendrives e cartões de memória)

São formas de armazenamento removíveis que utilizam memória flash. Os mais comuns são os pendrives e cartões SD e micro SD.

São divididos em classes em função da velocidade de escrita e leitura:

As classes UHS-I e UHS-II são popularmente utilizadas em cameras profissionais de alta resolução.

SSDs

Os SSDs (Solid State Drives) utilizam uma variante da memória flash para armazenar informações.

O processo de leitura e gravação, de natureza eletronica, apresenta velocidade na ordem de 10x maior que os discos rígidos tradicionais (HDs).

Existem alguns modelos de SSDs disponíveis no mercado, entre eles:

Os SSDs M.2 SATA se diferenciam, na aparência, dos SSDs M.2 NVMe devido ao padrão do conector.

O SSD M.2 SATA usa o padrão B+M Key, enquanto o SSD M.2 NVMe usa o padrão M Key.

Desenho de dois SSDs com diferentes encaixes.

Diferença entre conectores B+M e M. Fonte: https://www.partitionwizard.com/partitionmanager/m2-m-vs-bm.html

Os SSDs M.2 possuem tamanho tabelados, descritos no formato 22XXX, onde 22mm é a sua largura e os digitos finais definem seu comprimento em milímetros.

Comparação de tamanhos para SSDs M.2

Comparação de tamanhos para SSDs M.2. Fonte: https://www.reddit.com/r/pcmasterrace/comments/vo4njb/all_m2_ssd_size_guide/

Fonte

A fonte recebe energia da rede e converte para a tensão de funcionamento do computador, transformando a corrente alternada em contínua.

Existem padrões baseados no tamanho da fonte, como ATX, SFX e TFX (e múltiplas variações de cada umdeles), onde o TFX é o formato de fonte mais compacto entre os três.

fonte no formato ATX PS2 fonte no formato SFX fonte no formato TFX
Formatos de fonte. Da esquerda para a direita, ATX, SFX e TFX. Fonte: https://www.silverstonetek.com/en/tech-talk/10055

Elas podem ser classificadas em função do cabeamento, podendo ser:

  1. Não modulares: todos os cabos são presos à fonte, e devem ser mantidos mesmo quando não utilizados.

    Fonte não modular
    Fonte: https://www.cgdirector.com/full-vs-semi-vs-non-modular-power-supply/

  2. Semi modulares: alguns conectores, como o de 24 pinos, PCIe e CPU, já vem soldados na fonte, enquanto outros cabos, como SATA ou IDE, podem ser desconectados ou trocados.

    Fonte semi modular
    Fonte: https://www.cgdirector.com/full-vs-semi-vs-non-modular-power-supply/

  3. Full modulares: todos os cabos, incluindo o cabo da placa mãe, podem ser removidos.

    Fonte modular
    Fonte: https://www.cgdirector.com/full-vs-semi-vs-non-modular-power-supply/

A fonte deve fornecer conectores específicos, para que sejam alimentados os outros componentes do computador: SATA, PCI-e (6+2 pinos), CPU (4+4 pinos), Placa mãe (20 + 4 pinos), 12vHPWR (16 pinos), entre outros.

Cabos comuns conectados na fonte do computador. Da esquerda para a direita (cima para baixo): CPU 4+4 pinos, Placa mãe 20+4 pinos, cabo SATA, Cabo Floppy de 4 pinos para drive de disquete, Cabo PCI-e de 6+2 pinos, cabo para periféricos de 4 pinos.

Cabos comuns conectados na fonte do computador. Da esquerda para a direita (cima para baixo): CPU 4+4 pinos, Placa mãe 20+4 pinos, cabo SATA, Cabo Floppy de 4 pinos para drive de disquete, Cabo PCI-e de 6+2 pinos, cabo para periféricos de 4 pinos. Fonte: https://www.akshatblog.com/smps-psu-power-connectors-or-cables-explained-in-detail/

A escolha da fonte depende de alguns fatores, como:

Recomenda-se o uso de calculadores de fonte, como essa (coolerMaster) ou essa (outerVision).

Existe uma certificação, a 80 plus, que garante um valor mínimo de eficiência energética em função da carga.

Certificação20% Carga50% Carga100% Carga
80 Plus Standard80%80%80%
80 Plus Bronze82%85%82%
80 Plus Silver85%88%85%
80 Plus Gold87%90%87%
80 Plus Platinum90%92%89%
80 Plus Titanium92%94%90%
Brasão 80 plus Standard 115V Brasão 80 plus Bronze 115V Brasão 80 plus Silver 115V Brasão 80 plus Gold 115V Brasão 80 plus Platinum 115V Brasão 80 plus Titanium 115V
Certificados 80 PLUS para fontes 115V. Da esquerda para a direita, Standard, Bronze, Silver, Gold, Platinum, Titanium. Fonte: https://www.clearesult.com/80plus/

Um parâmetro para classificar a eficiência energética de uma fonte é a presença de um PFC (Power Factor Correction) passivo ou ativo.

FonteEficiênciaPerda de energia
Fonte sem PFC50 % a 65%35% a 50%
Fonte com PFC ativo80 % a 99%1% a 20%

Quanto maior a eficiência energética da fonte, menos energia é dissipada no seu funcionamento, nos mecanismos internos, ou retornada para a rede, garantindo maior fidelidade na alimentação dos componentes do computador.

Placas Offboard

Placas Offboard, ou expansoras, são integradas à placa mãe na busca por maior desempenho, mais recursos, ou para substituir componentes onboard com defeito.

A placa de vídeo (GPU) é um dos principais componentes offboard utilizados.

Algumas fabricantes de placas de vídeo são:

A placa de som também é um componente comumente utilizado de forma offboard.

As placas de rede, ligadas através do PCI-express, podem ter velocidades de 1Gbps até 10Gbps, ou até 2Gbps usando placas sem fio.

Outros componentes e placas utilizados em formato offboard são:

Gabinete

O gabinete, desktop ou case, é responsável por organizar os componentes de forma a otimizar o uso do espaço disponível, levando em conta fatores como o fluxo de ar entre os componentes.

Existem alguns tamanhos tabelados:

A escolha do gabinete deve levar em conta:

Aula 4 - Instalação de SO

Essa aula tem como foco bootar um computador com Windows 10, Ubuntu 23.10 e utilizar o software ProxMox.

O professor começa mostrando como criar um pen drive, usando o Ventoy, contendo um ISO do Windows 10, do Ubuntu 23.10 e o software Proxmox.

Depois, é feita a instalação em um computador com o SSD zerado, começando pelo windows, e depois o Ubuntu, optando pela opção de limpar todas as partições, ou seja, não é feito o dual boot.

Por fim, é feita a instalação do Proxmox, e criado a partir dele uma máquina virtual rodando windows.

Aula 5 - Virtualização

A virtualização é o uso do software para criar uma camada sobre o hardware que permite os elementos do computador sejam divididos em vários computadores virtuais, chamados de VMs.

Numa estrutura normal, temos o hardware, no qual instalamos o sistema operacional, que gerencia os aplicativos utilizados pelo usuário final.

Diagrama contendo um bloco para “hardware”, um bloco para “sistema operacional”, do qual saem dois blocos, “interface” e “kernel”, e um bloco final para “aplicativos”.

Tipo 1 ou Bare Metal

Um primeiro formato de virtualização (tipo 1 ou Bare Metal) envolve o uso de um software Hypervisor (como o Proxmox utilizado anteriormente), que vai gerenciar a divisão do hardware entre as diferentes máquinas virtuais.

Diagrama de blocos empilhados, mostrando uma sessão “Host” com dois blocos: Hardware e Hypervisor. Em cima, uma sessão “Guest” com duas VMs compostas de Sistema Operacional e Aplicativos.

Tipo 2 (Máquinas Virtuais - VMs)

A virtualização de tipo 2 é uma forma menos otimizada, utilizando o Hypervisor instalado em cima do Sistema Operacional do Host. Alguns softwares para esse formato são VMWare, Virtualbox, QEMU.

Diagrama de blocos empilhados, mostrando uma sessão “Host” com três blocos: Hardware, Sistema operacional e um terceiro bloco com o espaço dividido entre Hypervisor (70%) e Aplicativos (30%). Acima apenas do espaço do hypervisor, uma sessão “Guest” com duas VMs compostas de Sistema Operacional e Aplicativos.

A vantagem dessa configuração é que ela permite a utilização regular do SO do Host, não dedicando a máquina integralmente à virtualização.

Containers

Uma terceira forma de virtualização é através do uso de Containers.

Na virtualização por containers, vamos ter um único sistema operacional, instalado no host, no qual instalamos o software gerenciador dos containers, que vai compartilhar o kernel do sistema operacional entre os seus aplicativos.

Diagrama de blocos empilhados, mostrando apenas uma sessão “Host” com quatro níveis de blocos empilhados: Hardware,Sistema Operacional, Sistema Container, Aplicativos

Conclusão

Esse segundo módulo, bem mais extenso que o primeiro, é uma introdução muito gentil ao universo dos computadores.

Pra mim fez muito sentido, pois estou começando a mexer com hardware e sistemas operacionais, no processo de desmontar máquinas antigas e instalar linux em vários HDs.

O professor parece ser um entusiasta do hardware e trouxe vários exemplos de computadores montados, tanto reais quanto no PC Building Simulator, o que deixou as aulas mais dinâmicas.

A parte sobre os sistemas operacionais foi bem básica, cobrindo apenas a instalação do Windows 10 e Ubuntu, mas a discussão sobre virtualização tem vários insights e eu, que já uso Docker há um bom tempo, tirei bastante proveito em pesquisar mais a fundo.

Abraço!

#hackersdobem #português