# 0. Pratique

Este arquivo contém exercícios baseados no Roadmap de Programação em Python para você consolidar seu conhecimento, com um foco especial em automação e segurança.

***

## 🛠 Nível 1: Fundamentos (Básico)

### Exercício 1.1: Manipulação de Dados de Alvo

Crie uma variável para armazenar um endereço IP e outra para uma porta. Converta a porta para string ao imprimir uma mensagem que diga `"Escaneando [IP] na porta [Porta]"`.

* **Objetivo:** Praticar variáveis, tipos de dados e concatenação/f-strings.

### Exercício 1.2: Tomada de Decisão (Scanner Simples)

Crie um script que receba um `status_code` HTTP.

* Se for 200, imprima `"Sucesso"`.
* Se for 403, imprima `"Acesso Negado"`.
* Se for 404, imprima `"Página Não Encontrada"`.
* **Objetivo:** Praticar `if-elif-else`.

### Exercício 1.3: Automação de Wordlist

Dada uma lista de nomes `["admin", "user", "guest"]`, use um loop `for` para imprimir cada nome com a extensão `.txt` no final.

* **Objetivo:** Praticar loops `for` e manipulação de strings.

***

## 🛠 Nível 2: Funções e Arquivos

### Exercício 2.1: Gerador de Payloads

Crie uma função chamada `generate_payload` que aceite um tamanho (ex: `100`) e um caractere (ex: `"A"`). A função deve retornar o caractere repetido pelo tamanho especificado.

* **Objetivo:** Praticar funções (`def`) e argumentos.

### Exercício 2.2: Leitor de Log Simples

Crie um script que abra um arquivo chamado `hosts.txt` (crie um manualmente com alguns IPs), leia todas as linhas e imprima apenas os IPs que começam com `"192."`.

* **Objetivo:** Praticar `open()`, `readlines()` e métodos de string.

***

## 🛠 Nível 3: Intermediário (POO e Erros)

### Exercício 3.1: Classe de Scanner

Crie uma classe `Target`. Ela deve ter:

* Atributos: `ip` e `servicos` (uma lista).
* Método: `add_service(service)`, que adiciona um serviço à lista.
* Método: `__str__`, que retorna uma string bonita com os dados do alvo.
* **Objetivo:** Praticar Programação Orientada a Objetos.

### Exercício 3.2: Conexão Segura (Tratamento de Erros)

Tente converter uma entrada do usuário para inteiro. Se o usuário digitar letras, capture o erro e imprima uma mensagem amigável `"Por favor, digite apenas números para a porta"`.

* **Objetivo:** Praticar `try-except`.

***

## 🚀 Desafios Finais (Projetos do Roadmap)

1. **Calculadora CLI:** Crie um script que realize as 4 operações básicas, aceitando entrada do usuário.
2. **Verificador de Disponibilidade:** Use a biblioteca `requests` (se instalada) para verificar se uma lista de URLs está online (retornando status 200).

***

> Tente resolver sem olhar a documentação primeiro. O erro é o melhor professor no Python!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/conceitos/programacao-e-linguagens/python/0.-pratique.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
