
Ferramenta CLI para inspecionar e gerenciar serviços escutando em portas localhost
O Sonar mostra tudo que está escutando em localhost e organiza em ordem: cada porta
pertence a um grupo — normalmente o repositório de onde foi iniciado — e
dentro desse grupo a um serviço nomeado. Inicie seus servidores de desenvolvimento com
sonar start e o projeto inteiro se torna uma coisa só que você pode listar como uma árvore,
aguardar, acompanhar (tail) e parar com um único comando. Containers Docker, projetos
Compose e processos iniciados manualmente também são detectados, sem qualquer
configuração.```
$ sonar list --tree
my-app (3 ports, running) ~/code/my-app
├─ 5432 db postgres:17 http://localhost:5432
├─ 5173 frontend vite (v5.4) http://localhost:5173
└─ 8000 api uvicorn app:app http://localhost:8000
ungrouped (1 port)
└─ 3000 next-server (v16.1.6) http://localhost:3000
## Instalação
### Homebrew (macOS / Linux)```sh
brew install raskrebs/sonar/sonar
Homebrew 6 recusa fórmulas de taps de terceiros até que você confie no tap uma vez
(Error: Refusing to load formula raskrebs/sonar/sonar from untrusted tap):```sh
brew trust raskrebs/sonar
### Script de instalação```sh
curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | bash
Baixa o binário mais recente para ~/.local/bin e o adiciona ao seu PATH, se necessário. Reinicie o terminal ou execute source ~/.zshrc.
No Windows (PowerShell):```powershell irm https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.ps1 | iex
Custom install location:```sh
curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | SONAR_INSTALL_DIR=/usr/local/bin bash
Instalar uma versão específica:```sh curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | SONAR_VERSION=vX.Y.Z bash
Aqui está a tradução para português do conteúdo fornecido:
---
**Nota:** O texto de entrada está vazio. Não há conteúdo para traduzir.```powershell
$env:SONAR_VERSION="vX.Y.Z"; irm https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.ps1 | iex
go install github.com/raskrebs/sonar@latest
Completions de shell (preenchimento automático de números de porta):```sh
sonar completion zsh > "${fpath[1]}/_sonar" # zsh
sonar completion bash > /etc/bash_completion.d/sonar # bash
sonar completion fish | source # fish
Adicione o prefixo sonar start aos comandos no seu dev.sh:```sh
#!/usr/bin/env bash
sonar start --name db --port 5432 -- docker compose up db &
sonar start --name api --port 8000 -- uv run uvicorn app:app &
sonar start --name frontend --port 5173 -- npm run dev &
wait
O nome do grupo vem do repositório, portanto nada mais precisa ser configurado.
Em outro terminal:```sh
sonar list --tree
Aqui está a tradução para português do conteúdo fornecido:
Nota: O texto de entrada está vazio. Não há conteúdo para traduzir.``` my-app (3 ports, running) ~/code/my-app ├─ 5432 db postgres:17 http://localhost:5432 ├─ 5173 frontend vite (v5.4) http://localhost:5173 └─ 8000 api uvicorn app:app http://localhost:8000
E quando terminares, para todo o projeto — servidores, watchers e workers:```sh
sonar kill -g my-app
Exemplos abaixo marcados com # check são executados contra uma nova compilação por
scripts/readme-check.sh em cada execução de CI.
sonar list sonar list --tree sonar list --group my-app sonar list --json
Aqui está a tradução do conteúdo fornecido:
---
**Nota:** O conteúdo do chunk 33 não foi fornecido no prompt. Para prosseguir, por favor, forneça o texto original do chunk 33 que precisa ser traduzido.```sh
sonar list --stats # CPU, memory, threads, uptime, state
sonar list --health # HTTP health checks
sonar list --filter docker # only Docker ports
sonar list --sort name # port | pid | name | type
sonar list -a # include desktop apps
sonar list -c port,process,group,cpu,mem
sonar list --host user@server # scan a remote machine over SSH
As colunas padrão são port, process, group, container, image,
containerport, url, onde process mostra o nome que você deu à porta
(sonar rename), depois o nome do serviço e, em seguida, o que foi detectado.
Colunas disponíveis: port, process, pid, type, url, group, cpu,
mem, threads, uptime, state, connections, health, latency,
container, image, containerport, compose, project, user, bind,
ip.
Aplicativos de desktop e serviços do sistema que por acaso estejam escutando — Figma, Discord,
Spotify, ControlCenter, pacotes .app do macOS, daemons do /System/Library/ — ficam
ocultos, a menos que você passe -a.
sonar startExecute um comando como um serviço nomeado em um grupo:```sh sonar start -- npm run dev sonar start --group my-app --name frontend -- npm run dev sonar start --port 5173 -- npm run dev # expected port, before it binds sonar start --detach --name api -- uv run uvicorn app:app sonar start --list
Nada precisa ser passado:
- **Group** — `--group`, senão o `name` no `.sonar.yaml` mais próximo, senão o
nome do diretório da raiz do git (um worktree vira `repo@worktree`), senão o nome
do diretório atual.
- **Name** — `--name`, senão o serviço do `.sonar.yaml` cujo `cmd` corresponde, senão
inferido do comando (`npm run dev` → `dev`, `uv run api` → `api`,
`python -m uvicorn` → `uvicorn`, `./dev.sh` → `dev.sh`).
- **Port** — `--port` é uma dica, não um vínculo: a execução aparece como `starting`
até a porta estar realmente escutando, e o daemon a usa para associar o
processo à porta.
O processo filho herda stdin, stdout, stderr, cwd e ambiente, além de
`SONAR_GROUP`, `SONAR_NAME` e `SONAR_RUN_ID`. Ele recebe seu próprio grupo de
processos, então `sonar kill` derruba toda a árvore — um servidor de desenvolvimento com seus watchers e
workers. Ctrl+C é encaminhado, e o sonar sai com o código de saída do processo filho.
`--detach` retorna imediatamente e grava a saída em
`~/.config/sonar/logs/<group>/<name>.log`. `--list` mostra o que o sonar iniciou
(`--json` para o formato legível por máquina):```sh
sonar start --list
sonar start --detach --name demo --port 8123 -- sleep 5
sonar start --list --json
# check
.sonar.yamlUm projeto nomeia a si mesmo e seus serviços em um .sonar.yaml na raiz do
repositório. É opcional — o sonar agrupa pela raiz do git sem ele — e é feito
para ser commitado:```yaml
name: my-app
services:
- `name` — o nome do grupo. Sem barras, sem espaços em branco.
- `cmd`, `cwd`, `port` — como o `sonar up` inicia o serviço. `cwd` é relativo ao
arquivo e não pode escapar do seu diretório.
- `health` — um caminho HTTP que o daemon consulta enquanto o serviço está ativo, para que um
serviço possa estar *em execução* mas ainda não *saudável*. Ele reporta `ok`, `fail` ou
`unknown`, com o motivo da falha.
- `description`, `icon`, `color` — metadados de formato livre para o aplicativo de desktop; o sonar
nunca os infere.
- `depends_on` — ordem de inicialização. Nomear um serviço que não está no arquivo, ou um
ciclo, é um erro; um arquivo inválido é reportado uma vez e nunca interrompe uma verificação.
`.sonar.yml` é lido se é assim que você o escreve; `sonar init` sempre grava
`.sonar.yaml`. O daemon monitora os projetos que conhece e capta
edições no arquivo sem reinicialização. Cada edição que o sonar faz — a partir do aplicativo
de desktop, de `sonar groups add`, `rename` e `remove`, de um agente — passa
pelo daemon, que re-renderiza o arquivo a partir da sua própria árvore de sintaxe, então
comentários, ordem de chaves e layout sobrevivem a uma edição que adiciona, renomeia ou remove um
serviço, assim como sobrevivem a uma alteração de metadados. A única exceção: espaços extras
alinhando um comentário final (`cmd: x # nota`) são reduzidos a um, porque a
biblioteca YAML mantém o comentário, mas não a sua coluna.
### `sonar up````sh
sonar up # the .sonar.yaml at or above this directory
sonar up my-app # a group by name
sonar up --only api,frontend
sonar up --json
Inicia todos os serviços que o .sonar.yaml do grupo declara, na ordem de depends_on:
um serviço aguarda as portas que suas dependências declaram antes de ser iniciado, e
um que já esteja em escuta é ignorado. Cada um é executado de forma destacada no seu próprio grupo de processos,
com sua saída em ~/.config/sonar/logs/<group>/<service>.log.```
✓ db pid 41022 ~/.config/sonar/logs/my-app/db.log
2 started, 1 already running
Um serviço que falha ao iniciar é reportado na sua própria linha e faz o comando
sair com código não-zero, independentemente do que mais tenha surgido. Pare todos novamente com
`sonar kill -g my-app`. O `sonar up` precisa do daemon e o inicia se ele não estiver
já em execução.
### `sonar groups` e `sonar init````sh
sonar init --dry-run
sonar init --service api:8000:/healthz --service web:5173
sonar groups
sonar groups --json
group=$(basename "$PWD") # sonar init names the group after the directory
sonar groups add "$group" worker --port 9000 --cmd 'uv run worker' --depends-on api
sonar groups rename "$group" worker jobs
sonar groups remove "$group" jobs
# check
sonar groups lista todos os grupos que o sonar consegue ver e de onde cada nome veio:
manual (você o fixou com sonar assign), start (uma execução de sonar start),
file (um .sonar.yaml) ou auto (a raiz do git ou o projeto do Compose).
sonar groups <name> mostra as portas e serviços de um grupo, e os serviços
que estão declarados mas não estão em execução.
sonar init escreve um .sonar.yaml na raiz do git a partir do que está escutando
agora — aplicativos de desktop e portas abaixo de 1024 ficam de fora. Ele se recusa a sobrescrever
sem --force, e --dry-run imprime o arquivo em vez de escrevê-lo.
--merge anexa a um arquivo que já existe em vez de recusar, e
--service name:port[:health] — repetível — escreve os serviços que você nomeia
em vez dos que ele encontrou, mantendo o comando que ele adivinhou para uma porta que você
manteve. --force e --merge são mutuamente exclusivos.
sonar groups add <group> <name> --port N anexa um serviço ao .sonar.yaml
desse grupo, com --cmd, --cwd, --health, --description, --icon,
--color e um --depends-on repetível para o restante. sonar groups rename <group> <old> <new> renomeia um em todos os lugares do arquivo, incluindo
referências depends_on, e sonar groups remove <group> <name> exclui um e
o remove de todo depends_on que o nomeava. Todos os três recusam uma edição que
deixaria o arquivo inválido — um nome duplicado, uma porta que outro serviço já
reivindica, um serviço que não existe — e nenhum deles escreve um byte até que
toda a edição seja conhecida como válida.
O daemon faz a escrita, e é por isso que o arquivo volta com seus comentários
e a ordem das chaves intactos, quer a edição venha da CLI, do aplicativo de desktop ou de um
agente. sonar groups add, rename e remove precisam do daemon e o iniciam se
ele já não estiver em execução; os três nomes são subcomandos, então um grupo realmente
chamado add é lido com sonar groups --json.
sonar kill 3000 # SIGTERM, then SIGKILL after 5s sonar kill 3000 5432 -f # SIGKILL both straight away sonar kill 3000 --tree # the listener and everything below it sonar kill --pid 12345 --tree # by process id sonar kill -g my-app # a whole group, confirms unless -y sonar kill --all --filter docker -y # every container publishing a port sonar kill --all --project my-app # one Compose project sonar kill 3000 --ip 127.0.0.1 # one bind address of several sonar kill --all --dry-run --json # the plan for the whole machine
`--dry-run` aceita qualquer seletor e não altera nada: ele imprime as ações que o
kill executaria, primeiro os filhos, e deixa tudo em execução. De ponta a ponta,
contra um listener de sua preferência:```sh
sonar start --detach --name plan --port 8231 -- sonar map 3000 8231
sonar wait 8231
sonar kill 8231 --dry-run --json # the plan; the mapping keeps running
sonar kill 8231 -y # and now for real
# check
Um argumento posicional é lido como uma porta e, apenas como um pid, quando nada está
a escutar nesse número. -g corresponde ao grupo resolvido, a uma etiqueta de execução legada ou
id, e ao projeto Compose, sem diferenciar maiúsculas de minúsculas.
Um processo que ignora SIGTERM recebe SIGKILL se a porta ainda estiver a escutar
após --grace (5s); --no-escalate desativa isso. Os processos filhos são sinalizados
antes dos pais, para que uma árvore termine em ordem. Os contentores Docker são parados
com docker stop e nunca são sinalizados. Um ouvinte iniciado por sonar start é sempre
parado juntamente com o seu grupo de processos.
--json imprime uma linha por processo:
{port, bind_address, pid, name, method, ok, error}, onde method é
sigterm, sigkill, docker_stop, map_stop ou none. Uma varredura vazia termina
com 0; um grupo desconhecido termina com 1.
sonar map 6873 3002 # also serve the service on 6873 from port 3002
Executa um proxy TCP em primeiro plano até que você o interrompa. `sonar kill` reporta um
mapeamento que interrompeu como `map_stop`.
### `sonar rename`, `sonar assign`, `sonar history````sh
sonar rename 3000 storefront # a name of your own, survives restarts
sonar rename 3000 --clear
sonar assign 3000 my-app # pin a port to a group by hand
sonar assign 3000 --clear
sonar history # everything that came up, went down, restarted
sonar history 3000 --since 24h --limit 20
Aqui está a tradução para pt:
## Instalação
### Requisitos
- Python 3.8 ou superior
- pip (gerenciador de pacotes do Python)
### Passos de Instalação
1. Clone o repositório:
```bash
git clone https://github.com/example/repo.git
cd repo
Instale as dependências:
pip install -r requirements.txt
Execute a ferramenta:
python main.py --help
Para executar uma verificação básica:
python main.py scan --target example.com
Para usar um arquivo de configuração personalizado:
python main.py scan --config config.yaml
| Opção | Descrição |
|---|---|
--verbose | Exibe saída detalhada durante a execução |
--output | Especifica o arquivo de saída para os resultados |
--threads | Define o número de threads a serem usadas |
O arquivo de configuração usa o formato YAML. Aqui está um exemplo:
targets:
- example.com
- example.org
options:
timeout: 30
retries: 3
Erro: "Permission denied"
sudo se estiver em um sistema Linux.Erro: "Module not found"
pip install -r requirements.txt novamente.Aceitamos contribuições da comunidade. Para contribuir:
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.
sonar history --since 1h
sonar history --json
# check
```
Nomes e pinos são armazenados no banco de dados do sonar, indexados pela informação mais específica
conhecida sobre a porta: a execução (`run:<grupo>/<nome>`), o contêiner
(`docker:<projeto>/<serviço>`), o diretório de trabalho e o número da porta
por último. Um servidor de desenvolvimento renomeado mantém seu nome entre reinicializações; um nome fixado à
porta 3000 sozinho se aplica a qualquer coisa que responda ali. Esses três comandos precisam
do daemon e o iniciam se ele não estiver em execução.
### Lendo uma porta```sh
sonar info 3000 # command, user, bind, stats, health
sonar logs 3000 # tail; docker logs for containers
sonar wait 5432 3000 --timeout 60s # block until ready
sonar wait 5432 --http=/health # wait for HTTP 200-399, not just TCP
sonar next 3000 # first free port from 3000
sonar next 3000-3100 -n 3 # three consecutive free ports
sonar graph # who is connected to whom
sonar graph --dot # Graphviz
sonar open 3000 # open in the browser
sonar attach 3000 # shell into the container, or TCP
sonar watch # live view
sonar watch --stats --notify
```
Aqui está a tradução do conteúdo fornecido:
---
**Nota:** O conteúdo do chunk 59 não foi fornecido no prompt. Para que eu possa traduzi-lo, por favor, forneça o texto original do chunk 59.```sh
sonar next 3000
sonar next 3000-3100 -n 3 --json
sonar graph --json
sonar info --help
# check
```
`sonar wait` termina com código `0` (pronto), `1` (tempo esgotado) ou `2` (interrompido), o que o torna
a ferramenta ideal para colocar entre iniciar algo e testá-lo:```sh
docker compose up -d
sonar wait 5432 3000 --timeout 60s && npm run migrate && npm run test
```
**Daemon ou verificação direta.** Cada comando de leitura pergunta ao daemon se um está
em execução, pois ele já tem a resposta e não precisa fazer `fork` do `lsof`.
Se nenhum estiver em execução, eles verificam diretamente e imprimem uma nota no stderr informando isso.
`sonar kill` segue a mesma regra: um daemon acessível faz a eliminação, então ele
reverifica imediatamente e sua próxima resposta — e o histórico de portas — já sabe
que a porta se foi. Nem leituras nem eliminações iniciam um daemon sem o seu conhecimento.
`--no-daemon` força a verificação direta silenciosamente e funciona em qualquer comando:```sh
sonar list --no-daemon --json
# check
```
### `sonar host````sh
sonar host # cpu, load, memory and disk of the machine sonar watches
sonar host --json
```
The `-p` flag is used to specify the port number, and the `-t` flag is used to specify the target IP address. The `-m` flag is used to specify the mode of operation, which can be either `scan` or `exploit`. The `-l` flag is used to specify the list of payloads to use, and the `-o` flag is used to specify the output file for the results. The `-v` flag is used to enable verbose output, and the `-h` flag is used to display the help menu.```sh
sonar host
# check
```
O daemon mede a sua própria máquina no ritmo de verificação e a publica como a
linha `localhost` da coleção `hosts` do snapshot: sistema operacional e kernel, tempo de atividade, percentual de CPU, média de carga, memória e o disco que contém `/`. O percentual de CPU é o trabalho realizado entre duas verificações, portanto é nulo até que o daemon tenha verificado duas vezes; um valor que uma plataforma não consegue produzir — a média de carga no Windows, que não possui nenhuma — é nulo em vez de zero. Cada host registrado com `sonar remote add` entra na mesma tabela com a sua própria carga. O comando precisa de um daemon em execução: é o daemon que mantém a amostra anterior contra a qual um percentual é medido.
### `sonar remote install````sh
sonar remote install [email protected] # same version as this sonar
sonar remote install hetzner --version v0.6.0 # a Host from ~/.ssh/config
sonar remote install deploy@box --no-service # the binary, no daemon
```
Coloca o sonar num host ao qual já consegues aceder via ssh e inicia o daemon nesse mesmo host. O
arquivo de lançamento é descarregado e verificado por checksum **no host remoto** — nada
é copiado desta máquina — e o binário fica em `~/.local/bin/sonar`, pelo que
nenhuma parte disto requer root. O daemon corre como uma unidade de utilizador do systemd onde o host
a tenha (`~/.config/systemd/user/sonar.service`), e em modo destacado onde não
a tenha; `loginctl enable-linger` é impresso como conselho quando a sessão do utilizador
terminaria no logout e levaria o daemon consigo.
A versão instalada é a versão do sonar a partir da qual o executaste, pelo que as duas
extremidades falam o mesmo protocolo. Executá-lo novamente faz upgrade no local e reinicia
o daemon, que é o que torna a instalação e a atualização no mesmo comando.
O destino vai para o `ssh` intacto: um alias `Host` de `~/.ssh/config` funciona,
e também funcionam o `ProxyJump`, o `IdentityFile` e o `Port` que ele define. `--identity` e
`--ssh-arg` existem para os flags que uma configuração não cobre.
### `sonar remote````sh
sonar remote add [email protected] # name taken from the target
sonar remote add hetzner [email protected] # or given
sonar remote list # status, latency, version, load
sonar remote remove hetzner
sonar list --host hetzner # that host's ports
sonar list --host "*" # every host, with a HOST column
sonar info 3000 --host hetzner
```
Um host registado executa o mesmo daemon, e o daemon nesta máquina mantém
uma ligação SSH para ele — `ssh <target> sonar daemon stdio` — e multiplexa
o que ele reporta no estado que cada cliente já lê. Nada de novo fica à escuta
em lado nenhum: o socket do daemon remoto permanece privado para o utilizador SSH,
e os clientes nunca falam SSH por si próprios.
Cada linha agora traz o host de onde veio. As linhas locais dizem `localhost` e
mantêm as chaves que sempre tiveram, por isso nada que leia o sonar hoje muda;
as linhas remotas dizem o nome registado e são chaveadas como `<host>/<porta>:<bind>`,
que é o que permite que a porta 3000 em duas máquinas sejam duas linhas. Um subscritor
vê apenas localhost a menos que peça mais (`state.subscribe {"hosts": ["*"]}`).
O alvo vai para o `ssh` intacto, por isso os aliases de `~/.ssh/config`, `ProxyJump` e
identidades aplicam-se todos; `--ssh-arg`, `--identity` e `--port` cobrem o que uma
config não cobre. O sonar não armazena palavra-passe nem chave. Um host que desaparece
mantém a sua linha e o seu estado enquanto o daemon tenta novamente, recuando de um
segundo para trinta enquanto permanecer registado.
`--host` também continua a aceitar um simples `user@host` sobre o qual o sonar nada
sabe: recai na verificação sem agente de `ssh` + `ss`/`lsof` e imprime uma dica para
`sonar remote install`.
#### Agir noutra máquina
Cada escrita também aceita `--host`, e faz lá exatamente o que faz aqui:```sh
sonar kill 3000 --host hetzner # stop a port on that machine
sonar kill -g api --host hetzner # a whole group of its services
sonar kill-all --filter docker --host hetzner # its containers
sonar up api --host hetzner # start a group from its .sonar.yaml
sonar logs 3000 --host hetzner # tail its output here
sonar rename 3000 storefront --host hetzner # its name, in its database
sonar assign 3000 storefront --host hetzner
```
O daemon local encaminha a chamada através da bridge desse host e devolve o que
o daemon remoto respondeu, no mesmo envelope que uma chamada local retorna — cada
linha de resultado diz em qual host aconteceu, e o `affected` de um kill carrega
as chaves `<host>/<porta>:<bind>` que o stream usa para essas linhas. Um comando
de streaming transmite: `sonar up --host` imprime cada serviço conforme o lado
remoto o inicia, e Ctrl-C interrompe o trabalho remoto em vez de apenas este terminal.
Como a chave de uma linha já nomeia seu host, um cliente pode devolvê-la diretamente
como seletor — `{"key": "hetzner/3000:127.0.0.1"}` é o seletor inteiro,
host incluído. Uma chamada age em uma máquina; nomear duas é um erro em vez de
meio kill em cada uma.
Duas coisas permanecem locais. `sonar attach` coloca *este* terminal diante de um
processo, então recusa `--host` e diz para usar ssh e anexar lá. E uma sessão de
agente é estado que este daemon mantém, então `sonar kill --session` não tem
forma remota. Todo o resto precisa do daemon rodando aqui — é onde a conexão com
a outra máquina vive — e diz isso em vez de silenciosamente escanear esta máquina.
`sonar up --host` precisa do grupo nomeado: o `.sonar.yaml` no seu diretório de
trabalho é um caminho nesta máquina, e é o daemon remoto que lê o arquivo e
inicia os serviços.
### O daemon
Um processo em segundo plano escaneia portas, resolve grupos, faz polling de saúde,
mantém o banco de dados e transmite mudanças para quem estiver inscrito — a CLI,
o aplicativo de desktop e os editores.```sh
sonar serve # in the foreground
sonar serve --detach # in the background
sonar daemon status # pid, uptime, subscribers, scans, intervals
sonar daemon path # the socket it listens on
sonar daemon log -n 50 -f # what it is doing
sonar daemon restart
sonar daemon stop
```
Aqui está a tradução do conteúdo do chunk 77:
```markdown
## Instalação
### Requisitos
- Python 3.8 ou superior
- pip (gerenciador de pacotes do Python)
### Passos de Instalação
1. Clone o repositório:
```bash
git clone https://github.com/example/tool.git
cd tool
```
2. Instale as dependências:
```bash
pip install -r requirements.txt
```
3. Execute a ferramenta:
```bash
python main.py --help
```
## Uso
### Exemplos Básicos
Para executar uma varredura básica:
```bash
python main.py scan --target example.com
```
Para usar o modo verboso:
```bash
python main.py scan --target example.com -v
```
### Opções Avançadas
| Opção | Descrição |
|-------|-----------|
| `--target` | Especifica o alvo da varredura |
| `--port` | Define a porta a ser verificada |
| `--threads` | Número de threads para execução paralela |
| `--timeout` | Tempo limite para cada solicitação |
| `--output` | Caminho do arquivo para salvar os resultados |
### Exemplo de Saída
```json
{
"target": "example.com",
"status": "completed",
"vulnerabilities": [
{
"id": "CVE-2023-1234",
"severity": "high",
"description": "Vulnerabilidade de injeção de SQL"
}
]
}
```
## Configuração
O arquivo de configuração `config.yaml` permite personalizar o comportamento da ferramenta:
```yaml
scan:
threads: 10
timeout: 30
ports: [80, 443, 8080]
report:
format: "json"
output_dir: "./reports"
```
## Solução de Problemas
### Erro: "Permission denied"
Se você encontrar um erro de permissão, tente executar com `sudo` ou ajuste as permissões do diretório:
```bash
chmod +x main.py
```
### Erro: "ModuleNotFoundError"
Certifique-se de que todas as dependências estão instaladas:
```bash
pip install -r requirements.txt
```
## Contribuindo
Agradecemos contribuições! Por favor, siga estas etapas:
1. Faça um fork do repositório
2. Crie um branch para sua feature (`git checkout -b feature/nova-funcionalidade`)
3. Faça commit das suas alterações (`git commit -am 'Adiciona nova funcionalidade'`)
4. Envie para o branch (`git push origin feature/nova-funcionalidade`)
5. Abra um Pull Request
## Licença
Este projeto está licenciado sob a Licença MIT - consulte o arquivo [LICENSE](https://github.com/raskrebs/sonar/blob/main/LICENSE) para obter detalhes.
## Aviso Legal
Esta ferramenta é fornecida apenas para fins educacionais e de teste de segurança autorizado. O uso indevido desta ferramenta pode violar leis e regulamentos aplicáveis. O autor não se responsabiliza por qualquer uso indevido.
``````sh
sonar daemon path
sonar daemon status --json
sonar daemon log -n 5
# check
```
| O quê | Onde |
|---|---|
| Socket | `$XDG_RUNTIME_DIR/sonar/daemon.sock`, senão `~/.config/sonar/daemon.sock`; `\\.\pipe\sonar` no Windows |
| Banco de dados | `~/.config/sonar/sonar.db` (`SONAR_DB` substitui) |
| Log do daemon | `~/.config/sonar/daemon.log`, rotacionado a 5 MiB, três mantidos |
| Logs de execução | `~/.config/sonar/logs/<grupo>/<serviço>.log` |
| Configuração | `~/.config/sonar/config.yaml` |
`SONAR_SOCKET` substitui o caminho do socket em todos os lugares, tanto para o daemon quanto para
seus clientes — útil para uma segunda instância isolada. O socket é criado
com 0600 em um diretório 0700, então só você pode falar com ele. Apenas um daemon é executado por
vez; um socket deixado para trás por uma falha é limpo na próxima inicialização.
O daemon para sozinho após 30 minutos sem clientes e sem
assinantes. Defina `daemon.idle_timeout` no arquivo de configuração para alterar isso, ou
`0` para mantê-lo em execução.
As portas são escaneadas a cada 2 segundos enquanto algo está mudando; quando nada está,
o scanner se desacelera para 5 segundos com um assinante conectado e 10
segundos sem um. `daemon.scan_interval` move essa base — mínimo 1s — e
ambos os tetos escalam com ela, então aumentá-la para `5s` recua para 12,5s e 25s
em vez de fixar a curva nos limites antigos. `daemon.stats_interval` é o
ritmo separado no qual cpu, memória e a faixa de carga do host são atualizados enquanto
algo está assinado. Ambos são lidos quando o daemon inicia: edite o arquivo,
depois `sonar daemon restart`. `sonar daemon status` imprime os valores em
efeito (`scan base`, `stats tick`) ao lado do intervalo adaptativo em que o scanner está
agora.
Um assinante que solicita `include: ["health"]` faz o daemon sondar **cada
porta em escuta** em um ritmo mais lento, não apenas os serviços que declaram um
caminho `health:` — esses são consultados a cada tick e alcançam cada assinante
quer a saúde tenha sido solicitada ou não.
### Configuração
`~/.config/sonar/config.yaml` é opcional; as flags sempre vencem.```sh
sonar config path
sonar config init
# check
```
Aqui está a tradução para português do conteúdo fornecido:
---
**Nota:** O texto original não foi fornecido no prompt. Para que eu possa traduzir, por favor, cole o conteúdo do chunk 81.```sh
sonar config edit # open it in $EDITOR
```
I'm ready to translate the Kitploit tool content from English to Portuguese. Please provide chunk 83 of 107.```yaml
list:
columns: [port, process, group, container, image, containerport, url]
sort: port # port | pid | name | type
filter: "" # docker | user | system | "" (all)
all: false # include desktop apps by default
daemon:
idle_timeout: 30m # 0 keeps the daemon running
log_level: info # debug | info | warn | error
scan_interval: 2s # base port-scan cadence, minimum 1s
stats_interval: 1s # cpu/memory refresh while subscribed, minimum 250ms
color: true
services: # label custom/unknown ports
9000: php-fpm
5050: my-dashboard
```
Valores inválidos são ignorados com um aviso e o sonar continua com os padrões.
Sobrescritas de ambiente sem chave de configuração: `SONAR_DB`, `SONAR_SOCKET`,
`SONAR_NO_HINTS=1` para silenciar os avisos de migração abaixo, e
`SONAR_NO_AUTOSTART=1` para impedir que qualquer cliente sonar inicie um daemon que ele não
encontrou — útil em CI, onde uma build nunca deve deixar um processo para trás.
A própria suíte de testes do sonar define `SONAR_NO_AUTOSTART=1` para cada binário de teste e,
após a execução, procura por um daemon que tenha sobrevivido a ela. Essa trava só reivindica um
`serve` iniciado a partir da raiz temporária privada da execução, então duas suítes rodando lado a lado
em uma mesma máquina não interferem nos daemons uma da outra;
`SONAR_TESTENV_GATE_ALL=1` amplia isso de volta para cada `sonar serve` em qualquer lugar sob
o diretório temporário, que é o que um runner de CI que possui a máquina inteira
deseja.
### Agentes: MCP, skills e hooks```sh
sonar install mcp --claude-code # merge into <git root>/.mcp.json
sonar install mcp --cursor --scope user # ~/.cursor/mcp.json
sonar install mcp --codex # codex mcp add
sonar install skills --claude-code # the bundled sonar skill
sonar install hooks --claude-code # optional, see below
```
I need the actual content of chunk 87 to translate it. Please provide the Markdown text you want translated.```sh
sonar install mcp --generic --print
sonar install skills --print
sonar install hooks --print
# check
```
`install mcp` regista `{"command": "sonar", "args": ["mcp"]}` e deixa todos os
outros servidores e chaves no arquivo intactos; executá-lo duas vezes não muda
nada, e `--uninstall` remove exatamente o que o sonar escreveu.
`sonar mcp` é esse servidor: um servidor MCP stdio embutido no binário que dá
a um agente a visão do daemon sobre a máquina. Ele lê com `list_ports` e
`inspect_port`, aguarda com `wait_for_port`, escolhe e reserva portas com
`next_free_port` e `claim_port`, e responde ao restante das perguntas de um agente
com `tail_logs`, `health_check`, `dependency_graph`, `port_history` e
`list_sessions`; ações e recursos vêm em seguida. Ele inicia um daemon se nenhum
estiver em execução e se reconecta por conta própria se um desaparecer; seus logs vão para stderr,
porque o stdout carrega o protocolo.
`install skills` grava a skill incluída, que ensina um agente a iniciar
servidores com `sonar start --`, a usar `sonar wait` em vez de dormir, e a
limpar o que iniciou. `install hooks` adiciona dois hooks do Claude Code: um
exporta `SONAR_SESSION` para que tudo o que uma sessão inicia seja atribuído a ela, o
outro sugere `sonar start --` quando um servidor de desenvolvimento simples está prestes a ser executado (ele
aconselha, nunca bloqueia). Ambos aceitam `--scope project|user`, `--print` e
`--uninstall`.
### `sonar doctor`
Um único comando que verifica tudo do que o sonar depende e diz o que fazer sobre
o que estiver errado. É o que o aplicativo desktop executa durante a integração, e o que
você deve executar por conta própria quando algo estiver fora do lugar.```sh
sonar doctor # the table, and a one-line verdict
sonar doctor --json # {ok, checks, version, daemon_version}
sonar doctor --only db_ok,tray # just these
sonar doctor --only mcp_registered # a whole family
sonar doctor --project ~/code/api # a project other than the working directory
sonar doctor --fix --yes # apply the safe repairs, then check again
```
# Ferramentas de Segurança Ofensiva
## Ferramentas de Exploração
### Metasploit Framework
O Metasploit Framework é uma infraestrutura de código aberto que você pode usar para testes de segurança, desenvolvimento de assinaturas e pesquisa de vulnerabilidades. A estrutura inclui ferramentas que você pode usar para:
- Escrever, testar e executar código de exploração.
- Criar e testar cargas úteis (payloads) que serão implantadas em sistemas comprometidos.
- Executar ataques simulados contra sistemas para testar suas defesas.
### ExploitDB
O ExploitDB é um arquivo público de explorações e vulnerabilidades correspondentes, mantido pela Offensive Security. É um recurso valioso para pesquisadores de segurança que buscam entender como as vulnerabilidades são exploradas na prática.
### SearchSploit
O SearchSploit é uma ferramenta de linha de comando que permite pesquisar no arquivo do ExploitDB a partir do seu terminal. É particularmente útil para testes de penetração offline e auditorias de segurança.
## Ferramentas de Pós-Exploração
### Mimikatz
O Mimikatz é uma ferramenta bem conhecida para extrair credenciais de sistemas Windows. Ela pode recuperar senhas em texto claro, hashes, tickets Kerberos e outros segredos de autenticação da memória do sistema.
### Empire
O Empire é uma estrutura de pós-exploração baseada em PowerShell e Python. Ela fornece uma variedade de agentes e módulos para manter o acesso a sistemas comprometidos e realizar ações adicionais na rede.
## Ferramentas de Engenharia Social
### SET (Social Engineering Toolkit)
O SET é uma estrutura de código aberto projetada para automatizar ataques de engenharia social. Ele inclui vetores de ataque para phishing, clonagem de sites, geração de payloads e ataques de mídia removível.
### BeEF (Browser Exploitation Framework)
O BeEF é uma ferramenta de teste de penetração focada no navegador da web. Ela permite que um testador de segurança avalie a postura de segurança de um ambiente de destino usando ataques do lado do cliente.
## Ferramentas de Análise Forense
### Autopsy
O Autopsy é uma plataforma de análise forense digital e uma interface gráfica para o Sleuth Kit. Ela é usada para investigar o que aconteceu em um computador, recuperando dados de dispositivos de armazenamento e analisando artefatos.
### Volatility
O Volatility é uma estrutura de análise forense de memória avançada. Ela é usada para extrair informações de amostras de memória (dumps de RAM) e pode analisar a memória de sistemas Windows, Linux e macOS.
## Ferramentas de Análise de Rede
### Wireshark
O Wireshark é um analisador de protocolos de rede amplamente utilizado. Ele permite capturar e navegar interativamente pelo tráfego que trafega em uma interface de rede de computador.
### tcpdump
O tcpdump é um analisador de pacotes de rede baseado em linha de comando. Ele é usado para capturar e filtrar pacotes de rede para análise e solução de problemas.
## Ferramentas de Análise de Vulnerabilidades
### Nessus
O Nessus é um scanner de vulnerabilidades comercial que identifica vulnerabilidades, configurações incorretas e problemas de conformidade em sistemas de rede.
### OpenVAS
O OpenVAS é uma estrutura de scanner de vulnerabilidades de código aberto. Ele inclui um serviço de scanner e um conjunto de testes de vulnerabilidades para detectar problemas de segurança em sistemas.
## Ferramentas de Análise de Aplicações Web
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
### OWASP ZAP
O OWASP ZAP (Zed Attack Proxy) é um scanner de segurança de aplicações web de código aberto. Ele é projetado para ser usado tanto por iniciantes quanto por profissionais experientes em segurança.
## Ferramentas de Análise de Senhas
### John the Ripper
O John the Ripper é uma ferramenta de quebra de senhas rápida. Ela é usada para testar a força de senhas e recuperar senhas de hashes.
### Hashcat
O Hashcat é um recuperador de senhas avançado que suporta cinco modos de ataque exclusivos para mais de 300 algoritmos de hash altamente otimizados.
## Ferramentas de Análise de Tráfego
### Aircrack-ng
O Aircrack-ng é um conjunto completo de ferramentas para avaliar a segurança de redes Wi-Fi. Ele se concentra em diferentes áreas da segurança de Wi-Fi:
- Monitoramento: captura de pacotes e exportação de dados para ferramentas externas.
- Ataque: ataques de repetição, desautenticação e pontos de acesso falsos.
- Teste: verificação de placas Wi-Fi e capacidades do driver.
- Quebra: quebra de chaves WEP e WPA PSK.
### Kismet
O Kismet é um detector de redes sem fio, sniffer e sistema de detecção de intrusão. Ele funciona com qualquer placa de rede sem fio que suporte o modo de monitoramento bruto.
## Ferramentas de Análise de Malware
### YARA
O YARA é uma ferramenta usada principalmente na identificação e classificação de amostras de malware. Ela permite criar descrições de famílias de malware com base em padrões textuais ou binários.
### Cuckoo Sandbox
O Cuckoo Sandbox é um sistema de análise automatizada de malware de código aberto. Ele é usado para analisar arquivos e URLs em um ambiente controlado e isolado.
## Ferramentas de Análise de Código
### Bandit
O Bandit é uma ferramenta projetada para encontrar problemas comuns de segurança em código Python. Ele processa cada arquivo, constrói uma árvore sintática abstrata (AST) e executa plugins para detectar vulnerabilidades.
### Brakeman
O Brakeman é um scanner de análise estática de segurança para aplicações Ruby on Rails. Ele verifica o código-fonte em busca de vulnerabilidades de segurança conhecidas.
## Ferramentas de Análise de Configuração
### Lynis
O Lynis é uma ferramenta de auditoria de segurança para sistemas baseados em Unix. Ela realiza uma varredura extensa do sistema para descobrir problemas de segurança e configurações incorretas.
### OpenSCAP
O OpenSCAP é uma estrutura de código aberto que fornece ferramentas para avaliação de conformidade e auditoria de segurança. Ela implementa o padrão SCAP (Security Content Automation Protocol).
## Ferramentas de Análise de Logs
### Logwatch
O Logwatch é um analisador de logs personalizável que processa logs do sistema e gera relatórios sobre atividades suspeitas ou incomuns.
### GoAccess
O GoAccess é um analisador de logs em tempo real que visualiza e interage com logs de servidores web. Ele fornece estatísticas rápidas e valiosas sobre tráfego HTTP.
## Ferramentas de Análise de DNS
### dnsrecon
O dnsrecon é uma ferramenta de enumeração de DNS que permite coletar informações sobre servidores DNS e registros de domínio.
### fierce
O fierce é uma ferramenta de reconhecimento de DNS que realiza varreduras para encontrar servidores DNS e hosts não autorizados.
## Ferramentas de Análise de E-mail
### swaks
O swaks (Swiss Army Knife for SMTP) é uma ferramenta de teste de protocolo SMTP versátil. Ela é usada para testar servidores de e-mail e verificar configurações de SMTP.
### PhishingKit
O PhishingKit é uma ferramenta para analisar kits de phishing e entender como eles funcionam.
## Ferramentas de Análise de Rede Sem Fio
### Wifite
O Wifite é uma ferramenta automatizada de auditoria de redes sem fio. Ela automatiza o processo de captura de handshakes e quebra de senhas WPA/WPA2.
### Reaver
O Reaver é uma ferramenta de ataque a redes Wi-Fi protegidas por WPS. Ela explora uma vulnerabilidade no protocolo WPS para recuperar a senha da rede.
## Ferramentas de Análise de Bluetooth
### Ubertooth
O Ubertooth é uma plataforma de hardware e software para testes de segurança de Bluetooth. Ela permite monitorar e analisar tráfego Bluetooth.
### BlueZ
O BlueZ é a pilha de protocolo Bluetooth oficial do Linux. Ela fornece ferramentas para gerenciar e analisar dispositivos Bluetooth.
## Ferramentas de Análise de RFID
### Proxmark3
O Proxmark3 é uma ferramenta de hardware para análise e teste de sistemas RFID. Ela pode ler, escrever e clonar tags RFID.
### libnfc
O libnfc é uma biblioteca de código aberto para comunicação NFC. Ela fornece ferramentas para interagir com dispositivos NFC.
## Ferramentas de Análise de Hardware
### JTAGulator
O JTAGulator é uma ferramenta de hardware para identificar pinos JTAG e UART em dispositivos embarcados.
### Bus Pirate
O Bus Pirate é uma ferramenta de hardware para testar e depurar protocolos de comunicação serial.
## Ferramentas de Análise de Firmware
### Binwalk
O Binwalk é uma ferramenta para analisar, extrair e modificar firmware. Ela é usada para identificar e extrair arquivos embutidos em imagens de firmware.
### Firmware Analysis Toolkit
O Firmware Analysis Toolkit é um conjunto de ferramentas para automatizar a análise de firmware. Ele inclui ferramentas para extrair, montar e analisar sistemas de arquivos de firmware.
## Ferramentas de Análise de IoT
### Shodan
O Shodan é um mecanismo de busca para dispositivos conectados à internet. Ele permite encontrar dispositivos IoT e outros sistemas expostos.
### ThingPulse
O ThingPulse é uma ferramenta para analisar dispositivos IoT e seus protocolos de comunicação.
## Ferramentas de Análise de SCADA
### Modbus
O Modbus é um protocolo de comunicação usado em sistemas SCADA. Ferramentas como o ModbusPal permitem simular e analisar dispositivos Modbus.
### ScadaBR
O ScadaBR é uma plataforma de código aberto para sistemas SCADA. Ela fornece ferramentas para monitorar e controlar processos industriais.
## Ferramentas de Análise de Cloud
### ScoutSuite
O ScoutSuite é uma ferramenta de auditoria de segurança multi-cloud. Ela avalia a postura de segurança de ambientes AWS, Azure e GCP.
### Prowler
O Prowler é uma ferramenta de auditoria de segurança para AWS. Ela verifica a conformidade com as melhores práticas de segurança da AWS.
## Ferramentas de Análise de Contêineres
### Trivy
O Trivy é um scanner de vulnerabilidades abrangente para contêineres e outros artefatos. Ele detecta vulnerabilidades em imagens de contêineres e sistemas de arquivos.
### Clair
O Clair é um projeto de código aberto para análise estática de vulnerabilidades em contêineres. Ele fornece uma API para consultar vulnerabilidades em imagens de contêineres.
## Ferramentas de Análise de Kubernetes
### kube-hunter
O kube-hunter é uma ferramenta para testar a segurança de clusters Kubernetes. Ela identifica vulnerabilidades e configurações incorretas em clusters.
### kube-bench
O kube-bench é uma ferramenta que verifica clusters Kubernetes contra o CIS Benchmark. Ela verifica se os clusters estão configurados de acordo com as melhores práticas de segurança.
## Ferramentas de Análise de DevOps
### Gauntlt
O Gauntlt é uma estrutura de teste de segurança que integra testes de segurança em pipelines de CI/CD. Ela permite que equipes de desenvolvimento executem testes de segurança automatizados.
### BDD-Security
O BDD-Security é uma estrutura de teste de segurança que usa desenvolvimento orientado a comportamento (BDD) para definir e executar testes de segurança.
## Ferramentas de Análise de Compliance
### OpenSCAP
O OpenSCAP é uma estrutura de código aberto que fornece ferramentas para avaliação de conformidade e auditoria de segurança. Ela implementa o padrão SCAP (Security Content Automation Protocol).
### InSpec
O InSpec é uma estrutura de teste de código aberto para auditoria de conformidade. Ela permite definir testes automatizados para verificar a conformidade de sistemas com políticas de segurança.
## Ferramentas de Análise de Risco
### OpenVAS
O OpenVAS é uma estrutura de scanner de vulnerabilidades de código aberto. Ele inclui um serviço de scanner e um conjunto de testes de vulnerabilidades para detectar problemas de segurança em sistemas.
### Nexpose
O Nexpose é um scanner de vulnerabilidades comercial da Rapid7. Ele fornece gerenciamento de vulnerabilidades e análise de risco.
## Ferramentas de Análise de Incidentes
### TheHive
O TheHive é uma plataforma de resposta a incidentes de código aberto. Ela permite que equipes de segurança colaborem na investigação e resposta a incidentes.
### MISP
O MISP (Malware Information Sharing Platform) é uma plataforma de código aberto para compartilhamento de inteligência de ameaças. Ela permite que organizações compartilhem indicadores de comprometimento e outras informações de ameaças.
## Ferramentas de Análise de Threat Intelligence
### OpenCTI
O OpenCTI é uma plataforma de código aberto para gerenciamento de inteligência de ameaças. Ela permite que organizações coletem, armazenem e analisem informações sobre ameaças.
### Yeti
O Yeti é uma plataforma de inteligência de ameaças que permite coletar e analisar indicadores de comprometimento.
## Ferramentas de Análise de OSINT
### Maltego
O Maltego é uma ferramenta de análise de inteligência de código aberto. Ela permite visualizar e analisar relacionamentos entre entidades, como pessoas, organizações e domínios.
### Recon-ng
O Recon-ng é uma estrutura de reconhecimento de código aberto. Ela fornece módulos para coletar informações sobre alvos de várias fontes.
## Ferramentas de Análise de Redes Sociais
### Twint
O Twint é uma ferramenta de OSINT para Twitter. Ela permite coletar dados do Twitter sem usar a API oficial.
### Instaloader
O Instaloader é uma ferramenta para baixar conteúdo do Instagram. Ela permite coletar fotos, vídeos e metadados de perfis públicos.
## Ferramentas de Análise de Deep Web
### Tor
O Tor é uma rede de anonimato que permite navegar na internet de forma anônima. Ferramentas como o Tor Browser são usadas para acessar a deep web.
### OnionScan
O OnionScan é uma ferramenta para analisar sites na rede Tor. Ela verifica sites .onion em busca de vulnerabilidades e vazamentos de informações.
## Ferramentas de Análise de Criptomoedas
### Blockchair
O Blockchair é um explorador de blockchain que permite analisar transações de criptomoedas.
### Chainalysis
O Chainalysis é uma plataforma comercial para análise de blockchain. Ela é usada para rastrear transações de criptomoedas e identificar atividades ilegais.
## Ferramentas de Análise de Esteganografia
### Steghide
O Steghide é uma ferramenta de esteganografia que permite ocultar dados em arquivos de imagem e áudio.
### OutGuess
O OutGuess é uma ferramenta de esteganografia que permite ocultar dados em arquivos de imagem.
## Ferramentas de Análise de Criptografia
### OpenSSL
O OpenSSL é uma biblioteca de criptografia amplamente utilizada. Ela fornece ferramentas para criar e gerenciar certificados, chaves e outros materiais criptográficos.
### GnuPG
O GnuPG (GNU Privacy Guard) é uma ferramenta de criptografia que implementa o padrão OpenPGP. Ela é usada para criptografar e assinar dados.
## Ferramentas de Análise de Certificados
### OpenSSL
O OpenSSL é uma biblioteca de criptografia amplamente utilizada. Ela fornece ferramentas para criar e gerenciar certificados, chaves e outros materiais criptográficos.
### cfssl
O cfssl é um conjunto de ferramentas para criar e gerenciar certificados TLS. Ele fornece uma API para emitir e revogar certificados.
## Ferramentas de Análise de PKI
### Easy-RSA
O Easy-RSA é um utilitário de linha de comando para gerenciar uma autoridade certificadora (CA). Ele é usado para criar e gerenciar certificados para VPNs e outros serviços.
### XCA
O XCA é uma ferramenta gráfica para gerenciar certificados e chaves. Ela permite criar e gerenciar certificados, chaves e solicitações de assinatura de certificados.
## Ferramentas de Análise de Autenticação
### Hydra
O Hydra é uma ferramenta de quebra de senhas online. Ela é usada para realizar ataques de força bruta contra serviços de autenticação.
### Medusa
O Medusa é uma ferramenta de quebra de senhas online paralela. Ela é usada para realizar ataques de força bruta contra serviços de autenticação.
## Ferramentas de Análise de Autorização
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
### OWASP ZAP
O OWASP ZAP (Zed Attack Proxy) é um scanner de segurança de aplicações web de código aberto. Ele é projetado para ser usado tanto por iniciantes quanto por profissionais experientes em segurança.
## Ferramentas de Análise de Sessão
### Session Hijacking
O Session Hijacking é uma técnica usada para sequestrar sessões de usuários. Ferramentas como o Ferret e o Hamster são usadas para realizar ataques de sequestro de sessão.
### Cookie Editor
O Cookie Editor é uma extensão de navegador que permite visualizar e editar cookies. Ela é usada para manipular sessões e testar vulnerabilidades relacionadas a cookies.
## Ferramentas de Análise de Input Validation
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
### OWASP ZAP
O OWASP ZAP (Zed Attack Proxy) é um scanner de segurança de aplicações web de código aberto. Ele é projetado para ser usado tanto por iniciantes quanto por profissionais experientes em segurança.
## Ferramentas de Análise de SQL Injection
### sqlmap
O sqlmap é uma ferramenta de código aberto que automatiza o processo de detecção e exploração de vulnerabilidades de injeção de SQL.
### jSQL Injection
O jSQL Injection é uma ferramenta Java para testar vulnerabilidades de injeção de SQL em aplicações web.
## Ferramentas de Análise de XSS
### XSStrike
O XSStrike é uma ferramenta de detecção e exploração de XSS. Ela é usada para encontrar e explorar vulnerabilidades de cross-site scripting.
### BeEF
O BeEF (Browser Exploitation Framework) é uma ferramenta de teste de penetração focada no navegador da web. Ela permite que um testador de segurança avalie a postura de segurança de um ambiente de destino usando ataques do lado do cliente.
## Ferramentas de Análise de CSRF
### CSRF Tester
O CSRF Tester é uma ferramenta para testar vulnerabilidades de Cross-Site Request Forgery. Ela permite criar e enviar solicitações forjadas para testar aplicações web.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de SSRF
### SSRFmap
O SSRFmap é uma ferramenta para testar vulnerabilidades de Server-Side Request Forgery. Ela permite explorar e automatizar ataques SSRF.
### Gopherus
O Gopherus é uma ferramenta para gerar payloads para ataques SSRF usando o protocolo Gopher.
## Ferramentas de Análise de Deserialization
### ysoserial
O ysoserial é uma ferramenta para gerar payloads de desserialização para Java. Ela é usada para explorar vulnerabilidades de desserialização insegura.
### PHPGGC
O PHPGGC é uma biblioteca de payloads de desserialização para PHP. Ela fornece payloads para explorar vulnerabilidades de desserialização em aplicações PHP.
## Ferramentas de Análise de Command Injection
### Commix
O Commix é uma ferramenta automatizada para testar vulnerabilidades de injeção de comandos. Ela permite detectar e explorar vulnerabilidades de injeção de comandos em aplicações web.
### PayloadsAllTheThings
O PayloadsAllTheThings é uma coleção de payloads e técnicas para testes de segurança. Ela inclui payloads para injeção de comandos e outros tipos de ataques.
## Ferramentas de Análise de File Upload
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
### OWASP ZAP
O OWASP ZAP (Zed Attack Proxy) é um scanner de segurança de aplicações web de código aberto. Ele é projetado para ser usado tanto por iniciantes quanto por profissionais experientes em segurança.
## Ferramentas de Análise de Path Traversal
### dotdotpwn
O dotdotpwn é uma ferramenta para testar vulnerabilidades de path traversal. Ela permite automatizar ataques de traversal de diretórios.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de LDAP Injection
### ldapsearch
O ldapsearch é uma ferramenta de linha de comando para consultar servidores LDAP. Ela é usada para testar vulnerabilidades de injeção de LDAP.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de XML Injection
### XXE Injector
O XXE Injector é uma ferramenta para testar vulnerabilidades de XML External Entity. Ela permite automatizar ataques XXE.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de Template Injection
### Tplmap
O Tplmap é uma ferramenta para testar vulnerabilidades de Server-Side Template Injection. Ela permite detectar e explorar vulnerabilidades de injeção de templates.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de HTTP Request Smuggling
### Smuggler
O Smuggler é uma ferramenta para testar vulnerabilidades de HTTP Request Smuggling. Ela permite detectar e explorar vulnerabilidades de contrabando de solicitações HTTP.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de WebSocket
### wscat
O wscat é uma ferramenta de linha de comando para testar conexões WebSocket. Ela permite conectar e enviar mensagens a servidores WebSocket.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de API
### Postman
O Postman é uma plataforma para desenvolvimento e teste de APIs. Ela permite enviar solicitações HTTP e analisar respostas.
### OWASP ZAP
O OWASP ZAP (Zed Attack Proxy) é um scanner de segurança de aplicações web de código aberto. Ele é projetado para ser usado tanto por iniciantes quanto por profissionais experientes em segurança.
## Ferramentas de Análise de GraphQL
### GraphQL Introspection
O GraphQL Introspection é uma técnica para explorar esquemas GraphQL. Ferramentas como o GraphiQL permitem consultar e explorar APIs GraphQL.
### InQL
O InQL é uma extensão do Burp Suite para testar APIs GraphQL. Ela permite enviar consultas e mutações GraphQL.
## Ferramentas de Análise de REST API
### Postman
O Postman é uma plataforma para desenvolvimento e teste de APIs. Ela permite enviar solicitações HTTP e analisar respostas.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de SOAP
### SoapUI
O SoapUI é uma ferramenta para testar serviços web SOAP e REST. Ela permite criar e executar testes funcionais e de segurança.
### Burp Suite
O Burp Suite é uma plataforma integrada para realizar testes de segurança de aplicações web. Ele inclui vários componentes que trabalham juntos para auxiliar no processo de teste de segurança de aplicações web.
## Ferramentas de Análise de Microservices
### Istio
O Istio é uma malha de serviços que fornece observabilidade, segurança e gerenciamento de tráfego para microservices.
### Envoy
O Envoy é um proxy de borda e serviço de código aberto. Ele é usado para gerenciar o tráfego entre microservices.
## Ferramentas de Análise de Serverless
### Serverless Framework
O Serverless Framework é uma estrutura para desenvolver e implantar aplicações serverless. Ela permite gerenciar funções e recursos em provedores de nuvem.
### AWS Lambda
O AWS Lambda é um serviço de computação serverless da Amazon. Ele permite executar código sem provisionar servidores.
## Ferramentas de Análise de Containers
### Docker
O Docker é uma plataforma para desenvolver, enviar e executar aplicações em contêineres. Ela permite empacotar aplicações e suas dependências em contêineres.
### Kubernetes
O Kubernetes é uma plataforma de orquestração de contêineres de código aberto. Ela automatiza a implantação, o dimensionamento e o gerenciamento de aplicações em contêineres.
## Ferramentas de Análise de Virtualização
### VirtualBox
O VirtualBox é um software de virtualização de código aberto. Ele permite executar múltiplos sistemas operacionais em uma única máquina.
### VMware
O VMware é uma plataforma de virtualização comercial. Ela fornece ferramentas para criar e gerenciar máquinas virtuais.
## Ferramentas de Análise de Rede Definida por Software
### Open vSwitch
O Open vSwitch é um switch virtual de código aberto. Ele é usado para gerenciar redes definidas por software.
### Mininet
O Mininet é uma ferramenta para criar redes virtuais em uma única máquina. Ela é usada para testar e desenvolver aplicações de rede.
## Ferramentas de Análise de Segurança de Rede
### Snort
O Snort é um sistema de detecção de intrusão de rede de código aberto. Ele é usado para monitorar o tráfego de rede e detectar atividades suspeitas.
### Suricata
O Suricata é um sistema de detecção de intrusão de rede de código aberto. Ele é usado para monitorar o tráfego de rede e detectar atividades suspeitas.
## Ferramentas de Análise de Segurança de Host
### OSSEC
O OSSEC é um sistema de detecção de intrusão de host de código aberto. Ele é usado para monitorar a integridade de arquivos e detectar atividades suspeitas em hosts.
### Wazuh
O Wazuh é uma plataforma de segurança de código aberto que fornece detecção de intrusão, monitoramento de integridade e resposta a incidentes.
## Ferramentas de Análise de Segurança de Aplicações
### OWASP Dependency-Check
O OWASP Dependency-Check é uma ferramenta para identificar vulnerabilidades conhecidas em dependências de projetos. Ela verifica dependências contra o banco de dados de vulnerabilidades do NVD.
### Snyk
O Snyk é uma plataforma de segurança para desenvolvimento. Ela permite encontrar e corrigir vulnerabilidades em dependências e código.
## Ferramentas de Análise de Segurança de Dados
### Vault
O Vault é uma ferramenta da HashiCorp para gerenciar segredos e proteger dados. Ela fornece criptografia e gerenciamento de acesso a segredos.
### Keycloak
O Keycloak é uma solução de código aberto para gerenciamento de identidade e acesso. Ela fornece autenticação e autorização para aplicações.
## Ferramentas de Análise de Segurança de Identidade
### Keycloak
O Keycloak é uma solução de código aberto para gerenciamento de identidade e acesso. Ela fornece autenticação e autorização para aplicações.
### FreeIPA
O FreeIPA é uma solução de gerenciamento de identidade de código aberto. Ela fornece autenticação, autorização e gerenciamento de contas.
## Ferramentas de Análise de Segurança de Acesso
### OpenLDAP
O OpenLDAP é uma implementação de código aberto do protocolo LDAP. Ela é usada para gerenciar diretórios e autenticação.
### FreeRADIUS
O FreeRADIUS é um servidor RADIUS de código aberto. Ele é usado para autenticação, autorização e contabilidade em redes.
## Ferramentas de Análise de Segurança de Privacidade
### Tor
O Tor é uma rede de anonimato que permite navegar na internet de forma anônima. Ferramentas como o Tor Browser são usadas para proteger a privacidade online.
### Signal
O Signal é um aplicativo de mensagens seguro que usa criptografia de ponta a ponta. Ele é usado para proteger a privacidade das comunicações.
## Ferramentas de Análise de Segurança de Conformidade
### OpenSCAP
O OpenSCAP é uma estrutura de código aberto que fornece ferramentas para avaliação de conformidade e auditoria de segurança. Ela implementa o padrão SCAP (Security Content Automation Protocol).
### InSpec
O InSpec é uma estrutura de teste de código aberto para auditoria de conformidade. Ela permite definir testes automatizados para verificar a conformidade de sistemas com políticas de segurança.
## Ferramentas de Análise de Segurança de Auditoria
### Lynis
O Lynis é uma ferramenta de auditoria de segurança para sistemas baseados em Unix. Ela realiza uma varredura extensa do sistema para descobrir problemas de segurança e configurações incorretas.
### OpenSCAP
O OpenSCAP é uma estrutura de código aberto que fornece ferramentas para avaliação de conformidade e auditoria de segurança. Ela implementa o padrão SCAP (Security Content Automation Protocol).
## Ferramentas de Análise de Segurança de Monitoramento
### Prometheus
O Prometheus é um sistema de monitoramento e alerta de código aberto. Ele é usado para coletar e analisar métricas de sistemas e serviços.
### Grafana
O Grafana é uma plataforma de análise e visualização de código aberto. Ela é usada para criar dashboards e visualizar métricas de sistemas.
## Ferramentas de Análise de Segurança de SIEM
### Elastic Stack
O Elastic Stack é um conjunto de ferramentas para busca, análise e visualização de dados. Ele é usado para construir soluções de SIEM.
### Splunk
O Splunk é uma plataforma comercial para análise de dados de máquina. Ela é usada para monitoramento, busca e análise de logs.
## Ferramentas de Análise de Segurança de SOAR
### TheHive
O TheHive é uma plataforma de resposta a incidentes de código aberto. Ela permite que equipes de segurança colaborem na investigação e resposta a incidentes.
### Cortex
O Cortex é um mecanismo de análise para TheHive. Ele permite executar analisadores e respondedores para automatizar a resposta a incidentes.
## Ferramentas de Análise de Segurança de Threat Hunting
### MISP
O MISP (Malware Information Sharing Platform) é uma plataforma de código aberto para compartilhamento de inteligência de ameaças. Ela permite que organizações compartilhem indicadores de comprometimento e outras informações de ameaças.
### OpenCTI
O OpenCTI é uma plataforma de código aberto para gerenciamento de inteligência de ameaças. Ela permite que organizações coletem, armazenem e analisem informações sobre ameaças.
## Ferramentas de Análise de Segurança de Red Team
### Cobalt Strike
O Cobalt Strike é uma plataforma comercial para testes de penetração e operações de red team. Ela fornece ferramentas para simular ataques avançados.
### Caldera
O Caldera é uma estrutura de código aberto para automação de operações de red team. Ela permite planejar e executar ataques simulados.
## Ferramentas de Análise de Segurança de Blue Team
### Wazuh
O Wazuh é uma plataforma de segurança de código aberto que fornece detecção de intrusão, monitoramento de integridade e resposta a incidentes.
### TheHive
O TheHive é uma plataforma de resposta a incidentes de código aberto. Ela permite que equipes de segurança colaborem na investigação e resposta a incidentes.
## Ferramentas de Análise de Segurança de Purple Team
### Atomic Red Team
O Atomic Red Team é uma biblioteca```sh
# check
sonar doctor --only daemon_reachable,daemon_protocol,socket_permissions,db_ok
sonar doctor --json --only config_parses | grep -q '"status": "ok"'
sonar doctor --only mcp_registered --project . > /dev/null
```
Cada verificação reporta `ok`, `warn`, `fail` ou `skip`. `skip` significa que não havia
nada para verificar — o Cursor não está instalado, a máquina não tem docker, o
socket é um named pipe no Windows — e nunca conta contra você. O código de saída
é 0 a menos que algo **falhe**, então `sonar doctor` pertence a um script de configuração.
| verificação | o que significa |
| --- | --- |
| `cli_on_path` | o binário que você executou é o que o PATH resolve; nomeia a instalação que o sobrepõe, se não for |
| `cli_version_current` | comparado com o lançamento mais recente, ou `skip` quando o GitHub não está acessível em 2s |
| `config_parses` | o seu `config.yaml` carrega; um erro de sintaxe é reportado com linha, coluna e um cursor |
| `config_dir_writable` | o daemon pode gravar seu log, lock e banco de dados |
| `daemon_reachable` | algo está escutando no socket |
| `daemon_version_matches` | o daemon em execução é a versão do CLI que você está usando |
| `daemon_protocol` | o major do protocolo do daemon corresponde ao desta build |
| `socket_permissions` | o socket é seu e 0600, em um diretório 0700 (`skip` no Windows) |
| `db_ok` | o banco de dados abre, está no schema mais recente e qual o seu tamanho |
| `mcp_registered.{claude_code,cursor,codex}` | o servidor MCP do sonar está na configuração daquele cliente |
| `skills_installed` | a skill incluída está instalada e atual |
| `hooks_installed` | os hooks opcionais do Claude Code estão instalados |
| `project_config` | este projeto tem um `.sonar.yaml` que carrega |
| `docker` | o CLI do docker está presente e seu daemon responde |
| `desktop_installed` | o app desktop está instalado e qual versão (`skip` no Windows) |
| `tray` | o binário obsoleto `sonar-tray` do macOS ainda está presente |
`--fix` aplica apenas os reparos que são seguros de fazer sem supervisão e
pergunta primeiro, a menos que você passe `--yes`: ele move um `config.yaml`
não analisável para `config.yaml.broken-<timestamp>` e escreve um novo template
(nada é jamais excluído), reinicia um daemon que não está em execução e executa
o comando `sonar install mcp|skills|hooks` que a verificação nomeia — a partir do
diretório de trabalho, do jeito que você digitaria, então execute `--fix` dentro
do projeto que você está reparando em vez de apontar `--project` para ele. Depois
ele verifica novamente. Qualquer coisa que ele não tocar — um binário que
sobrepõe no PATH, uma skill que o sonar não escreveu — fica para você com o
comando exato na coluna `fix`.
O app desktop chama as mesmas verificações pelo método `daemon.doctor` do daemon
em vez de invocar processos externos. O daemon executa tudo o que pode a partir
do seu próprio processo; as três verificações que dizem respeito ao binário do
CLI que você invocou (`cli_on_path`, `cli_version_current`,
`daemon_version_matches`) retornam `skip` com um detalhe explicando isso.
### O app desktop
O app Sonar é a mesma imagem em uma janela e na barra de menus ou bandeja do
sistema: grupos na lateral, portas em uma grade com estatísticas ao vivo e
saúde, logs e os botões para tudo acima. Ele fala com o mesmo daemon, então o
CLI e o app nunca discordam. `sonar install desktop` o instala e `sonar tray`
o inicia.
Até o app ser lançado, os tarballs de lançamento do macOS ainda carregam o
antigo binário `sonar-tray` da barra de menus, e `sonar tray` recorre a ele
quando o app não está instalado.
### `sonar install desktop`
O app está em beta e ainda não foi assinado pela Apple, então o CLI o instala:```sh
brew install raskrebs/sonar/sonar && sonar install desktop
```
Esse é todo o setup do testador. O Sonar busca um manifesto de builds publicados,
escolhe o da sua máquina, verifica o sha256 e o tamanho dele, instala-o
e o abre.
**É por isso que a CLI faz o download.** O macOS anexa um atributo de
quarentena a qualquer coisa que um *navegador* salva, e o Gatekeeper se recusa a abrir
um app em quarentena que a Apple não tenha notarizado. Um arquivo que esta CLI baixa nunca
recebe o atributo em primeiro lugar, então o beta abre sem prompt e sem
a dança de clicar com o botão direito e abrir. O Sonar nem define nem remove atributos de quarentena —
não há nada para remover.```sh
sonar install desktop # install and launch
sonar install desktop --no-launch # install only
sonar install desktop --update # update; does nothing if current
sonar install desktop --check # exit 1 when an update is available
sonar install desktop --version 0.1.0-beta.1
sonar install desktop --force # ask a running Sonar to quit first
sonar install desktop --json # for scripts
```
O comando não precisa de rede para dizer o que ele faz:```sh
sonar install desktop --help | grep -- '--no-launch'
# check
```
Onde ele é instalado:
| | |
| --- | --- |
| macOS | `/Applications/Sonar.app`, ou `~/Applications/Sonar.app` quando o primeiro não for gravável (o sonar nunca usa `sudo`) |
| Linux | `~/.local/opt/sonar-desktop/Sonar.AppImage`, além de uma entrada de menu em `~/.local/share/applications` e um link `sonar-desktop` em `~/.local/bin` |
| Windows | ainda não — o comando informa isso e sai com código 1 |
`--dir` substitui o diretório em ambos. No Linux, `--deb` instala o `.deb`
via `apt`/`dpkg` em vez do AppImage, quando a versão publica um.
A instalação é atômica: o novo aplicativo é descompactado ao lado do antigo e
trocado com um rename, então uma falha no download nunca deixa você sem um
aplicativo funcional. Se o aplicativo estiver aberto, o sonar se recusa em vez
de substituir um bundle por baixo dele; `--force` pede que ele saia e espera
até dez segundos.
`sonar install desktop` registra `desktop.installed_version` e
`desktop.installed_path` em `~/.config/sonar/config.yaml`, que é como o `sonar
tray` encontra um aplicativo instalado com `--dir` e como a verificação
`desktop_installed` do `sonar doctor` sabe a versão. De onde vêm os builds é
`desktop.download_base`, substituído por `SONAR_DESKTOP_BASE` e depois por
`--base` — aponte-os para o seu próprio build para testar um.
### `sonar relay`
O relay é o lado servidor do sonar: um pequeno serviço HTTP, executado por nós
para o aplicativo hospedado e publicado como `ghcr.io/raskrebs/sonar-relay`
para que você possa executar o seu próprio. Ele não tem nada a ver com o daemon
local — `sonar serve` monitora suas portas, `sonar relay serve` responde HTTP
para uma frota — e ele vem no mesmo binário apenas para que haja um único
artefato para implantar.
Hoje ele coleta telemetria anônima de produto: um lote de eventos nomeados por
instalação, sem caminhos, sem nomes de host, sem URLs, recusados na porta se um
valor sequer parecer um deles. É o mesmo serviço que mais tarde encerrará
túneis expostos e manterá o login.```sh
sonar relay serve --db ./relay.db --project-keys "$(openssl rand -hex 24)"
```
`docs/RELAY.md` tem as rotas, as regras exatas de validação, o esquema de armazenamento
e um deploy em um único comando atrás do Caddy em qualquer máquina com Docker.
## Migrando dos comandos antigos
Os comandos pré-grupos ainda funcionam e imprimem uma única linha no stderr informando o que
os substituiu. Eles serão removidos em uma versão menor a partir de agora. `SONAR_NO_HINTS=1`
silencia os avisos, e a saída `--json` nunca os inclui.
| Antigo | Novo |
|---|---|
| `sonar run --tag X -- cmd` | `sonar start --group X -- cmd` |
| `sonar runs` | `sonar start --list` |
| `sonar list --tag X` | `sonar list --group X` |
| `sonar kill-all --filter docker` | `sonar kill --all --filter docker` |
| `sonar down X` | `sonar kill -g X` |
| `sonar profile create X` | `sonar init` |
| `sonar profile show X` | `sonar groups X` |
| `sonar up X` (verificava um perfil) | `sonar up X` agora *inicia* o grupo |
| `sonar tray` (app de barra de menus Swift) | `sonar tray` inicia o app de desktop |
Perfis eram um snapshot por máquina das portas; `.sonar.yaml` é versionado com
o projeto. Converta um e leia-o antes de mantê-lo — nada é escrito
para você:```sh
sonar profile list
# check
```
(no input provided)```sh
sonar profile export my-app > .sonar.yaml
```
Um perfil nunca registrou como um serviço inicia, então a proposta tem portas,
nomes e caminhos de health check, e você preenche o `cmd`.
## Solução de problemas
**Algo está errado com o daemon.** `sonar daemon log -f` enquanto você
reproduz o problema, e `sonar daemon status` para pid, uptime e contagem de varreduras. Pare
com `sonar daemon stop`; todo comando de leitura continua funcionando sem ele.
**"daemon indisponível, usando varredura direta".** Nada está escutando no
socket. Isso é normal — leituras não iniciam um daemon. Execute `sonar serve -d` se
quiser um.
**Um socket deixado para trás após uma falha.** `sonar daemon path` mostra isso; iniciar um
daemon remove um obsoleto por conta própria. Se um segundo daemon se recusar a iniciar enquanto
o primeiro não existe mais, `sonar daemon restart` limpa o bloqueio.
**Portas ausentes da lista.** Processos de propriedade de outro usuário são
invisíveis sem privilégios; o sonar informa isso abaixo da tabela. Execute novamente com
`sudo sonar list` para vê-los. No Linux, o `ss` deve estar instalado
(`iproute2`); no Windows, o `netstat` é usado.
**Um kill não fez nada.** Contêineres Docker são interrompidos pelo daemon do
Docker: verifique `docker ps`. Um processo que ignora SIGTERM precisa de `-f`, e um
supervisionado por outra coisa (systemd, Compose `restart: always`) volta
por design — pare o supervisor.
**Nada funciona e você não sabe por quê.** `sonar doctor` verifica o binário,
a configuração, o daemon, o banco de dados e cada integração de uma só vez, e
imprime o comando que corrige cada coisa que encontra.
**Relatando um bug.** Inclua estes itens, além das últimas linhas de `sonar daemon log`:```sh
sonar version
sonar daemon status
sonar doctor --json
# check
```
## Plataformas suportadas
- macOS (usa `lsof`)
- Linux (usa `ss`)
- Windows (usa `netstat`)
O agrupamento precisa do diretório de trabalho de cada processo, e todas as plataformas agora têm
um: `/proc` no Linux, `lsof` no macOS e, no Windows, uma leitura do próprio
PEB do processo. Assim, grupos de raiz do git, `project_root` e nomes baseados em cwd funcionam da mesma forma
em todos os lugares, e o `sonar init` pode propor um `.sonar.yaml` a partir do que está escutando
em qualquer uma das três.
O aplicativo desktop é mais limitado por enquanto: `sonar install desktop` o instala no
macOS (Apple Silicon e Intel) e Linux (x86_64 e aarch64). No Windows, o
comando informa que o aplicativo ainda não está disponível e sai com código 1.
A única lacuna é um `sonar.exe` de 32 bits no Windows de 64 bits: ele não consegue ler a memória de um
processo de 64 bits, então essas portas voltam sem um diretório de trabalho e ficam de fora
do seu grupo de raiz do git. Use a versão de 64 bits — ela lê processos de 64 bits e de 32 bits
igualmente. Em outros lugares, uma porta cujo processo nega acesso (um serviço
executando como outro usuário, um processo protegido do sistema) é simplesmente deixada sem um
diretório de trabalho; o restante da varredura não é afetado.
## Contribuidores
Obrigado a todos que contribuíram para o sonar!
<a href="https://github.com/RasKrebs/sonar/graphs/contributors">
<img src="https://stg.contrib.rocks/image?repo=RasKrebs/sonar" />
</a>