# 4. Importacao e Bibliotecas

## Introdução

O grande poder do Python para Pentest reside no seu vasto ecossistema de bibliotecas (módulos). Saber como importar e gerenciar essas dependências é fundamental.

## Importando Módulos

Existem várias formas de importar código no Python:

### 1. Importação Simples

```python
import os
os.system("ls")
```

### 2. Importação Específica

```python
from subprocess import check_output
output = check_output(["whoami"])
```

### 3. Alias (Apelido)

```python
import pandas as pd
import numpy as np
```

## Gerenciamento de Pacotes (Pip)

O `pip` é o instalador de pacotes padrão do Python.

```bash
# Instalar uma biblioteca
pip install requests

# Gerar arquivo de dependências
pip freeze > requirements.txt

# Instalar a partir de um arquivo
pip install -r requirements.txt
```

## Bibliotecas Nativas Essenciais (Pentest)

| Biblioteca       | Função                                                                |
| ---------------- | --------------------------------------------------------------------- |
| **`os` / `sys`** | Interação com o sistema operacional e argumentos de linha de comando. |
| **`socket`**     | Comunicação de rede de baixo nível (TCP/UDP).                         |
| **`subprocess`** | Execução de comandos do sistema.                                      |
| **`re`**         | Expressões regulares para extração de dados (ex: IPs em logs).        |
| **`json`**       | Manipulação de dados no formato JSON.                                 |
| **`base64`**     | Codificação e decodificação Base64.                                   |

## Bibliotecas de Terceiros Famosas

### 1. Requests

A biblioteca padrão *de facto* para requisições HTTP.

```python
import requests
r = requests.get("https://api.github.com/events")
print(r.status_code)
```

### 2. Scapy

Poderosa ferramenta de manipulação de pacotes de rede.

```python
from scapy.all import IP, ICMP, sr1
packet = IP(dst="8.8.8.8")/ICMP()
response = sr1(packet)
```

### 3. BeautifulSoup (bs4)

Para parsing de HTML e Web Scraping.

## Organização de Projetos

Ao criar suas próprias ferramentas, você pode criar pacotes criando uma pasta com um arquivo `__init__.py`.

```
meu_exploit/
├── __init__.py
├── scanner.py
└── payloads/
    ├── __init__.py
    └── reverse_shell.py
```

## Boas Práticas

1. **Importações no Topo:** Sempre coloque os `import` no início do arquivo.
2. **Standard Library Primeiro:** Importe bibliotecas nativas, depois as de terceiros, e por fim seus próprios módulos.
3. **Use Ambientes Virtuais:** Nunca instale pacotes de terceiros diretamente no Python do sistema (especialmente no Linux/macOS) para evitar conflitos.

{% hint style="warning" %}
Ao clonar ferramentas de exploit do GitHub, sempre revise o `requirements.txt` e o código de importação para garantir que não há backdoors ou dependências maliciosas.
{% endhint %}


---

# 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/4.-importacao-e-bibliotecas.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.
