◇ OpenCyber Academy
Graduação · Capítulo 3 · Português

Capítulo 3 — Programação I

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 3 — Programação I

Mapa da aula

Aula 03 publicada. Mapa, exemplo, EX007.

flowchart TD
  N0["3.1 Por que analistas programam"]
  N1["3.2 Tipos para inteligência"]
  N2["3.3 Classificar valores"]
  N3["3.4 Falha explícita"]
  N4["3.5 Nenhuma coleta oculta"]
  N5["Código legível"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX007"]

Desenho lógico

flowchart LR
  N0["3.1 Por que analistas programam"]
  N1["3.2 Tipos para inteligência"]
  N2["3.3 Classificar valores"]
  N3["3.4 Falha explícita"]
  N4["3.5 Nenhuma coleta oculta"]
  N5["Código legível"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX007"]
[3.1 Por que analistas programam]
    |
    v
[3.2 Tipos para inteligência]
    |
    v
[3.3 Classificar valores]
    |
    v
[3.4 Falha explícita]
    |
    v
[3.5 Nenhuma coleta oculta]
    |
    v
[Código legível]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX007]

Objetivos de aprendizagem

Você vai (1) escrever funções em Python que limpam e classificam indicadores; (2) usar strings, listas, conjuntos e dicionários; (3) tratar entradas ruins de forma explícita; (4) manter os scripts livres de coleta pela rede.

3.1 Por que analistas programam

Os analistas recebem indicadores em e-mails, PDFs e planilhas. Scripts pequenos extraem, limpam e comparam esses indicadores mais depressa e com mais precisão do que copiar à mão. Aqui, programar é uma ferramenta de leitura e conferência, não de coleta. Amara escreve seu primeiro script para ler indicadores de uma planilha compartilhada pelo HSSC, remover duplicatas e compará-los com uma lista exportada do gateway de e-mail. Feita à mão, a comparação levava uma hora e deixou passar duas correspondências; o script leva segundos e dá a mesma resposta toda vez que roda.

3.2 Tipos para inteligência

Uma string guarda um indicador. Uma lista mantém a ordem, como eventos no tempo. Um conjunto remove duplicatas e permite a interseção — quais indicadores aparecem tanto nos nossos logs quanto no feed? Um dicionário associa um indicador a seus metadados: fonte, TLP, primeira observação. Escolher o tipo certo torna a pergunta fácil de responder. O script de Amara guarda os indicadores do feed em um conjunto, então a sobreposição com os logs do HCHT é uma única interseção, e mantém os metadados em um dicionário, então cada correspondência vem com sua fonte e seu rótulo TLP. Sem o rótulo, ela não saberia quais correspondências podem ser compartilhadas com outras equipes.

3.3 Classificar valores

Uma função simples decide se uma string parece um endereço IPv4, um domínio ou um hash. O módulo ipaddress da biblioteca padrão valida endereços; verificações de tamanho e de caracteres distinguem hashes SHA-256 (64 caracteres hexadecimais) de outras strings. Amara testa a função com exemplos de cada tipo e com casos traiçoeiros, como um domínio que contém dígitos ou um hash com letras maiúsculas. Um valor mal classificado poderia mandar um domínio para uma lista de bloqueio de endereços, onde não faria nada, enquanto a analista acreditava que ele estava bloqueado.

3.4 Falha explícita

Se um valor não se encaixa em nenhum tipo, retorne "unknown" e guarde-o para revisão. Adivinhar cria indicadores falsos que podem depois bloquear serviços legítimos. O script de Amara grava os valores desconhecidos em um arquivo separado, com a linha de onde vieram, para que ela possa conferi-los à mão. Muitos se revelam indicadores desarmados, como domínios com colchetes em volta dos pontos, que o script agora trata de forma explícita. A falha explícita transformou um erro silencioso em uma lista de melhorias e manteve indicadores falsos fora das listas de bloqueio.

3.5 Nenhuma coleta oculta

Os scripts deste curso leem apenas arquivos locais. Código que baixa páginas web, consulta serviços externos ou entra em plataformas está fora deste capítulo e exige termos, permissão e supervisão. Amara faz duas perguntas sobre o próprio trabalho: de onde vem cada entrada, e ela tinha permissão para usá-la? Quando uma fonte publica apenas uma página web, ela pede à mesa do HSSC um arquivo exportado em vez de acrescentar uma etapa de download ao script. Qualquer etapa de coleta é uma decisão separada de sua supervisora, com aprovação e registro próprios.

Código legível

Analistas compartilham scripts com colegas que precisam confiar na saída. Nomes de função claros, docstrings curtas e um pequeno teste com entradas conhecidas tornam um script revisável. Um teste que alimenta um hash válido, um hash truncado e um domínio mostra aos revisores exatamente como os casos de borda se comportam antes de o script tocar dados reais.

Exemplo resolvido

Amara recebe 40 valores colados de um PDF. Seu classificador rotula 18 domínios, 12 endereços IPv4, 7 hashes SHA-256 e 3 desconhecidos — dois eram hashes truncados e um, um domínio com um colchete perdido do desarmamento. Ela corrige o colchete, devolve os hashes truncados ao remetente e armazena 38.

Caso sintético. Os valores do PDF são inventados.

Erros e limites

Verificações de padrão confirmam a forma, não a malícia. Um domínio de aparência válida ainda pode ser um erro de digitação.

Exercícios

Síntese

Use o tipo de dado certo, valide a forma, falhe de forma explícita e mantenha os scripts locais.

Continue estudando — capítulo 03 de 40

← Capítulo 02 (rascunho) · Índice de capítulos do curso · Capítulo 04 (rascunho) →