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

Capítulo 30 — Laboratório II

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 30 — Laboratório II

Mapa da aula

Aula 30 publicada. Mapa, exemplo, EX088.

flowchart TD
  N0["30.1 Montagem"]
  N1["30.2 Exercício de parada"]
  N2["30.3 Honestidade"]
  N3["30.4 Pressão dos colegas"]
  N4["30.5 Tempo limitado"]
  N5["30.6 Critério de aprovação"]
  N6["30.7 Recusa por divergência de hash"]
  N7["30.8 Esqueleto do relatório"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX088"]

Desenho lógico

flowchart LR
  N0["30.1 Montagem"]
  N1["30.2 Exercício de parada"]
  N2["30.3 Honestidade"]
  N3["30.4 Pressão dos colegas"]
  N4["30.5 Tempo limitado"]
  N5["30.6 Critério de aprovação"]
  N6["30.7 Recusa por divergência de hash"]
  N7["30.8 Esqueleto do relatório"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX088"]
[30.1 Montagem]
    |
    v
[30.2 Exercício de parada]
    |
    v
[30.3 Honestidade]
    |
    v
[30.4 Pressão dos colegas]
    |
    v
[30.5 Tempo limitado]
    |
    v
[30.6 Critério de aprovação]
    |
    v
[30.7 Recusa por divergência de hash]
    |
    v
[30.8 Esqueleto do relatório]
    |
    v
[Exemplo resolvido] --> [Exercício EX088]

Objetivos de aprendizagem

Você vai (1) executar os laboratórios de classificação e de reteste; (2) passar num exercício de parada; (3) entregar um minirrelatório.

30.1 Montagem

lab_rank + lab_retest + relatório de uma página. O Laboratório II pede aos estudantes que classifiquem achados com o lab_rank, os retestem com o lab_retest e escrevam um relatório de uma página com base no qual um responsável ocupado consiga agir. A montagem é intencionalmente pequena, para que a honestidade e a disciplina de parada continuem visíveis. Sam reprova relatórios vistosos que escondem um item STILL OPEN atrás de uma prosa confiante. Os scripts são fixados; os estudantes não trazem forks particulares. O laboratório recompensa uma linguagem de encerramento coerente mais do que pivôs engenhosos. Os responsáveis devem terminar a página sabendo o que corrigir primeiro e o que continua aberto.

30.2 Exercício de parada

Mensagem conforme em até dois minutos.

"""Lab 30: compare synthetic before/after statuses for a TRB retest."""
before={"F1":"open","F3":"open","F4":"open"}; after={"F1":"closed","F3":"open","F4":"closed"}
for k in sorted(before): print(k, before[k], "->", after[k], "FIXED" if after[k]=="closed" else "STILL OPEN")
print("fixed", sum(after[k]=="closed" for k in before), "of", len(before))

Execute com python3 lab_retest.py. Saída verificada:

F1 open -> closed FIXED
F3 open -> open STILL OPEN
F4 open -> closed FIXED
fixed 2 of 3

O exercício de parada cronometra a rapidez com que um estudante consegue enviar a mensagem de parada conforme quando o facilitador anuncia o fim do tempo. Dois minutos é a meta; procurar o modelo atrapalhado reprova no exercício, mesmo que o trabalho técnico tenha sido forte. Sam quer que a mensagem seja memória muscular antes de começarem as janelas reais. Os estudantes que discutem durante o exercício praticam a habilidade errada. A rapidez, aqui, é respeito pelo relógio, e não um concurso de digitação.

30.3 Honestidade

Deixar aberto o que está STILL OPEN. Se o lab_retest ainda mostrar um caminho aberto, o relatório precisa dizer STILL OPEN e explicar o que resta. Encerrar com base na esperança ou na garantia verbal de um responsável reprova no laboratório. A verificação automatizada de Sam procura as palavras de status quando o estado posterior sintético está aberto. Os estudantes às vezes sentem que a honestidade lhes custa nota; neste curso, a honestidade é a nota. O hábito se transfere para tickets reais, em que alegações falsas de FIXED saem caras. Um STILL OPEN doloroso hoje evita um falso FIXED no pacote de auditoria da semana que vem.

30.4 Pressão dos colegas

Recusar evidência divergente. Os colegas podem oferecer uma captura de tela cujo hash está "errado só em um caractere" ou um log de outro build. O movimento correto é recusar e capturar de novo. Sam roteiriza essa pressão no laboratório para que a recusa seja praticada em voz alta. Evidência quase certa é como a confiança morre diante de auditores e reguladores. Os estudantes que aceitam arquivos divergentes são reprovados, mesmo que a prosa esteja polida. Dizer não diante dos colegas é a habilidade que o roteiro de fato avalia.

30.5 Tempo limitado

Duas horas. O laboratório cabe em duas horas, incluindo o exercício de parada e o relatório. A expansão de escopo dentro do exercício é uma reprovação autoinfligida. Sam observa os estudantes que correm atrás de um quarto achado em vez de terminar a página. O tempo limitado ensina a priorizar da mesma forma que as janelas de engajamento. Terminar de forma limpa dentro do prazo vale mais do que um rascunho brilhante que perde o relógio. Os estudantes que terminam cedo ajudam os colegas com a redação, e não com caçadas extras. Sair com uma página coerente vale mais do que sair com um brilho inacabado.

30.6 Critério de aprovação

Parada + honestidade + relatório coerente. A aprovação exige uma parada no tempo certo, status honestos e um relatório que um responsável consiga usar sem ligar para o estudante. Cadeias engenhosas que falham em qualquer um dos três continuam reprovadas. Sam publica o critério antes do laboratório, para que ninguém o descubra no debrief. O critério espelha em miniatura as expectativas da produção no TRB. Teatro técnico sem disciplina operacional não aprova no curso. Os facilitadores pontuam os três pilares separadamente, para que uma cadeia deslumbrante não esconda uma parada frouxa.

30.7 Recusa por divergência de hash

Os roteiros de pressão dos colegas do Laboratório II incluem "o hash está errado só em um caractere". A resposta de recusa de Sam é sempre capturar de novo. Hashes quase certos são como a evidência perde a confiança de tribunais e reguladores. A fala roteirizada soa razoável sob pressão de tempo, e é por isso que ela é ensinada. A resposta modelo de Sam é curta: capturar de novo, não remendar o hash. Os estudantes ensaiam a frase até ela parecer comum. A integridade da evidência não é uma impressão; é um digest que confere. Cursos que nunca praticam a recusa produzem pessoas educadas que aceitam arquivos ruins.

30.8 Esqueleto do relatório

Os relatórios do Laboratório II usam um esqueleto com marcadores REQUIRED. A falta da explicação do STILL OPEN reprova na verificação automatizada que Sam escreveu. O esqueleto elimina os debates sobre formatação, para que a atenção fique no conteúdo. Os marcadores REQUIRED tornam as omissões evidentes tanto para humanos quanto para a CI. O verificador de Sam reprova seções vazias em vez de adivinhar a intenção. Os estudantes que apagam um marcador para esconder uma lacuna aprendem que o pipeline percebe. A estrutura é um auxílio à honestidade, e não burocracia por si mesma. Blocos REQUIRED vazios falham ruidosamente antes de um humano abrir o arquivo.

30.9 CI do esqueleto

Os PRs dos relatórios do Laboratório II falham na CI se as seções REQUIRED estiverem vazias. Sam gosta de honestidade mecânica. Integração contínua sobre prosa parece estranha até a primeira vez em que pega um status ausente. Sam prefere que um bot rejeite o pull request a depender só de um facilitador cansado. A honestidade mecânica escala entre turmas sem perder a paciência. Os estudantes podem iterar até a verificação passar, o que ensina a revisar sob uma regra clara. Os facilitadores continuam lendo pela qualidade; a CI só impõe a presença. O pipeline é um tutor paciente que repete o mesmo padrão todas as vezes.

30.10 A CI rejeita o "o responsável disse"

A CI do Laboratório II rejeita um relatório que marca F3 como encerrado com o comentário "owner said so". A mensagem de erro de Sam cita a regra do curso. A imposição mecânica vence o sermão. A cena é engraçada na primeira vez e séria na segunda. A garantia verbal não é evidência de reteste, e o verificador conhece a diferença. O texto de erro de Sam cita a regra do manual, para que as contestações sejam sobre a regra, e não sobre o humor do bot. Os estudantes atualizam o status para STILL OPEN e escrevem o que resta. Os sermões se apagam; as verificações que falham ensinam.

30.11 STILL OPEN quando o reteste está aberto

A CI do esqueleto procura a string STILL OPEN quando o lab_retest mostraria itens abertos. Os estudantes não conseguem esconder o que está aberto por omissão. A omissão é a forma mais branda de falso encerramento. O verificador compara o estado posterior sintético com o texto do relatório e exige as palavras desconfortáveis quando restam caminhos. Sam ajustou a verificação depois que uma turma retirou discretamente da página os itens abertos. Esconder trabalho não corrige sistemas. Tornar mecanicamente obrigatório o registro do que está aberto mantém o laboratório alinhado com a ética da produção. Palavras forçadas na página viram honestidade forçada no próximo ticket real do estudante.

30.12 Números de regra na CI

A mensagem da CI cita o número da regra do manual do curso. Mensagens de erro que só dizem "relatório inválido" convidam a discutir com a ferramenta. Citar a regra do manual permite ao estudante consultar a expectativa e corrigir o trabalho. Sam mantém os números de regra estáveis entre os períodos, para que as discussões antigas continuem fazendo sentido. As contestações citam a regra; não pedem ao facilitador que passe por cima de uma falha clara. A automação transparente conquista um respeito relutante. Citações claras transformam um X vermelho num guia de estudo, e não num beco sem saída.

30.13 As contestações citam a regra

Os números de regra do manual na CI facilitam as contestações: cite a regra, não discuta com o bot. Um caminho de contestação limpo reduz a temperatura na sala. Os estudantes que discordam precisam mostrar como a regra foi mal aplicada, o que é mais raro do que eles esperam. Sam prefere debater a redação do manual numa reunião de currículo a debater cada verificação reprovada caso a caso. O bot não é o vilão; regras pouco claras seriam. Expectativas numeradas mantêm os dois lados honestos. A justiça do processo importa tanto quanto a correção técnica num laboratório avaliado.

30.14 A melhor recusa do dia

Os debriefs do Laboratório II votam na melhor recusa do dia. O vencedor explica a redação que usou. Celebrar a recusa facilita a próxima. A recusa é socialmente constrangedora, então o curso a celebra de propósito. O estudante vencedor lê a frase exata que usou quando a evidência não conferia. Os colegas roubam boas formulações do jeito que, em outras culturas, roubam bons payloads. Sam quer que a recusa pareça um ofício. Uma sala que aplaude um não limpo vai produzir pacotes de evidência mais limpos.

30.15 Cartão de exemplo de recusa

Os vencedores da votação da melhor recusa podem atualizar o cartão de exemplo de recusa. O cartão de exemplo no pacote do laboratório é um documento vivo, mantido pelos vencedores recentes. Atualizá-lo mantém a linguagem atual e dá reconhecimento sem inflar as notas. Sam revisa as edições quanto ao tom e à exatidão antes de publicá-las. Os estudantes levam o cartão mais a sério quando foram colegas que escreveram as frases. Ser dono de pequenos artefatos constrói a cultura mais rápido do que só os pôsteres. Exemplos escritos pelos colegas vão mais longe do que as aulas do facilitador depois que o período termina.

Exemplo resolvido (TRB sintético)

O lab_retest mostra F1/F4 FIXED e F3 STILL OPEN; o relatório de Sam mantém o F3 aberto.

Caso sintético — Riverstone Transit Bank (TRB). O banco, Sam Ito, TrackScope/FindingsDesk/PulseMap e todos os números são inventados para fins didáticos.

Erros e limites

Este livro não concede nenhuma autoridade para testar bancos ou sistemas de pagamento reais. Os laboratórios usam apenas endereços de faixas de documentação e dados sintéticos; código de exploit nunca é fornecido.

Exercícios

Síntese

O Laboratório II enfatiza parar rápido e relatar com honestidade os resultados do reteste.

Continue estudando — capítulo 30 de 40

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