# CatSuite > Laboratório Android gratuito para segurança web e APIs: interceptador, proxy HTTPS, Repetir, Intruso, Descobridor, extensões em JavaScript e fluxos visuais. > Free Android lab for web and API security: interceptor, HTTPS proxy, Repeater, Intruder, Discoverer, JavaScript extensions and visual workflows. CatSuite 1.5.0 · SDK 1.4.0 · NetCatTest. Site, documentação e IDE em português do Brasil e inglês. Cada página da documentação tem uma versão em Markdown: acrescente .md ao endereço. / Website, documentation and IDE in Brazilian Portuguese and English. Every documentation page has a Markdown version: append .md to its URL. ## Páginas / Pages - [CatSuite (pt-BR)](https://netcattest.com/catsuite): CatSuite — Segurança web, APIs e extensões no Android - [CatSuite (en)](https://netcattest.com/catsuite/en): CatSuite — Web security, APIs and extensions on Android - [Documentação](https://netcattest.com/catsuite/docs.md): Documentação oficial e bilíngue do CatSuite: primeiros passos, extensões .catplug, API JavaScript do SDK, fluxos visuais, segurança e CatBridge. - [Documentation](https://netcattest.com/catsuite/en/docs.md): Official bilingual CatSuite documentation: getting started, .catplug extensions, the SDK JavaScript API, visual workflows, security and CatBridge. - [IDE de extensões](https://netcattest.com/catsuite/ide): Escreva, valide, simule e exporte extensões .catplug do CatSuite direto no navegador, com validação igual à do app e laboratório fictício integrado. - [Extension IDE](https://netcattest.com/catsuite/en/ide): Write, validate, simulate and export CatSuite .catplug extensions right in the browser, with the same validation as the app and a built-in fictional lab. - [Google Play](https://play.google.com/store/apps/details?id=br.com.netcattest.catsuite.app) - [GitHub](https://github.com/netcattest/catsuite): repositório oficial do CatSuite / official CatSuite repository - [CatBridge no GitHub / on GitHub](https://github.com/netcattest/catsuite/tree/main/catbridge): código e instruções do conector opcional / optional connector source and instructions - [CatBridge para Windows / for Windows](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-windows-amd64.zip): pacote portátil / portable package - [CatBridge para Linux / for Linux](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-linux-amd64.tar.gz): pacote portátil / portable package - [SDK 1.4.0 no GitHub / on GitHub](https://github.com/netcattest/catsuite/tree/main/sdk): tipos, runtime de referência, esquemas, exemplos e fluxos / types, reference runtime, schemas, examples and workflows - [SDK 1.4.0 em ZIP / as ZIP](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/catsuite-sdk-1.4.0.zip): download do SDK de extensões / extension SDK download - [CatSuite Studio no GitHub / on GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode): código da extensão para VS Code com o SDK / VS Code extension source with the SDK - [CatSuite Studio no Marketplace / on the Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio): instalar a extensão no VS Code / install the extension in VS Code ## Módulos / Modules - Interceptador / Interceptor: Revise cada request e response antes do encaminhamento e mantenha o histórico organizado por domínio. / Review every request and response before it is forwarded and keep history organized by domain. - Navegador / Browser: Um navegador técnico com as ferramentas de inspeção que você usaria no computador. / A technical browser with the inspection tools you would use on a computer. - Proxy de Rede / Network Proxy: Leve o tráfego HTTP e HTTPS do aparelho para o laboratório com certificado próprio. / Bring the device’s HTTP and HTTPS traffic into the lab with its own certificate. - Repetir / Repeater: Edite requests brutas, reenvie quantas vezes quiser e compare respostas lado a lado. / Edit raw requests, resend as often as you need and compare responses side by side. - Intruso / Intruder: Marque posições, escolha wordlists e conduza testes no seu ritmo, com pausa e retomada. / Mark positions, pick wordlists and run tests at your own pace, with pause and resume. - Descobridor / Discoverer: Encontre caminhos, parâmetros e endpoints em alvos autorizados, com controle fino de ritmo. / Find paths, parameters and endpoints on authorized targets with fine-grained pacing. - Decodificar / Decoder: Transforme e interprete os formatos que aparecem no tráfego, com detecção automática. / Transform and interpret the formats that show up in traffic, with automatic detection. - SSL/TLS / SSL/TLS: Triagem de certificado e conexão segura sem sair do laboratório. / Certificate and secure connection triage without leaving the lab. - História / History: Linha do tempo da sessão e notas locais para não perder nenhuma evidência. / A session timeline and local notes so no evidence gets lost. - Extensões / Extensions: Estenda os módulos com JavaScript e transforme rotinas em fluxos reproduzíveis. / Extend the modules with JavaScript and turn routines into reproducible workflows. ## Documentação em português - [Introdução ao CatSuite](https://netcattest.com/catsuite/docs/introducao.md): O que é o CatSuite, como os módulos do laboratório se conectam e o que mudou na versão 1.5.0 com extensões, fluxos visuais e CatBridge. - [Primeiros passos no CatSuite](https://netcattest.com/catsuite/docs/primeiros-passos.md): Instale o CatSuite, conheça a navegação principal, capture sua primeira request e exporte evidências em TXT, cURL, JSON ou HAR. - [Downloads e SDK](https://netcattest.com/catsuite/docs/downloads.md): Onde baixar o CatSuite, o CatBridge para Windows e Linux, o SDK de extensões 1.4.0 e o CatSuite Studio para VS Code, com os links oficiais e as somas SHA-256. - [Módulos do CatSuite](https://netcattest.com/catsuite/docs/modulos.md): Conheça os módulos do CatSuite: Interceptador, Proxy de Rede, Navegador, Repetir, Intruso e Descobridor, com glossário e como usar e configurar cada um. - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador.md): Interceptador do CatSuite: como usar e configurar a fila, editar requests e responses, Site Map, histórico com filtros e exportação HAR, JSON, TXT e cURL. - [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy.md): Proxy de Rede do CatSuite: como configurar o proxy MITM, o certificado CA, a Captura Total de HTTP e HTTPS, as regras de substituição e a pausa de responses. - [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador.md): Guia completo do módulo Navegador do CatSuite: monitor de rede, código-fonte, inspecionar elemento, modificador de DOM, JWT/Base64, User-Agent e spoof de IP. - [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes.md): CatEyes do CatSuite: como usar e configurar a detecção de tecnologias da página, o nível de confiança por detecção e os sinais de CVE da base local. - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir.md): Guia completo do módulo Repetir do CatSuite: como usar o editor HTTP com realce, autocompletar de headers, reenviar, comparar respostas e configurar o SSL/TLS. - [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso.md): Intruso do CatSuite: como usar e configurar os marcadores de payload, wordlists, geradores, ritmo do ataque e filtro de resultados por status e tamanho. - [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor.md): Descobridor do CatSuite: como usar e configurar a descoberta de caminhos, parâmetros e endpoints com wordlists, métodos HTTP, ritmo controlado e backoff 429. - [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar.md): Decodificar do CatSuite: como usar e configurar a autodetecção de JWT, Base64, URL, Hex, HTML Entities e Binary, além do inspetor JWT/JWE e hashes MD5 e SHA. - [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls.md): Analisador SSL/TLS do CatSuite: como usar e configurar a triagem de handshake, versão do TLS, cipher suite, cadeia até a raiz, fingerprints e validade. - [História e notas](https://netcattest.com/catsuite/docs/modulos/historia.md): Guia de História e notas do CatSuite: como usar e configurar a linha do tempo de requisições, filtros, busca, bloco de notas e exportação de evidências. - [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists.md): Wordlists e payloads do CatSuite: como importar listas .txt, usar wordlists padrão, configurar o gerador de payload e aplicar no Intruso e no Descobridor. - [Extensões do CatSuite](https://netcattest.com/catsuite/docs/extensoes.md): Como funcionam as extensões .catplug: motor QuickJS isolado, permissões, ciclo de vida, pontos de integração e limites da API v1. - [Manifesto do pacote .catplug](https://netcattest.com/catsuite/docs/extensoes/manifesto.md): Estrutura do arquivo .catplug, campos do manifest.json, regras de validação, permissões, destinos, hashes SHA-256 e o formato 2. - [SDK de extensões 1.4.0](https://netcattest.com/catsuite/docs/extensoes/sdk.md): O SDK de extensões 1.4.0 do CatSuite: onde baixar, o que vem no pacote, o objeto global cat, os exemplos, os modelos de fluxo e as capacidades do CatBridge. - [Referência da API JavaScript](https://netcattest.com/catsuite/docs/extensoes/api.md): O objeto global cat do SDK 1.4: mensagens HTTP, eventos, hooks de alteração, envios, APIs externas, laboratório, recursos e utilidades. - [Interface, dados e achados](https://netcattest.com/catsuite/docs/extensoes/interface-e-dados.md): Comandos, menus de mensagem, abas nativas e componentes; armazenamento, configurações, credenciais e achados com evidência. - [IDE web de extensões](https://netcattest.com/catsuite/docs/extensoes/ide.md): Como usar a IDE do CatSuite no navegador para criar extensões do zero ou a partir de exemplos, validar, simular, inspecionar e exportar pacotes .catplug. - [CatSuite Studio para VS Code](https://netcattest.com/catsuite/docs/extensoes/vscode.md): CatSuite Studio para VS Code: como instalar e usar a extensão para criar, validar, testar e assinar plugins .catplug com sugestões do SDK do CatSuite. - [Fluxos visuais com .catflow](https://netcattest.com/catsuite/docs/fluxos.md): Monte análises em grafo com etapas, parsers, condições e reuniões; aprovações por revisão, artefatos rastreáveis, checkpoints e limites. - [Segurança, cofre e proteção de dados](https://netcattest.com/catsuite/docs/seguranca.md): Isolamento das extensões, níveis PUBLIC, PROTECTED e SECRET, cofre biométrico, assinaturas Ed25519, envelope CATSEAL2, backups e recuperação. - [CatBridge, o conector opcional](https://netcattest.com/catsuite/docs/catbridge.md): O que é o CatBridge, como baixar para Windows e Linux, como parear com o código numérico, a arquitetura isolada e o Protocol 2 com mensagens assinadas. - [Instalar e parear o CatBridge](https://netcattest.com/catsuite/docs/catbridge/instalar.md): Como baixar o CatBridge para Windows ou Linux, iniciar o serviço, parear o celular com o código numérico de 24 dígitos e revogar aparelhos com segurança. - [Catálogo de capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas.md): As capacidades tipadas do CatBridge, os executores fixados, os perfis read-only, external-approved e active-approved, os orçamentos, os templates revisados e os dados que cada ferramenta recebe. - [Códigos de erro do SDK](https://netcattest.com/catsuite/docs/referencia/erros.md): Lista dos códigos E_* estáveis retornados por extensões, pacotes, fluxos e conectores do CatSuite, com o significado de cada um. ## Documentation in English - [Introduction to CatSuite](https://netcattest.com/catsuite/en/docs/introduction.md): What CatSuite is, how the lab modules connect and what changed in version 1.5.0 with extensions, visual workflows and CatBridge. - [Getting started with CatSuite](https://netcattest.com/catsuite/en/docs/getting-started.md): Install CatSuite, learn the main navigation, capture your first request and export evidence as TXT, cURL, JSON or HAR. - [Downloads and SDK](https://netcattest.com/catsuite/en/docs/downloads.md): Where to download CatSuite, CatBridge for Windows and Linux, the 1.4.0 extension SDK and CatSuite Studio for VS Code, with official links and SHA-256. - [CatSuite modules](https://netcattest.com/catsuite/en/docs/modules.md): Explore the CatSuite modules: Interceptor, Network Proxy, Browser, Repeater, Intruder and Discoverer, with a glossary and how to use and configure each one. - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor.md): CatSuite Interceptor: how to use and configure the queue, edit requests and responses, Site Map, history with filters and HAR, JSON, TXT and cURL export. - [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy.md): CatSuite Network Proxy: how to configure the MITM proxy, the CA certificate, Full Capture of HTTP and HTTPS, the replacement rules and response pausing. - [Browser](https://netcattest.com/catsuite/en/docs/modules/browser.md): Guide to the CatSuite Browser module: network monitor, page source, inspect element, DOM modifier, JWT/Base64, User-Agent, desktop mode and IP spoofing. - [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes.md): CatSuite CatEyes: how to use and configure page technology detection, the confidence level per detection and the local-database CVE signals to review. - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater.md): Complete guide to the CatSuite Repeater module: how to use the highlighted HTTP editor, header autocomplete, resend, compare responses and configure SSL/TLS. - [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder.md): CatSuite Intruder: how to use and configure payload markers, wordlists, generators, payload processors, attack pacing and result filtering by status and size. - [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer.md): CatSuite Discoverer: how to use and configure path, parameter and endpoint discovery with wordlists, HTTP methods, controlled pacing and automatic 429 backoff. - [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder.md): CatSuite Decoder: how to use and configure auto-detection of JWT, Base64, URL, Hex, HTML Entities and Binary, plus the JWT/JWE inspector and MD5 and SHA hashes. - [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls.md): CatSuite SSL/TLS Analyzer: how to use and configure handshake triage, TLS version, cipher suite, chain validation to the root, fingerprints and expiry. - [History and notes](https://netcattest.com/catsuite/en/docs/modules/history.md): Guide to the CatSuite History and notes module: how to use and configure the request timeline, filters, search, the notepad and evidence export on your device. - [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists.md): Wordlists and payloads in CatSuite: how to import .txt lists, use default wordlists, configure the payload generator and apply them in Intruder and Discovery. - [CatSuite extensions](https://netcattest.com/catsuite/en/docs/extensions.md): How .catplug extensions work: isolated QuickJS engine, permissions, lifecycle, integration points and API v1 limits. - [The .catplug package manifest](https://netcattest.com/catsuite/en/docs/extensions/manifest.md): Structure of the .catplug file, manifest.json fields, validation rules, permissions, destinations, SHA-256 hashes and format 2. - [Extension SDK 1.4.0](https://netcattest.com/catsuite/en/docs/extensions/sdk.md): The CatSuite 1.4.0 extension SDK: where to download it, what is in the package, the global cat object, the examples, the workflow templates and CatBridge capabilities. - [JavaScript API reference](https://netcattest.com/catsuite/en/docs/extensions/api.md): The global cat object of SDK 1.4: HTTP messages, events, mutation hooks, sends, external APIs, laboratory, resources and utilities. - [Interface, data and findings](https://netcattest.com/catsuite/en/docs/extensions/ui-and-data.md): Commands, message menus, native tabs and components; storage, settings, credentials and findings with evidence. - [Web extension IDE](https://netcattest.com/catsuite/en/docs/extensions/ide.md): How to use the CatSuite IDE in the browser to create extensions from scratch or from examples, validate, simulate, inspect and export .catplug packages. - [CatSuite Studio for VS Code](https://netcattest.com/catsuite/en/docs/extensions/vscode.md): CatSuite Studio for VS Code: how to install and use the extension to create, validate, test and sign .catplug plugins with CatSuite SDK suggestions. - [Visual workflows with .catflow](https://netcattest.com/catsuite/en/docs/workflows.md): Build graph-based analyses with steps, parsers, conditions and joins; revision-based approvals, traceable artifacts, checkpoints and limits. - [Security, vault and data protection](https://netcattest.com/catsuite/en/docs/security.md): Extension isolation, PUBLIC, PROTECTED and SECRET levels, biometric vault, Ed25519 signatures, the CATSEAL2 envelope, backups and recovery. - [CatBridge, the optional connector](https://netcattest.com/catsuite/en/docs/catbridge.md): What CatBridge is, how to download it for Windows and Linux, how numeric code pairing works, the isolated architecture and Protocol 2 with signed messages. - [Install and pair CatBridge](https://netcattest.com/catsuite/en/docs/catbridge/install.md): How to download CatBridge for Windows or Linux, start the service, pair your phone with the 24-digit numeric code, use the flags and revoke devices safely. - [Capability catalog and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools.md): CatBridge typed capabilities, pinned executors, the read-only, external-approved and active-approved profiles, budgets, reviewed templates and the data each tool receives. - [SDK error codes](https://netcattest.com/catsuite/en/docs/reference/errors.md): The stable E_* codes returned by CatSuite extensions, packages, workflows and connectors, with the meaning of each one. ## Perguntas frequentes / FAQ - **O que é o CatSuite?** Um laboratório Android gratuito para segurança web, testes de API e QA. Ele reúne interceptador, proxy de rede, navegador técnico, Repetir, Intruso, Descobridor, decodificador e analisador SSL/TLS em um só fluxo. - **A Cat IA está disponível?** Ainda não. A Cat IA está em reconstrução e voltará em uma próxima versão. Enquanto isso, todos os outros módulos e as extensões funcionam normalmente. - **O que são extensões?** Pacotes .catplug com código JavaScript executado pelo QuickJS em um serviço Android isolado. Elas podem observar e alterar tráfego, criar abas e comandos, salvar dados e registrar achados — apenas com as permissões que você aprovar. - **Uma extensão pode acessar meus arquivos ou executar programas?** Não. O SDK não oferece acesso geral a arquivos, execução de processos, DOM ou fetch. Envios de rede só vão para destinos declarados e aprovados, com TLS validado pelo Android. - **Preciso do CatBridge?** Não. O CatBridge é opcional e serve para levar ferramentas como httpx, Katana, Schemathesis e Nuclei aos fluxos visuais. Todo o resto funciona apenas com o app. - **O CatSuite envia meus dados para terceiros?** Não automaticamente. Histórico, notas, sessões e dados de extensões ficam no seu celular. Exportar, compartilhar ou enviar algo depende sempre de uma ação sua. - **Onde baixar?** O aplicativo está na Google Play, gratuitamente, sem assinatura e sem paywall. O CatBridge (Windows e Linux) e o SDK de extensões 1.4.0 ficam no repositório oficial github.com/netcattest/catsuite, e a extensão CatSuite Studio está no Marketplace do Visual Studio Code. - **Posso criar extensões no VS Code?** Sim. Instale a extensão CatSuite Studio pelo Marketplace do Visual Studio Code: ela traz sugestões do SDK, validação do projeto, prévia local com fixtures e geração de pacotes .catplug assinados. Se preferir não instalar nada, use a IDE web. - **What is CatSuite?** A free Android lab for web security, API testing and QA. It brings an interceptor, network proxy, technical browser, Repeater, Intruder, Discoverer, decoder and SSL/TLS analyzer into one workflow. - **Is Cat AI available?** Not yet. Cat AI is being rebuilt and will return in a future version. Meanwhile, every other module and the extensions work as usual. - **What are extensions?** .catplug packages with JavaScript code run by QuickJS inside an isolated Android service. They can observe and change traffic, create tabs and commands, store data and record findings — only with the permissions you approve. - **Can an extension access my files or run programs?** No. The SDK offers no general file access, process execution, DOM or fetch. Network sends only reach declared and approved destinations, with TLS validated by Android. - **Do I need CatBridge?** No. CatBridge is optional and brings tools such as httpx, Katana, Schemathesis and Nuclei into visual workflows. Everything else works with the app alone. - **Does CatSuite send my data to third parties?** Not automatically. History, notes, sessions and extension data stay on your phone. Exporting, sharing or sending anything always depends on your action. - **Where can I get it?** The app is on Google Play, for free, with no subscription and no paywall. CatBridge (Windows and Linux) and the 1.4.0 extension SDK are in the official repository github.com/netcattest/catsuite, and the CatSuite Studio extension is on the Visual Studio Code Marketplace. - **Can I build extensions in VS Code?** Yes. Install the CatSuite Studio extension from the Visual Studio Code Marketplace: it brings SDK suggestions, project validation, a local preview with fixtures and signed .catplug package builds. If you prefer not to install anything, use the web IDE. --- # Introdução ao CatSuite > O que é o CatSuite, como os módulos do laboratório se conectam e o que mudou na versão 1.5.0 com extensões, fluxos visuais e CatBridge. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/introducao - Seção: Começar - Atualizado: 2026-10-05 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/introduction O **CatSuite** é um laboratório Android gratuito para segurança web, testes de API e QA. Ele reúne em um só fluxo as ferramentas que normalmente ficam espalhadas entre computador e celular: captura de tráfego, edição e reenvio de requests, testes com wordlists, descoberta de caminhos, decodificação e análise de TLS. > [!IMPORTANTE] > Use o CatSuite apenas em ambientes próprios, estudos, CTFs e testes explicitamente autorizados. ## Como o laboratório se organiza | Módulo | Para que serve | |---|---| | Interceptador | Pausar, revisar e decidir sobre requests e responses, com histórico, Site Map e exportação. | | Navegador | Navegador técnico com monitor de rede, código-fonte, inspeção, modificador de DOM e CatEyes. | | Proxy de Rede | Captura de tráfego HTTP e HTTPS com certificado CA próprio e regras de substituição. | | Repetir | Edição bruta e reenvio de requests, com comparação de respostas. | | Intruso | Testes com marcadores `$CAT$`, wordlists, pausa e retomada. | | Descobridor | Descoberta de caminhos, parâmetros e endpoints em alvos autorizados. | | Decodificar | JWT, Base64, URL, Hex, HTML Entities, Binary e hashes. | | Analisador SSL/TLS | Handshake, cadeia de certificados e fingerprints. | | História e Bloco de notas | Linha do tempo da sessão e notas locais. | Tudo o que você captura em um módulo pode seguir para outro com um toque: uma request do histórico abre no Repetir, vira base para o Intruso ou entra em uma extensão. ## Novidades da versão 1.5.0 - **Extensões** — pacotes `.catplug` em JavaScript executados pelo QuickJS em um serviço Android isolado. Veja [Extensões do CatSuite](https://netcattest.com/catsuite/docs/extensoes). - **Fluxos visuais** — grafos `.catflow` com etapas, condições, reuniões e execuções reproduzíveis. Veja [Fluxos visuais](https://netcattest.com/catsuite/docs/fluxos). - **CatBridge** — conector opcional que leva httpx, Katana, Schemathesis e Nuclei aos fluxos. Veja [CatBridge](https://netcattest.com/catsuite/docs/catbridge). - **Cofre e proteção** — níveis PUBLIC, PROTECTED e SECRET com biometria forte. Veja [Segurança](https://netcattest.com/catsuite/docs/seguranca). > [!NOTA] Cat IA em breve > A Cat IA está fora desta versão enquanto é reconstruída e voltará em uma atualização futura. Todos os outros módulos e as extensões funcionam normalmente. ## Princípios do laboratório 1. **Ação explícita** — o aplicativo não gera tráfego por conta própria; capturas, envios e análises dependem de você. 2. **Dados no aparelho** — histórico, notas, sessões e dados de extensões ficam no celular. 3. **Menor privilégio** — extensões começam desativadas e só recebem as capacidades aprovadas. 4. **Bilíngue** — interface, extensões e esta documentação em português e inglês. ## Próximos passos - [Primeiros passos no CatSuite](https://netcattest.com/catsuite/docs/primeiros-passos) - [Criar sua primeira extensão](https://netcattest.com/catsuite/docs/extensoes) - [Abrir a IDE de extensões no navegador](https://netcattest.com/catsuite/ide) --- # Primeiros passos no CatSuite > Instale o CatSuite, conheça a navegação principal, capture sua primeira request e exporte evidências em TXT, cURL, JSON ou HAR. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/primeiros-passos - Seção: Começar - Atualizado: 2026-10-05 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/getting-started ## 1. Instale pela Google Play O CatSuite é gratuito, sem assinatura e sem paywall. [Baixe na Google Play](https://play.google.com/store/apps/details?id=br.com.netcattest.catsuite.app) e abra o aplicativo. ## 2. Primeira abertura Na tela inicial, toque em **INICIAR**. No primeiro acesso, o aplicativo apresenta os termos de uso e a seleção de módulos. Você pode ativar História, Bloco de notas, Descobridor, Analisador SSL/TLS e Proxy de Rede agora ou depois, em **Configurações**. ## 3. Navegação principal A barra inferior tem três entradas: | Entrada | O que abre | |---|---| | INTERCEPTADOR | Interceptar, Histórico, Site Map e opções do módulo | | NAVEGADOR | O navegador técnico do laboratório | | MENU | Módulos adicionais: Repetir, Intruso, Descobridor, História, Bloco de notas, Decodificar, Analisador SSL/TLS, Proxy de Rede, Configurações e Extensões | ## 4. Capture sua primeira request 1. Abra o **Navegador** e acesse um alvo autorizado. 2. Volte ao **Interceptador** e abra o **Histórico**. 3. Toque em uma request para ver headers, corpo e resposta. 4. Use **Repetir** para reenviar com alterações ou **Intruso** para testar variações. > [!DICA] > No Intruso, inclua `$CAT$` na request para marcar onde a wordlist será aplicada. ## 5. Exporte evidências O histórico pode ser exportado nos formatos abaixo. Exportar e compartilhar sempre dependem de uma ação sua. | Formato | Conteúdo | |---|---| | TXT | Histórico completo em texto organizado | | cURL .txt | Comandos cURL completos, incluindo `-X`, `-H` e `-d` | | JSON | Dados estruturados para análise e automação | | .HAR | Arquivo compatível com ferramentas de análise de tráfego HTTP | ## 6. Proteja a sessão Em **Configurações** você controla a biometria ao iniciar, o bloqueio por inatividade e a proteção contra captura de tela. ## Próximo passo Quando dominar os módulos, transforme suas rotinas em código: [Extensões do CatSuite](https://netcattest.com/catsuite/docs/extensoes). --- # Downloads e SDK > Onde baixar o CatSuite, o CatBridge para Windows e Linux, o SDK de extensões 1.4.0 e o CatSuite Studio para VS Code, com os links oficiais e as somas SHA-256. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/downloads - Seção: Começar - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/downloads Tudo que você precisa para usar o CatSuite e escrever extensões, reunido em um só lugar. O aplicativo é **gratuito**, sem assinatura e sem paywall, e as ferramentas para desenvolvedores ficam em endereços oficiais: o **GitHub** para os downloads e o código e o **Marketplace do Visual Studio Code** para a extensão CatSuite Studio. | O que | Download oficial | |---|---| | Aplicativo CatSuite (Android) | [Google Play](https://play.google.com/store/apps/details?id=br.com.netcattest.catsuite.app) | | CatBridge para Windows 64 bits | [catbridge-windows-amd64.zip](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-windows-amd64.zip) | | CatBridge para Linux 64 bits | [catbridge-linux-amd64.tar.gz](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-linux-amd64.tar.gz) | | SDK de extensões 1.4.0 | [catsuite-sdk-1.4.0.zip](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/catsuite-sdk-1.4.0.zip) | | CatSuite Studio 1.2.0 (VS Code) | [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) ou [catsuite-studio-1.2.0.vsix](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catsuite-studio-1.2.0.vsix) | | IDE de extensões no navegador | [IDE web](https://netcattest.com/catsuite/ide) | ## Aplicativo CatSuite O CatSuite é um aplicativo **Android**. Baixe pela loja oficial: - [Google Play — CatSuite](https://play.google.com/store/apps/details?id=br.com.netcattest.catsuite.app) Todos os módulos — interceptador, navegador, proxy de rede, Repetir, Intruso, Descobridor, Decodificar, Analisador SSL/TLS, extensões e fluxos — já vêm no aplicativo. Os dados ficam no aparelho. Comece por [Primeiros passos](https://netcattest.com/catsuite/docs/primeiros-passos). > [!NOTA] > Versão atual do aplicativo: **1.5.0**. SDK de extensões: **1.4.0** · API v1. A API v1 permanece compatível em todas as versões do SDK. ## Repositório oficial no GitHub O repositório [github.com/netcattest/catsuite](https://github.com/netcattest/catsuite) reúne o código-fonte e os downloads das ferramentas para desenvolvedores: | Pasta | O que contém | |---|---| | [catbridge](https://github.com/netcattest/catsuite/tree/main/catbridge) | O conector opcional CatBridge, em Go, com instruções de uso e pareamento. | | [sdk](https://github.com/netcattest/catsuite/tree/main/sdk) | O SDK de extensões 1.4.0: tipos, runtime de referência, esquemas, exemplos e modelos de fluxo. | | [catsuite-vscode](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) | O código da extensão CatSuite Studio para VS Code. | Os arquivos prontos ficam nas versões publicadas do repositório, cada uma com o seu arquivo de somas SHA-256: | Versão publicada | Arquivos | Verificação | |---|---|---| | `sdk-1.4.0` | `catsuite-sdk-1.4.0.zip` | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/SHA256SUMS.txt) | | `tools-1.2.0` | `catbridge-windows-amd64.zip`, `catbridge-linux-amd64.tar.gz`, `catsuite-studio-1.2.0.vsix` | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/SHA256SUMS.txt) | ### Confira a integridade Compare o SHA-256 de cada arquivo baixado com o valor publicado no `SHA256SUMS.txt` da mesma versão. ```powershell Get-FileHash .\catsuite-sdk-1.4.0.zip -Algorithm SHA256 ``` ```bash sha256sum -c --ignore-missing SHA256SUMS.txt ``` > [!AVISO] > Baixe somente do endereço oficial `github.com/netcattest/catsuite` e instale o CatSuite Studio pelo Marketplace oficial ou pelo VSIX publicado no repositório. Se o hash não bater, apague o arquivo e baixe de novo. ## SDK de extensões 1.4.0 O SDK reúne tudo para criar plugins do CatSuite: os tipos da API, o runtime de referência, os esquemas, **quinze exemplos editáveis** e **seis modelos de fluxo**. - [Baixar o SDK 1.4.0 (ZIP)](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/catsuite-sdk-1.4.0.zip) - [Explorar a pasta sdk no GitHub](https://github.com/netcattest/catsuite/tree/main/sdk) - [Guia completo do SDK](https://netcattest.com/catsuite/docs/extensoes/sdk) O ZIP extrai a pasta `catsuite-sdk`. Não é preciso instalar nada no aparelho para executar extensões: o motor **QuickJS** roda dentro do aplicativo e o objeto global `cat` já está disponível para o seu código. Para escrever, escolha onde prefere trabalhar: - **No VS Code**, com o [CatSuite Studio](https://netcattest.com/catsuite/docs/extensoes/vscode): sugestões do SDK, validação, prévia local e pacotes `.catplug` assinados. - **No navegador**, com a [IDE de extensões](https://netcattest.com/catsuite/ide): editor com realce, autocompletar, validação, simulador e exportação de `.catplug`, sem instalar nada. - **Consulte o contrato** na [Referência da API JavaScript](https://netcattest.com/catsuite/docs/extensoes/api) e no [Manifesto e pacote .catplug](https://netcattest.com/catsuite/docs/extensoes/manifesto). ```ts declare const cat: { readonly apiVersion: 1; readonly sdkVersion: "1.4.0"; events: { on(name: "http.request" | "http.response" | "http.complete", handler: (message: CatMessage) => void | Promise): void }; proxy: { onRequest(handler: (m: CatMessage) => CatMessage | void): void; onResponse(handler: (m: CatMessage) => CatMessage | void): void }; http: { send(request: CatRequest): Promise }; ui: { tab: { register(options: { id: string; title: CatText; components: CatComponent[] }): void } }; findings: { add(finding: CatFinding): Promise }; }; ``` ## CatSuite Studio para VS Code O **CatSuite Studio** é a extensão oficial do CatSuite para o Visual Studio Code: sugestões do SDK ao digitar `cat.`, modelos prontos, validação contínua, prévia local com fixtures e geração de pacotes `.catplug` assinados. - [Instalar pelo Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) - [Baixar o VSIX 1.2.0](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catsuite-studio-1.2.0.vsix) - [Código-fonte no GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) Pelo Marketplace, use a visão **Extensões** do VS Code e busque por **CatSuite Studio**, ou a linha de comando: ```bash code --install-extension NetCatTest.catsuite-studio ``` Com o VSIX baixado, abra **Extensões → ⋯ → Instalar do VSIX** no VS Code e selecione o arquivo, ou use a linha de comando: ```bash code --install-extension catsuite-studio-1.2.0.vsix ``` O CatSuite Studio exige o **Visual Studio Code 1.100.0 ou superior**. Veja o [guia completo do CatSuite Studio](https://netcattest.com/catsuite/docs/extensoes/vscode). ## IDE de extensões A [IDE web](https://netcattest.com/catsuite/ide) roda inteiramente no navegador: nada é enviado para servidores e o simulador não faz conexões de rede. Você cria do zero ou a partir de um exemplo, valida, executa em um simulador fiel ao aplicativo e exporta um `.catplug` pronto para importar no CatSuite. Veja o [guia completo da IDE](https://netcattest.com/catsuite/docs/extensoes/ide). ## Conector CatBridge O [CatBridge](https://netcattest.com/catsuite/docs/catbridge) é **opcional** e roda no **seu** computador. A distribuição pronta não exige Go: baixe o pacote do seu sistema, extraia e inicie o serviço. O pareamento usa um **código numérico de 24 dígitos**, sem QR Code. O passo a passo está em [Instalar e parear o CatBridge](https://netcattest.com/catsuite/docs/catbridge/instalar), e o catálogo de ferramentas em [Capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas). ## Documentação para leitura automática Toda página desta documentação tem uma versão em **Markdown**: acrescente `.md` ao endereço. Há também um índice em texto para modelos de linguagem: - [llms.txt do CatSuite](https://netcattest.com/catsuite/llms.txt) — índice bilíngue do aplicativo e da documentação. - [llms-full.txt](https://netcattest.com/catsuite/llms-full.txt) — documentação completa em português e inglês em um único arquivo. ## Próximo passo - [SDK de extensões 1.4.0](https://netcattest.com/catsuite/docs/extensoes/sdk) - [CatSuite Studio para VS Code](https://netcattest.com/catsuite/docs/extensoes/vscode) - [Instalar e parear o CatBridge](https://netcattest.com/catsuite/docs/catbridge/instalar) --- # Módulos do CatSuite > Conheça os módulos do CatSuite: Interceptador, Proxy de Rede, Navegador, Repetir, Intruso e Descobridor, com glossário e como usar e configurar cada um. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules Os **módulos do CatSuite** formam um laboratório completo de segurança web e testes de API dentro de um único aplicativo Android. O **Interceptador** e o **Proxy de Rede** capturam requests e responses, o **Navegador** e o **CatEyes** exploram páginas e identificam tecnologias, o **Repetir** e o **Intruso** reenviam e automatizam variações, o **Descobridor** revela caminhos e parâmetros, o **Decodificar** traduz tokens e hashes, o **SSL/TLS** faz a triagem da conexão segura, as **Wordlists e payloads** alimentam os ataques locais e a **História** guarda a linha do tempo e as notas. Esta página apresenta cada módulo, explica os conceitos que aparecem em todos eles, mostra como usar e configurar o conjunto e indica qual módulo escolher em cada etapa do trabalho. > [!IMPORTANTE] > Use os módulos ativos (Proxy de Rede, Repetir, Intruso e Descobridor) somente em ambientes próprios, estudos, CTFs e sistemas que você tem autorização por escrito para testar. Veja [Segurança e uso responsável](https://netcattest.com/catsuite/docs/seguranca). ## Os módulos do CatSuite e para que servem Todos os módulos operam no mesmo **laboratório local**: o tráfego é capturado, analisado e reenviado no próprio aparelho, os dados ficam no dispositivo e você escolhe os alvos autorizados. A tabela resume cada módulo, para que ele serve e onde abri-lo no app. | Módulo | Para que serve | Onde abrir | | --- | --- | --- | | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) | Pausar, revisar e editar cada request e response, com histórico, Site Map, comparação A/B e exportação | Barra inferior: **INTERCEPTADOR** | | [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | Levar o tráfego HTTP e HTTPS de outros aparelhos e apps ao laboratório, com CA própria e regras de substituição | **MENU** | | [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) | Navegador técnico com monitor de rede, código-fonte, inspecionar elemento, modificador de DOM e User-Agent | Barra inferior: **NAVEGADOR** | | [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes) | Fingerprint de tecnologias da página aberta, com nível de confiança e sinais de CVE | Dentro do Navegador | | [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) | Editar a request bruta, reenviar quantas vezes quiser e comparar respostas | **MENU** | | [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) | Enviar payloads em posições marcadas, com wordlists, gerador, processadores e filtros | **MENU** | | [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) | Descobrir caminhos, parâmetros e endpoints com wordlists e ritmo controlado | **MENU** | | [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) | Converter JWT, Base64, URL, Hex, HTML Entities e Binary e gerar hashes | **MENU** | | [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) | Triagem de handshake, cadeia de certificados e fingerprints | **MENU** (Analisador SSL/TLS) | | [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists) | Gerenciar wordlists padrão e importadas e o gerador de payload | **Configurações > Wordlist** | | [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) | Linha do tempo da sessão e bloco de notas com exportação | **MENU** (História e Bloco de notas) | > [!DICA] > Se você nunca usou o CatSuite, comece pelos [Primeiros passos](https://netcattest.com/catsuite/docs/primeiros-passos): eles mostram a primeira abertura, a navegação principal e a primeira request capturada. Depois volte a esta página para escolher o próximo módulo. ## Conceitos essenciais: glossário dos módulos Os mesmos termos aparecem em quase todas as telas do CatSuite. O glossário abaixo explica cada um e aponta para o módulo em que ele é mais importante. | Termo | O que significa | Onde aprofundar | | --- | --- | --- | | **Request** | A mensagem que o cliente envia ao servidor: linha inicial (método, caminho e versão), headers, uma linha em branco e o corpo opcional. | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) | | **Response** | A resposta do servidor: linha de status, headers e corpo. O Interceptador pode pausá-la para edição antes de chegar ao cliente. | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) | | **Proxy** | Um intermediário: o cliente envia as requisições ao CatSuite, que as encaminha ao destino e devolve a resposta. | [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | | **MITM** | *Man-in-the-middle*: o proxy fica no meio da conversa e consegue ler, registrar e alterar cada mensagem autorizada. | [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | | **Certificado CA** | A autoridade certificadora própria do laboratório. Instalada como confiável no cliente, permite descriptografar o HTTPS daquele aparelho. | [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | | **Wordlist** | Arquivo de texto com uma entrada por linha. Cada linha vira um candidato testado contra o alvo. | [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists) | | **Payload** | Cada valor concreto que sai de uma wordlist ou de um gerador e entra na requisição. | [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso), [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists) | | **Marcador `$CAT$`** | O ponto exato em que cada palavra da wordlist entra. No Descobridor ele vai na URL base; no Intruso as posições são marcadas pelos botões e aparecem entre `§`. | [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor), [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) | | **Fingerprint** | Impressão digital. No CatEyes, a identificação de tecnologias por evidências; no Proxy e no SSL/TLS, o identificador único de um certificado. | [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes), [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) | | **CVE** | Identificador público de uma vulnerabilidade conhecida. O CatEyes cruza tecnologias com versão contra uma base local e mostra sinais de CVE para revisão. | [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes) | | **HAR** | *HTTP Archive*: arquivo JSON compatível com ferramentas de análise de tráfego HTTP, um dos formatos de exportação do histórico. | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) | | **JWT** | *JSON Web Token*: token em três segmentos Base64URL (header, payload e assinatura), comum no header `Authorization`. | [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar), [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) | | **Escopo** | Lista de hosts que limita onde a pausa e a gravação do histórico agem, com match por sufixo. | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) | | **Sonda** | A request enviada sem marcadores no início de uma intrusão; a resposta dela vira a linha de base de comparação. | [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) | ### Como os módulos se conectam Os módulos compartilham o mesmo histórico e trocam requests entre si com um toque: - O **Proxy de Rede** e o **Navegador** alimentam o **Interceptador** e a **História** com o tráfego capturado. - De uma captura do histórico você envia a request para o **Repetir** (ajuste fino), o **Intruso** (automação de payloads), o **Analisador SSL/TLS**, o **Decodificar** ou o bloco de notas. - O **Descobridor** e o **Intruso** leem as listas de **Wordlists e payloads** e mandam achados de volta para o **Repetir**. - O **CatEyes** analisa a página aberta no **Navegador**, e o **Decodificar** interpreta tokens e valores vindos de qualquer módulo. - As [extensões](https://netcattest.com/catsuite/docs/extensoes) e os [fluxos visuais](https://netcattest.com/catsuite/docs/fluxos) observam e estendem esses módulos, com `source` indicando a origem (`proxy`, `network_proxy`, `repetir`, `intruso`, `descobridor`). ## A tela: navegação principal, MENU e painéis dos módulos Na tela inicial, toque em **INICIAR**. No primeiro acesso, o aplicativo apresenta os termos de uso e a **seleção de módulos**: História, Bloco de notas, Descobridor, Analisador SSL/TLS e Proxy de Rede podem ser ativados nesse momento ou depois, em **Configurações**. ### Barra inferior | Entrada | O que abre | | --- | --- | | **INTERCEPTADOR** | Interceptar, Histórico, Site Map e opções do módulo | | **NAVEGADOR** | O navegador técnico do laboratório, com o CatEyes | | **MENU** | Repetir, Intruso, Descobridor, História, Bloco de notas, Decodificar, Analisador SSL/TLS, Proxy de Rede, Configurações e Extensões | ### Painéis e abas de cada módulo Cada módulo tem uma organização própria. A tabela serve de mapa rápido antes de abrir a página detalhada. | Módulo | Organização da tela | | --- | --- | | Interceptador | Abas **INTERCEPTAR**, **HISTÓRICO** e **OPÇÕES**; editor com Bruto, Headers, Corpo e Busca | | Proxy de Rede | Painel operacional (operação, estatísticas, diagnóstico) e hub com **SERVIÇO**, **REDE LOCAL**, **HTTPS E CERTIFICADOS**, **CLIENTES CONFIÁVEIS** e **HISTÓRICO E PRIVACIDADE** | | Navegador | Barra de endereço, painel **FERRAMENTAS DO NAVEGADOR** e menu **OPÇÕES DO NAVEGADOR** | | CatEyes | Cartão de resumo com chips, selo de olho na barra do Navegador e seções da análise | | Repetir | Cartão **EXECUÇÃO MANUAL**, painel **REQUEST**, painel **COMPARAÇÃO A/B** e painel **RESPONSE** | | Intruso | Página de preparação (abas **ALVO**, **REQUEST** e **PAYLOADS**) e página de fluxo com os resultados | | Descobridor | Telas de Execução, Configurações e Headers; indicadores **PROCESSADAS**, **RESULTADOS** e **FALHAS** | | Decodificar | Página inicial com **FORMATOS**, **INSPETOR DE JWT**, **JWT E ASSINATURAS**, **INSPETOR DE JWE**, **HASHES E CRIPTO** e **SMART DECODE** | | Wordlists e payloads | Seções **WORDLISTS PADRÃO** e **WORDLISTS DO USUÁRIO** | > [!NOTA] > A linha do tempo de sites e requisições depende do módulo [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) ativo em Configurações. Sem ele, o registro do histórico fica indisponível. ## Opções e como configurar os módulos Cada módulo tem a sua página de configurações, detalhada na documentação dele. A tabela reúne as opções que mais influenciam o laboratório como um todo, com os valores e padrões reais do app. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Seleção de módulos (Configurações) | História, Bloco de notas, Descobridor, Analisador SSL/TLS, Proxy de Rede | Escolhida na primeira abertura | Ativa ou desativa os módulos opcionais do MENU | | Interceptação (Interceptador) | Ligada, Desligada | Desligada | Liga a fila; cada nova mensagem fica retida para revisão | | Interceptar response (Interceptador) | Ligado, Desligado | Desligado | Também pausa a response depois que a request segue | | Pausar só no escopo (Interceptador) | Ligado, Desligado | Desligado | Pausa apenas os hosts do escopo; sem hosts, a pausa é global | | Limite do histórico (Interceptador) | 100, 300, 500, 1000, 2000, 5000 | 300 | Mantém até N requisições e descarta as mais antigas | | Captura Total (Interceptador) | Ligada, Desligada | Desligada | Registra todo o tráfego do proxy local no histórico, quando o aparelho suporta | | Porta do proxy (Proxy de Rede) | 1024 a 65535 | 8080 | Porta local em que o listener aceita conexões | | Interceptar tráfego HTTPS (Proxy de Rede) | Ligado, Desligado | Ligado | Descriptografa o HTTPS com a CA; desligado mantém o destino em túnel | | Mascarar dados sensíveis (Proxy de Rede) | Ligado, Desligado | Ligado | Oculta credenciais conhecidas na visualização e nas exportações comuns | | Retenção do Histórico (Proxy de Rede) | Sessão atual, 1 dia, 7 dias, 30 dias, Manual | 7 dias | Por quanto tempo as capturas ficam salvas | | Ativar SSL/TLS (Repetir) | Ligado, Desligado | Ligado | Desligado, força HTTP mesmo que o alvo original esteja em HTTPS | | Ignorar erros de certificado (Repetir e Intruso) | Ligado, Desligado | Desligado | Aceita certificados inválidos ou autoassinados em laboratório | | Requisições por segundo (Intruso) | 0, 1, 2, 3, 5, 10, 20 | 0 (livre) | Teto de taxa da intrusão; 0 respeita só o delay | | Requisições por segundo (Descobridor) | 1 a 6 | 2 | Ritmo base da varredura | | Delay extra (Descobridor) | 0, 100, 250, 500, 750, 1000 ms | 250 ms | Pausa fixa adicional entre tentativas | Para **preparar o laboratório**, abra **Configurações** e ative os módulos opcionais que vai usar. A História é a primeira a ligar, porque sem ela não há linha do tempo para revisar depois. Ative o Proxy de Rede só quando precisar capturar o tráfego de outro aparelho ou app. Para **não travar o aparelho inteiro**, mantenha a interceptação desligada enquanto apenas observa e ligue **Pausar só no escopo** com os hosts do alvo em **Gestão de escopo**. Assim, a fila segura somente o tráfego que interessa. Para **controlar o ritmo dos módulos ativos**, comece pelos padrões seguros do Descobridor (2 requisições por segundo e 250 ms de atraso) e, no Intruso, defina um teto de requisições por segundo ou um delay antes de rodar listas grandes. O backoff automático em `429` do Descobridor alivia o alvo quando ele pede pausa. Para **proteger as evidências**, deixe **Mascarar dados sensíveis** ligado no Proxy de Rede e ajuste a retenção ao tamanho do trabalho. Ignorar erros de certificado é uma exceção de laboratório: deixe desligado em alvos públicos. ## Botões e ações que ligam os módulos As ações abaixo são o "encanamento" do laboratório: é com elas que uma request passa de um módulo para outro e que as evidências saem do app. | Botão / Ação | Onde | O que faz | | --- | --- | --- | | **INICIAR** | Tela inicial | Entra no app; no primeiro acesso, abre os termos e a seleção de módulos | | **INTERCEPTADOR** / **NAVEGADOR** / **MENU** | Barra inferior | Alterna entre a captura, a navegação e os demais módulos | | Enviar para o Repetir / Intruso | Toque longo em uma captura do histórico | Abre a request no módulo de destino para replay ou automação | | Enviar para Analisador SSL/TLS, Decodificar ou bloco de notas | Toque longo em uma captura do histórico | Leva a captura para triagem de TLS, decodificação ou anotação | | **Comparar com outra** | Toque longo em uma captura do histórico | Abre duas capturas lado a lado, com as linhas diferentes destacadas | | **A → REPETIR** / **B → REPETIR** | Comparação A/B do Interceptador | Envia uma das capturas comparadas para o Repetir | | **DOWNLOAD E COMPARTILHAR** | Aba OPÇÕES do Interceptador | Exporta o histórico filtrado em TXT, cURL .txt, JSON ou .HAR | | **INICIAR PROXY DE REDE** | Painel do Proxy de Rede | Sobe o listener e mostra o endereço do proxy | | **EXPORTAR CA** | HTTPS E CERTIFICADOS | Compartilha o certificado `.crt` para instalar no cliente | | **VERIFICAR** / **BAIXAR TXT** | CatEyes | Analisa a página aberta e exporta o relatório em texto | | **DECODIFICAR** / **NOTAS** | Menu de contexto do editor do Repetir | Envia a seleção para o Decodificar ou para o Bloco de notas | | **Enviar para o Repetir** | Resultado do Descobridor ou toque longo no resultado do Intruso | Leva o achado para ajuste manual | | **INICIAR INTRUSÃO** / **PAUSAR** / **RETOMAR** | Intruso | Envia a sonda, dispara o ataque e controla a execução | | **ADICIONAR WORDLIST** | Configurações > Wordlist | Importa uma lista `.txt` e inicia a validação | ## Fluxo de laboratório ponta a ponta Um teste típico atravessa vários módulos, do primeiro tráfego ao relatório. A tabela mostra as fases e o que cada uma entrega. | Fase | Módulos | Resultado | | --- | --- | --- | | 1. Preparar | Configurações, [Segurança](https://netcattest.com/catsuite/docs/seguranca) | Módulos ativos, alvo autorizado definido e escopo configurado | | 2. Capturar | [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador), [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | Primeiras requests e responses no histórico | | 3. Mapear | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes), [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) | Site Map por host, tecnologias identificadas e conexão segura verificada | | 4. Entender | [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) | Tokens, cookies e parâmetros traduzidos para texto legível | | 5. Manipular | [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) | Efeito de cada alteração medido em respostas comparadas | | 6. Automatizar | [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso), [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor), [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists) | Variações em massa filtradas e caminhos ocultos revelados | | 7. Registrar | [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) | Linha do tempo revisada e observações anotadas | | 8. Reportar | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes) | Exportações HAR, JSON, TXT e cURL, relatório TXT do CatEyes e notas exportadas | > [!AVISO] > Ao terminar, remova a CA do laboratório dos dispositivos de teste, revogue os clientes pareados no Proxy de Rede e desligue a interceptação. Uma CA esquecida em um aparelho continua permitindo descriptografar o HTTPS dele. ### Quando usar qual módulo | Você quer... | Use | | --- | --- | | Ver o tráfego de uma página sem configurar nada | [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) | | Capturar o tráfego de outro aparelho ou de um app nativo | [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | | Segurar uma request ou response e editá-la antes de seguir | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) | | Reescrever um header ou cookie automaticamente em todo o tráfego | Regras de substituição do [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | | Saber quais frameworks, servidores e versões a página usa | [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes) | | Trocar um campo por vez e reenviar até entender o efeito | [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) | | Testar centenas de valores na mesma posição da request | [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) | | Encontrar diretórios, endpoints e parâmetros não publicados | [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) | | Ler um JWT, um Base64 ou gerar um hash | [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) | | Conferir handshake, cadeia e fingerprints do certificado | [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) | | Importar a sua própria lista de palavras | [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists) | | Rever a sessão e anotar evidências | [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) | ## Passo a passo: o primeiro ciclo completo no CatSuite 1. Na tela inicial, toque em **INICIAR**, aceite os termos de uso e ative pelo menos a **História** e o **Bloco de notas** na seleção de módulos. 2. Na barra inferior, toque em **NAVEGADOR** e abra um alvo autorizado. O tráfego gerado já entra no fluxo interceptado. 3. No Navegador, abra o **CatEyes** pelo selo de olho e toque em **VERIFICAR** para identificar as tecnologias da página. 4. Toque em **INTERCEPTADOR**, abra a aba **HISTÓRICO** e use a **árvore de site** para ver os hosts e endpoints visitados. 5. Toque em uma captura para ler headers, corpo e resposta. Se houver um token, use o toque longo e envie o valor para o **Decodificar**. 6. Use o toque longo novamente e escolha **Enviar para o Repetir**. Altere um campo, toque em **ENVIAR** e compare as respostas. 7. Quando precisar testar muitos valores, envie a mesma captura para o **Intruso**, toque em **AUTODETECTAR**, escolha uma wordlist na aba **PAYLOADS** e toque em **INICIAR INTRUSÃO**. 8. Para procurar caminhos ocultos, abra o **Descobridor** pelo **MENU**, escolha a wordlist em **CONFIGURAÇÕES** e toque em **SALVAR**; depois informe a URL com `$CAT$` e toque em **INICIAR**. 9. Registre as observações no **Bloco de notas** e revise a linha do tempo na **História**. 10. Na aba **OPÇÕES** do Interceptador, abra **DOWNLOAD E COMPARTILHAR**, escolha o formato e toque em **BAIXAR** para guardar as evidências. > [!DICA] > Para capturar o tráfego de outro aparelho, inclua entre os passos 1 e 2 a preparação do [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy): iniciar o proxy, exportar e instalar a CA e parear o dispositivo. ## Exemplos de uso entre módulos Request capturada no histórico do Interceptador e enviada para o Repetir: ```http GET /api/perfil?id=42 HTTP/1.1 Host: alvo.exemplo Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbmEiLCJyb2xlIjoidXNlciIsImV4cCI6MTc5OTk5OTk5OX0.c2lnbmF0dXJl Accept: application/json ``` O payload do token acima, depois de colado no inspetor de JWT do Decodificar: ```json { "sub": "ana", "role": "user", "exp": 1799999999 } ``` A mesma request no Intruso, com a posição marcada por **AUTODETECTAR**: ```http GET /api/perfil?id=§42§ HTTP/1.1 Host: alvo.exemplo Accept: application/json ``` URLs com o marcador `$CAT$` no Descobridor, para caminhos e para parâmetros: ```text https://alvo.exemplo/$CAT$ https://alvo.exemplo/busca?$CAT$=cat-suite ``` Wordlist simples pronta para importar em **Configurações > Wordlist**: ```text admin api/v1 backup config uploads ``` Configuração de proxy manual em um segundo aparelho de teste: ```text Servidor: 192.168.0.42 Porta: 8080 ``` Comando gerado pela exportação em cURL, pronto para reproduzir fora do app: ```bash curl -i -X GET "https://alvo.exemplo/api/perfil?id=42" \ -H "Accept: application/json" ``` ## Onde baixar o CatBridge e o SDK de extensões O aplicativo CatSuite é gratuito e vem com todos os módulos desta página; ele é instalado pela Google Play. As ferramentas para desenvolvedores ficam em endereços oficiais: | Ferramenta | Onde | |---|---| | **CatBridge**, o conector opcional que roda no seu computador | [Pasta catbridge no GitHub](https://github.com/netcattest/catsuite/tree/main/catbridge) | | **CatSuite Studio**, a extensão para VS Code com o SDK e os tipos `catsuite.d.ts` | [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) | | Código-fonte do CatSuite Studio | [Pasta catsuite-vscode no GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) | | Repositório oficial completo | [github.com/netcattest/catsuite](https://github.com/netcattest/catsuite) | O passo a passo está em [Downloads e SDK](https://netcattest.com/catsuite/docs/downloads), em [Instalar e parear o CatBridge](https://netcattest.com/catsuite/docs/catbridge/instalar) e em [CatSuite Studio para VS Code](https://netcattest.com/catsuite/docs/extensoes/vscode). > [!AVISO] > Baixe o CatBridge e o CatSuite Studio somente pelos endereços oficiais acima. Cópias em outros sites podem estar alteradas e comprometer o seu computador e o seu laboratório. ## Problemas comuns e perguntas frequentes **Um módulo não aparece no MENU.** Os módulos História, Bloco de notas, Descobridor, Analisador SSL/TLS e Proxy de Rede são opcionais. Ative-os em **Configurações**. **O histórico está vazio.** Confirme que a História está ativa em Configurações, que **Histórico do interceptador** está ligado e que as condições de captura (Wi-Fi, Dados, Carga) não estão restringindo o registro. **Liguei a interceptação e todo o tráfego parou.** É o comportamento esperado: a fila segura tudo até você agir. Use **ENVIAR** ou **DESCARTAR** em cada item, ou ligue **Pausar só no escopo**. **O tráfego de outros apps não aparece.** O Navegador captura apenas o tráfego que ele mesmo gera. Para outros apps e aparelhos, use o [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) com a CA instalada no cliente. **O HTTPS não valida no Proxy de Rede.** A CA não foi instalada como confiável no cliente ou o host está na lista de **Hosts sem interceptação**. Confira o fingerprint com **COPIAR FINGERPRINT**. **Qual a diferença entre Repetir e Intruso?** O Repetir faz replay manual e preciso de uma request por vez; o Intruso automatiza muitas variações a partir de posições marcadas e de uma wordlist ou gerador. **Onde fica o marcador `$CAT$` no Intruso?** No Intruso você não digita o marcador: os botões **AUTODETECTAR** e **MARCAR SELEÇÃO** envolvem o trecho escolhido e a posição aparece como `P1`, `P2` e assim por diante. No Descobridor, `$CAT$` vai literalmente na URL base. **O CatEyes diz "Abra um site primeiro".** Ele analisa a página aberta no Navegador. Carregue um alvo autorizado antes de tocar em **VERIFICAR**. **Os sinais de CVE confirmam uma vulnerabilidade?** Não. São pistas da base local para revisão manual; a versão detectada pode estar incompleta ou corrigida pelo fornecedor. **Minha wordlist não foi aceita.** O arquivo precisa ser `.txt`, com uma entrada por linha e pelo menos uma linha útil. Veja [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists). **O Proxy de Rede parou sozinho.** O listener funciona somente com o CatSuite em primeiro plano e é retomado automaticamente quando você volta ao app. ## Continue - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) - [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) - [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) - [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) - [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) - [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) - [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists) - [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) - [Downloads e SDK](https://netcattest.com/catsuite/docs/downloads) - [Extensões do CatSuite](https://netcattest.com/catsuite/docs/extensoes) --- # Interceptador > Interceptador do CatSuite: como usar e configurar a fila, editar requests e responses, Site Map, histórico com filtros e exportação HAR, JSON, TXT e cURL. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/interceptador - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/interceptor O **Interceptador** é o módulo de controle ao vivo do tráfego no CatSuite: ele pausa cada **request** e cada **response** em uma fila, permite revisar e editar **método, URL, headers, cookies e corpo** antes do encaminhamento e mantém todo o **histórico** organizado por domínio, com **Site Map** por host e endpoint, **comparação** lado a lado e **exportação em HAR, JSON, TXT e cURL**. Esta página explica cada conceito, cada opção e como usar e configurar o Interceptador passo a passo, sempre contra um alvo autorizado. > [!AVISO] > Interceptar, editar e reenviar tráfego pode afetar apps, sessões e serviços no aparelho. Use o Interceptador apenas no fluxo que você mesmo iniciou e contra sistemas que tem autorização por escrito para testar. Veja [Segurança e uso responsável](https://netcattest.com/catsuite/docs/seguranca). ## O que é o Interceptador e para que serve O Interceptador resolve um problema central da análise web: olhar e mexer no tráfego **no momento em que ele acontece**. Em vez de ler um registro depois do fato, você segura a mensagem no caminho, inspeciona o conteúdo e **decide o que segue adiante** — encaminhar como está, editar e encaminhar, ou descartar. Quando a interceptação está **ligada**, cada mensagem vinda do [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) ou do [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) para em uma **fila**. Quando está **desligada**, o tráfego passa direto e fica apenas registrado no **histórico**, se o histórico estiver habilitado. Casos de uso típicos: - Parar um login ou uma chamada de API para ver exatamente quais headers e cookies o cliente envia. - Trocar um parâmetro do corpo ou uma URL antes de a request chegar ao servidor. - Alterar o status, os headers ou o corpo de uma **response** para testar como o app cliente reage. - Montar o mapa de hosts e endpoints de um alvo conforme você navega. - Comparar duas capturas lado a lado e exportar as evidências em HAR, JSON, TXT ou cURL. O Interceptador é um **ponto de inspeção local**: ele opera sobre o proxy do próprio aparelho, sem servidores intermediários. As capturas e as preferências ficam no armazenamento privado do app. ## Conceitos essenciais do Interceptador Antes de mexer nas opções, vale entender os termos que aparecem na tela. Cada conceito abaixo tem reflexo direto em um painel ou botão do módulo. ### Interceptação de requests e responses **Interceptar** é segurar a mensagem antes de ela seguir. Por padrão, o Interceptador pausa as **requests** (o que o cliente envia). Com a opção **Interceptar response** ligada, ele também pausa a **response** (o que o servidor devolve) depois que a request é encaminhada, abrindo um segundo momento de edição. Assim você controla os dois sentidos do diálogo HTTP. ### Fila de interceptação A **fila de interceptação** é a lista de mensagens pausadas, aguardando a sua decisão. Cada item mostra **método, host e caminho**. Enquanto a fila existe, o tráfego fica realmente parado — nada segue sem a sua ação. O cabeçalho da fila indica o estado (**interceptação ligada ou desligada**) e, durante o envio, exibe **FINALIZANDO ENVIO**. O layout da fila alterna entre **CARTÕES** (mais detalhe) e **COMPACTO** (mais itens na tela). ### Escopo de hosts e pausa seletiva O **escopo** é uma lista de hosts que define onde a pausa age. Com **Pausar só no escopo** ligado e hosts definidos em **Gestão de escopo**, a fila segura apenas o tráfego desses hosts e deixa o resto passar. O match é **por sufixo**: `exemplo.com` cobre `api.exemplo.com` e demais subdomínios, e o campo aceita o formato `*.host`. Sem hosts no escopo, a pausa permanece **global** para não deixar tráfego escapar. ### Histórico, limite e Captura Total O **histórico** guarda as mensagens que passaram pelo Interceptador e pelo proxy, por domínio, para consulta posterior. O **limite do histórico** mantém até um número máximo de requisições visíveis e descarta automaticamente as mais antigas. A **Captura Total**, quando disponível no aparelho, registra **todo** o tráfego do proxy local no histórico — não só o que você interceptou manualmente. Ela depende de suporte do dispositivo e pode não estar disponível em todos os aparelhos. ### Site Map (árvore de site) por host e endpoint O **Site Map** reorganiza o histórico como uma **árvore**: cada **host** vira um nó que expande para os **caminhos** (endpoints) observados. Cada endpoint mostra os **métodos** e os **status** vistos e um contador de requisições. É a forma rápida de entender a superfície do alvo. Tocar no ícone de filtro de um host aplica o host (ou o host mais o caminho) ao filtro do histórico. ### Comparação A/B de requisições A **comparação** abre duas capturas lado a lado — **A** e **B** — em uma tela cheia. Você alterna entre **REQUEST** e **RESPONSE** e as **linhas diferentes** entre os dois lados ficam destacadas, o que facilita ver o que mudou entre uma captura e outra. ### Exportação em HAR, JSON, TXT e cURL A **exportação** leva o histórico filtrado para fora do app. São quatro formatos: **TXT** (texto organizado), **cURL .txt** (um arquivo de comandos `cURL` completos, com `-X`, `-H` e `-d`), **JSON** (dados estruturados para análise e automação) e **.HAR** (arquivo compatível com ferramentas de análise de tráfego HTTP). A mesma tela serve para **baixar** ou **compartilhar**. ### Regras automáticas e extensões Quando há [extensões](https://netcattest.com/catsuite/docs/extensoes) processando o proxy, as **regras de substituição** aplicáveis rodam **antes** dos handlers e antes de a mensagem chegar à fila. Uma request alterada por regra automática recebe uma marca de **REGRA AUTOMÁTICA** na fila. A edição manual no Interceptador prevalece sobre o que já foi aplicado. ## A tela do Interceptador: abas e painéis O Interceptador tem três abas no topo: **INTERCEPTAR**, **HISTÓRICO** e **OPÇÕES**. A cor de acento padrão é o amarelo (roxo no App Virtual). ### Aba Interceptar É onde você opera a fila ao vivo. No topo fica o **interruptor de interceptação** (ligada/desligada) e o alternador de layout **CARTÕES/COMPACTO**. Abaixo, a **FILA DE INTERCEPTAÇÃO** lista as mensagens pausadas com **MÉTODO**, **HOST** e **CAMINHO**. Sem nada na fila, a área mostra **AGUARDANDO NOVAS REQUISIÇÕES**. Cada item leva ao **EDITOR DA REQUISIÇÃO** e, quando aplicável, à seção de **response pausada**. ### Aba Histórico Mostra o **HISTÓRICO DO INTERCEPTADOR**. No topo há o campo de busca (**Buscar por site, domínio, método, URL ou status...**) e os botões de **árvore de site** (Site Map), **só interessantes**, **Proxy de Rede** (quando aplicável) e o **menu de filtros**. A lista traz cada captura; ao selecionar uma, o painel de detalhe mostra as abas **REQUEST** e **RESPONSE** e as **INFORMAÇÕES GERAIS**. Tocar e segurar uma captura abre o menu de cópia, compartilhamento e envio. ### Aba Opções Reúne dois blocos de configuração: **CONFIGURAÇÕES DO INTERCEPTAR** (comportamento da fila, escopo, Captura Total e cores do HTTP) e **CONFIGURAÇÕES DO HISTÓRICO** (limite, condições de captura, conteúdos de response, escopo do histórico e o atalho **DOWNLOAD E COMPARTILHAR**). ## O editor da requisição: Bruto, Headers, Corpo e Busca Ao abrir uma request na fila, o **EDITOR DA REQUISIÇÃO** apresenta quatro sub-abas: - **Bruto** — a request inteira como texto (linha inicial com **método** e **URL/caminho**, **headers** e **corpo**). Editar aqui sincroniza com as abas estruturadas. - **Headers** — a lista de **CABECALHOS EDITÁVEIS** em pares chave/valor. É aqui que você edita os **cookies**, pelo header `Cookie`, além de `Authorization`, `User-Agent` e demais. - **Corpo** — o editor do corpo, que se adapta ao formato: **CORPO // FORM URLENCODED**, **CORPO // JSON FORMATADO** ou **CORPO // TEXTO**. - **Busca** — localiza um trecho dentro da própria requisição. Ao terminar, use **APLICAR E ENVIAR** para encaminhar com as edições. Se o texto bruto ficar inválido, o editor avisa (**Corrija a requisição bruta para editar os headers.**) e bloqueia as abas estruturadas até você corrigir. > [!DICA] > Para trocar um valor pontual, a aba **Headers** ou **Corpo** é mais segura que a **Bruto**, porque mantém a estrutura. Use a **Bruto** quando precisar reescrever a linha inicial (método e caminho) ou colar uma request inteira. ## Opções do Interceptador e como configurar ### Opções do Interceptar A tabela reúne o bloco **CONFIGURAÇÕES DO INTERCEPTAR** da aba Opções. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Interceptação | Ligada, Desligada | Desligada | Liga a fila; cada nova mensagem para para revisão antes de seguir | | Interceptar response | Ligado, Desligado | Desligado | Também pausa a response depois que a request é encaminhada | | Redirecionar para o Navegador | Ligado, Desligado | Ligado | Abre o Navegador ao enviar a request pelo Interceptador | | Pausar só no escopo | Ligado, Desligado | Desligado | Pausa apenas os hosts do escopo; sem hosts, a pausa é global | | Gestão de escopo | lista de hosts | vazio | Define os hosts cobertos (match por sufixo, aceita `*.host`) | | Captura Total | Ligada, Desligada | Desligada | Registra todo o tráfego do proxy local no histórico (depende do aparelho) | | Cores do HTTP | Ligado, Desligado | Ligado | Destaca método, linha inicial, headers e valores nas áreas de request e response | | Histórico do interceptador | Ligado, Desligado | Ligado | Liga ou desliga o registro das capturas no histórico | Para **ligar a interceptação**, você pode usar o interruptor da aba Interceptar ou este bloco de opções. Com ela ligada, intercepte apenas quando quiser mesmo segurar o tráfego — a fila bloqueia tudo que entra até você agir item a item. Para **limitar a pausa a um alvo**, ligue **Pausar só no escopo** e abra **Gestão de escopo** para adicionar os hosts. Lembre do match por sufixo: `loja.exemplo` cobre `www.loja.exemplo` e `api.loja.exemplo`. Sem hosts, mesmo com a opção ligada a pausa continua global, de propósito, para nada escapar. Para **acompanhar o resultado**, deixe **Redirecionar para o Navegador** ligado: ao enviar a request, o app abre o [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) para você ver a navegação principal. Desligue se preferir permanecer no Interceptador depois de confirmar a request. > [!NOTA] > A **Captura Total** usa o proxy local para registrar todo o tráfego no histórico. Ela depende de suporte do dispositivo; quando não está disponível, o app avisa que não foi possível ativar a interceptação completa neste aparelho e a interceptação segue funcionando normalmente, apenas sem a captura ampla. ### Opções do Histórico A tabela reúne o bloco **CONFIGURAÇÕES DO HISTÓRICO**. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Limite do histórico | 100, 300, 500, 1000, 2000, 5000 | 300 | Mantém até N requisições antes de descartar as mais antigas | | Capturar só em condições | Todas, Wi-Fi, Dados, Carga | Todas | Restringe a captura por tipo de rede ou estado de bateria | | Ver conteúdos de response | Ligado, Desligado | Desligado | Exibe o corpo completo de imagens, scripts e CSS (usa mais memória) | | Gravar histórico só no escopo | Ligado, Desligado | Desligado | Grava apenas requisições para hosts do escopo | | Download e compartilhar | — | — | Abre a tela de exportação com filtros por método, status, domínio, tipo, dia e horário | Para **economizar memória** em aparelhos modestos, escolha o limite **100** (opção mais leve, focada nas requisições mais novas). O padrão **300** equilibra desempenho e retenção; **1000** a **5000** guardam sessões longas ao custo de mais memória. As **condições de captura** poupam dados e bateria: **Wi-Fi** só captura em rede sem fio, **Dados** só em dados móveis e **Carga** só com o aparelho carregando e bateria acima de 50%. **Todas** não impõe restrição. > [!IMPORTANTE] > Para liberar a linha do tempo de sites, requisições e do que passou pelo interceptador, o módulo [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) precisa estar ativo em Configurações. Sem ele, o registro do histórico fica indisponível. ## Botões e ações ### Na aba Interceptar e no editor | Botão / Ação | Onde | O que faz | | --- | --- | --- | | Interruptor de interceptação | Topo da aba | Liga ou desliga a fila | | CARTÕES / COMPACTO | Topo da fila | Alterna o layout da fila | | EDITAR | Item da fila | Abre o editor da requisição | | ENVIAR | Fila / editor | Encaminha a mensagem sem alterações | | DESCARTAR | Fila / editor | Bloqueia e descarta a mensagem | | APLICAR E ENVIAR | Editor | Aplica as edições e encaminha | | Bruto / Headers / Corpo / Busca | Editor da requisição | Alterna as sub-abas do editor | ### Na response pausada | Botão / Ação | O que faz | | --- | --- | | EDITAR E ENVIAR | Abre o editor da response | | STATUS / HEADERS / CORPO | Sub-abas do editor da response | | AÇÕES RÁPIDAS → INJETAR JS | Abre o campo para injetar JavaScript na response | | AÇÕES RÁPIDAS → TROCAR JSON/CORPO | Substitui o corpo/JSON da response | | INJETAR E ENVIAR | Aplica a injeção de JS e encaminha | | FORMATAR JSON | Reformata o corpo JSON para leitura | | ENVIAR / DESCARTAR | Encaminha ou descarta a response | ### Na aba Histórico | Botão / Ação | O que faz | | --- | --- | | Campo de busca | Filtra por site, domínio, método, URL ou status | | Árvore de site | Abre ou fecha o Site Map | | Só interessantes | Mostra apenas as capturas marcadas como interessantes | | Proxy de Rede | Mostra apenas o tráfego do [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) | | Menu de filtros | Abre **OPÇÕES DO HISTÓRICO** | | Toque longo na captura | Abre o menu de cópia, compartilhamento e envio | O menu **OPÇÕES DO HISTÓRICO** traz **BUSCA AVANÇADA** (Buscar por regex, Distinguir maiúsculas e minúsculas, Buscar no corpo, Limpar filtros, Limpar histórico) e os filtros **MÉTODO** (GET, POST, PUT, DELETE), **STATUS**, **DOMÍNIO** (Selecionar Domínios) e **TIPO** (HTML, JSON, Imagem, JS, CSS). O menu de toque longo em uma captura oferece: **Copiar** (URL, Headers da requisição, Body da requisição, Requisição completa, Headers da resposta, Body da resposta, Resposta completa, Requisição e resposta, **cURL**, **fetch (JavaScript)**, **Python requests**, **HTTPie**); **Compartilhar**; **Comparar com outra**; **Marcar como interessante**; **Explique aqui** (explicação por IA); e envio para [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir), [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso), [Analisador SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls), [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) e bloco de notas. ### Na exportação (Download e compartilhar) | Botão / Ação | O que faz | | --- | --- | | FORMATO DE EXPORTAÇÃO | Escolhe TXT, cURL .txt, JSON ou .HAR | | BAIXAR | Salva o arquivo com os filtros atuais | | COMPARTILHAR | Envia o arquivo pelo compartilhamento do sistema | | LIMPAR FILTROS | Remove método, status, domínio, tipo, dia e horário selecionados | ### Na comparação A/B | Botão / Ação | O que faz | | --- | --- | | REQUEST / RESPONSE | Escolhe qual parte comparar entre A e B | | A → REPETIR / B → REPETIR | Envia a captura A ou B para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) | | A → INTERCEPTAR / B → INTERCEPTAR | Carrega a captura A ou B na fila para edição | ## Passo a passo ### 1. Ligar a interceptação e segurar a primeira request 1. Capture tráfego com o [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) ou navegue pelo [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador). 2. Na aba **INTERCEPTAR**, acione o **interruptor de interceptação**. 3. Gere uma ação no alvo (um clique, um envio de formulário). A mensagem aparece na **FILA DE INTERCEPTAÇÃO**. 4. Toque no item para abrir o **EDITOR DA REQUISIÇÃO** ou decida direto: **ENVIAR** ou **DESCARTAR**. ### 2. Editar método, URL, headers, cookies e corpo 1. Com a request aberta no editor, vá à aba **Bruto** para ajustar a **linha inicial** (método e caminho) ou colar uma request completa. 2. Vá a **Headers** para alterar pares chave/valor. Edite o header `Cookie` para trocar cookies e `Authorization` para o token. 3. Vá a **Corpo** para editar o corpo no formato detectado (form urlencoded, JSON ou texto). 4. Confira tudo e toque em **APLICAR E ENVIAR**. ### 3. Interceptar e editar a response 1. Na aba **OPÇÕES**, ligue **Interceptar response**. 2. Encaminhe uma request normalmente. Quando a resposta chegar, a seção **RESPONSE PAUSADA** abre. 3. Ajuste **STATUS**, **HEADERS** ou **CORPO**; use **FORMATAR JSON** para ler melhor; se precisar, **INJETAR JS** nas **AÇÕES RÁPIDAS**. 4. Toque em **EDITAR E ENVIAR** (ou **INJETAR E ENVIAR**) para devolver a response ao cliente. ### 4. Explorar o Site Map por host e endpoint 1. Na aba **HISTÓRICO**, toque no ícone de **árvore de site**. 2. Expanda um **host** para ver seus **caminhos**, com métodos, status e contagem. 3. Toque no ícone de filtro de um host (ou em um caminho) para aplicar aquele recorte ao histórico e fechar o Site Map. ### 5. Filtrar o histórico e comparar duas capturas 1. Na aba **HISTÓRICO**, use o campo de busca ou abra o **menu de filtros** e escolha método, status, domínio e tipo. 2. Para texto preciso, ligue **Buscar por regex** e, se quiser, **Buscar no corpo**. 3. Em uma captura, use o toque longo e **Comparar com outra**; em seguida toque em outra captura. 4. Na tela de comparação, alterne **REQUEST/RESPONSE** e observe as **linhas diferentes** destacadas. ### 6. Exportar em HAR, JSON, TXT ou cURL 1. Na aba **OPÇÕES**, abra **DOWNLOAD E COMPARTILHAR**. 2. Ajuste os filtros (método, status, domínio, tipo, dia e horário) e veja os contadores **TOTAL**, **SELECIONADO** e **FILTROS**. 3. Toque em **FORMATO DE EXPORTAÇÃO** e escolha **.HAR**, **JSON**, **TXT** ou **cURL .txt**. 4. Toque em **BAIXAR** ou **COMPARTILHAR**. ### 7. Enviar para o Repetir e para o Intruso 1. No histórico (ou no editor), use o toque longo em uma captura. 2. Escolha **Enviar para o Repetir** para replay manual e preciso, ou **Enviar para o Intruso** para automação com wordlists. 3. Aprofunde a análise no módulo de destino. > [!DICA] > Quando quiser repetir variações da mesma request, encaminhe para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) ou para o [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) em vez de editar manualmente várias vezes na fila. ## Exemplos Request original pausada na fila, antes de qualquer edição: ```http POST /api/login HTTP/1.1 Host: alvo.exemplo Content-Type: application/json Cookie: sessao=abc123 {"usuario":"ana","senha":"123456"} ``` A mesma request depois de editar o cookie e o corpo na aba Headers/Corpo: ```http POST /api/login HTTP/1.1 Host: alvo.exemplo Content-Type: application/json Cookie: sessao=novo_valor {"usuario":"ana","senha":"outra-senha"} ``` Comando gerado por **Copiar cURL** de uma captura do histórico: ```bash curl -i -X POST "https://alvo.exemplo/api/login" \ -H "Content-Type: application/json" \ -H "Cookie: sessao=abc123" \ -d '{"usuario":"ana","senha":"123456"}' ``` Trecho de um arquivo **.HAR** exportado, no formato aceito por ferramentas de análise HTTP: ```json { "log": { "version": "1.2", "creator": { "name": "CatSuite", "version": "1.3" }, "entries": [ { "request": { "method": "POST", "url": "https://alvo.exemplo/api/login" }, "response": { "status": 200 } } ] } } ``` ## Problemas comuns e perguntas frequentes **Liguei a interceptação e o app travou todo o tráfego.** É o comportamento esperado: a fila segura tudo até você agir. Resolva os itens da fila com **ENVIAR** ou **DESCARTAR**, ou desligue a interceptação. **A fila não segura só o alvo que eu quero.** Ligue **Pausar só no escopo** e adicione os hosts em **Gestão de escopo**. Sem hosts, a pausa é global de propósito. **Liguei Interceptar response e não aparece nada.** A response só pausa **depois** que a request correspondente é encaminhada. Encaminhe a request e aguarde a resposta. **O histórico não registra nada.** Verifique se **Histórico do interceptador** está ligado e se o módulo [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) está ativo nas configurações. Confira também as **condições de captura** (Wi-Fi, Dados, Carga). **A busca do histórico não acha o que espero.** Se **Buscar por regex** estiver ligado e a expressão for inválida, o painel avisa. Corrija a regex ou desligue o modo regex. Ative **Buscar no corpo** para procurar dentro dos conteúdos. **A exportação saiu vazia.** Algum filtro está restritivo demais. Toque em **LIMPAR FILTROS** e confira os contadores **TOTAL** e **SELECIONADO** antes de baixar. **A Captura Total não liga.** Ela depende de suporte do aparelho. Quando indisponível, o app avisa e a interceptação continua funcionando normalmente, só sem a captura ampla. > [!IMPORTANTE] > Ao copiar, exportar ou compartilhar conteúdo, o destino passa a depender da sua decisão. Trate requests, cookies e corpos como dados sensíveis. ## Boas práticas e segurança > [!PERIGO] > Alterar requests e responses pode encerrar sessões, corromper dados e afetar serviços. Faça isso apenas em alvos autorizados e com consciência do efeito de cada edição. - Mantenha a interceptação desligada quando só quiser observar; ligue apenas para segurar o tráfego de propósito. - Use o **escopo** para não parar tráfego de outros apps e serviços do aparelho. - Prefira editar em **Headers** e **Corpo** a reescrever a request **Bruta** inteira, para não quebrar a estrutura. - Compare duas capturas antes de concluir que uma edição teve efeito. - Exporte em **.HAR** ou **JSON** para guardar evidências; use **cURL** para reproduzir a request fora do app. ## Continue - [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) - [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) - [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) - [Visão geral dos módulos](https://netcattest.com/catsuite/docs/modulos) - [Segurança e uso responsável](https://netcattest.com/catsuite/docs/seguranca) --- # Proxy de Rede > Proxy de Rede do CatSuite: como configurar o proxy MITM, o certificado CA, a Captura Total de HTTP e HTTPS, as regras de substituição e a pausa de responses. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/proxy - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/proxy O **Proxy de Rede** é o módulo que transforma o seu aparelho Android em um **proxy MITM** de HTTP e HTTPS para o laboratório. Ele abre um listener na rede local, descriptografa o tráfego autorizado com uma **autoridade certificadora (CA) própria e exportável**, oferece **Captura Total de HTTP e HTTPS**, permite **regras de substituição** em requests, responses, headers e cookies e faz a **pausa de responses para edição**. O tráfego capturado alimenta o [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) e a [História](https://netcattest.com/catsuite/docs/modulos/historia) em tempo real. Esta página explica cada conceito, cada opção e como usar e configurar o Proxy de Rede passo a passo, sempre contra alvos autorizados. > [!AVISO] > Instale a CA do laboratório apenas em aparelhos de teste que você controla e remova-a ao terminar. Capture, descriptografe e altere somente o tráfego de alvos que você tem autorização por escrito para testar. Veja [Segurança e uso responsável](https://netcattest.com/catsuite/docs/seguranca). ## O que é o Proxy de Rede e para que serve Um proxy é um intermediário: o dispositivo cliente envia as requisições para o CatSuite, que as encaminha ao destino e devolve a resposta. Como o Proxy de Rede fica **no meio** da conversa (MITM, _man-in-the-middle_), ele consegue **ler, registrar e alterar** cada mensagem antes do encaminhamento. É assim que você observa, no laboratório, exatamente o que um aplicativo ou navegador de outro aparelho envia e recebe. O módulo resolve um problema prático: nem todo tráfego vem do [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) embutido. Celulares, tablets ou outros apps na mesma rede local podem apontar o proxy para este aparelho e, a partir daí, todo o tráfego autorizado passa a aparecer no CatSuite. Casos de uso típicos: - Capturar o tráfego HTTP e HTTPS de um segundo aparelho de teste apontado para o proxy. - Inspecionar o que um aplicativo nativo envia, e não apenas o navegador. - Reescrever automaticamente um header, um cookie ou um trecho do corpo com **regras de substituição**. - Pausar uma response para editá-la antes que o cliente a receba. - Encaminhar requests interessantes para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) e o [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso). O listener funciona **somente enquanto o CAT Suite está em primeiro plano**. Quando o app sai de foco, o serviço é suspenso e retomado automaticamente ao voltar — ele nunca permanece oculto em segundo plano. ## Conceitos essenciais do Proxy de Rede Antes de configurar, vale entender os termos que aparecem na tela. Cada conceito abaixo tem reflexo direto em um painel, botão ou opção do módulo. ### Proxy MITM e o pipeline de captura Quando o proxy está ativo, cada conexão autorizada entra em um **pipeline**: a conexão é recebida, a requisição é lida, as **regras de substituição** aplicáveis rodam, a mensagem segue para o [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) (que pode pausá-la) e, por fim, é encaminhada ao destino. A resposta percorre o caminho inverso. Tudo isso acontece dentro do aparelho, sem servidores intermediários. ### Autoridade certificadora (CA) e por que instalá-la Para ler o conteúdo de uma conexão **HTTPS**, o proxy precisa apresentar ao cliente um certificado em que ele confie. O CatSuite gera uma **autoridade certificadora (CA)** própria e, no momento da conexão, emite na hora um certificado para o host visitado, assinado por essa CA. O cliente só aceita esse certificado se a **CA estiver instalada como confiável** no sistema dele. Por isso a CA é o passo central do HTTPS: sem instalá-la, o cliente recusa o certificado e a negociação TLS falha. A CA é **criada quando o proxy é iniciado pela primeira vez**, pode ser **exportada** como arquivo `.crt`, tem um **fingerprint** para conferência e pode ser **regenerada** quando necessário. > [!IMPORTANTE] > Uma CA instalada como confiável permite interceptar o HTTPS daquele aparelho. Trate a CA do laboratório como um segredo: instale-a só onde você controla e precisa, e remova-a assim que terminar o trabalho. ### Pareamento de dispositivos e credenciais Antes de aceitar tráfego, cada dispositivo precisa ser **pareado**. O pareamento gera uma credencial com três partes: um **código temporário**, um **usuário** e uma **senha**. O código autoriza o **IP do dispositivo** durante a sessão; o usuário e a senha ficam como credencial alternativa para ferramentas compatíveis. A senha é exibida **somente no momento do pareamento**. Há também um **QR Code**, que preenche o pareamento rapidamente sem enviar a senha. Cada dispositivo recebe uma credencial própria, que pode ser **revogada** a qualquer momento. ### Captura Total de HTTP e HTTPS A **Captura Total** é o modo que faz **todo** o tráfego HTTP e HTTPS autorizado passar pelo proxy e ser registrado, e não apenas uma interceptação pontual. Combinada com a opção **Registrar no Histórico**, ela mantém request, response e metadados no [Histórico](https://netcattest.com/catsuite/docs/modulos/historia) compartilhado. A Captura Total está disponível **apenas no Android**. ### Regras de substituição Uma **regra de substituição** reescreve o tráfego automaticamente, à medida que ele passa pelo proxy. Você cria as regras em **Configurações > Regras de substituição** e escolhe **qual parte do tráfego** cada regra altera: **request**, **response**, **headers**, o header **Cookie** ou a **primeira linha** da requisição. Cada regra tem um campo **Localizar** e um **Substituir** e pode ser **literal** (troca o texto exato) ou por **expressão regular**. Quando uma regra está ativa, ela entra no fluxo do tráfego automaticamente. As regras compatíveis rodam **de cima para baixo**, e você define a posição de cada uma na sequência. > [!NOTA] > Quando há [extensões](https://netcattest.com/catsuite/docs/extensoes) processando o proxy, as regras de substituição aplicáveis rodam antes dos handlers, e a edição manual no [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) prevalece sobre as duas. ### Pausa de responses para edição Com a interceptação de response ligada, o **proxy MITM pausa todas as responses nos headers**: a resposta fica retida para você revisar e editar status, headers e corpo antes de entregá-la ao cliente. Bodies em streaming ou downloads grandes são preservados sem edição e exibidos como **somente leitura**. A edição acontece no [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador). ### Hosts em bypass e portas CONNECT Nem todo destino deve ser descriptografado. Em **Hosts sem interceptação** você lista os hosts que devem passar **em túnel** (sem MITM), um por linha, aceitando curingas como `*.exemplo.com`. As **Portas CONNECT** definem quais portas são aceitas para o túnel HTTPS (o método `CONNECT`); o padrão cobre as portas seguras mais comuns. ## A tela do Proxy de Rede: painel, páginas e abas O módulo tem um **painel operacional** e um **hub de configurações** com cinco páginas. Você entra nas configurações pelo ícone de engrenagem do painel e volta pelo botão de voltar de cada página. ### Painel operacional É a primeira tela. Reúne, de cima para baixo: o **cabeçalho** (estado do serviço em uma frase), o **cartão de operação**, a **grade de estatísticas**, o **cartão de diagnóstico** e o **acesso rápido** (atalhos para Clientes confiáveis e para HTTPS e certificados). ### Cartão de operação e endereço do proxy Mostra o estado atual — **SERVIÇO ATIVO**, **SERVIÇO SUSPENSO** ou **SERVIÇO INATIVO** — e o **ENDEREÇO DO PROXY** (no formato `endereço:porta`) que os clientes devem usar. Com o proxy ativo, aparecem a URL da página de configuração, o botão de **copiar** o endereço e o botão **Abrir configuração**. O botão principal alterna entre **INICIAR PROXY DE REDE** e **PARAR PROXY DE REDE**. ### Estatísticas da sessão Cinco indicadores acompanham o serviço em tempo real: **Clientes com tráfego ativo**, **Conexões ativas**, **Requisições na sessão**, **Conexões recebidas** e **Tráfego recebido / enviado** (em bytes legíveis). ### Cartão de diagnóstico Resume a saúde do encaminhamento em uma frase (por exemplo, _Aguardando dispositivo_, _Página de configuração acessível_, _Dispositivo autorizado_, _Proxy funcionando_) e, com o proxy ativo, exibe três selos: **HTTP**, **HTTPS** e **INTERNET**, cada um marcado como `OK` ou `PENDENTE`. É o jeito rápido de saber se o cliente chegou ao listener, se o HTTPS foi validado e se o destino está acessível. ### Hub de configurações Abre cinco páginas: **SERVIÇO**, **REDE LOCAL**, **HTTPS E CERTIFICADOS**, **CLIENTES CONFIÁVEIS** e **HISTÓRICO E PRIVACIDADE**. Porta, interface e regras de HTTPS só podem ser alteradas com o **proxy parado**; as páginas avisam quando uma opção está bloqueada. ## Opções do Proxy de Rede e como configurar A tabela reúne as opções das páginas de configuração, com valores, padrão e efeito. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Iniciar automaticamente | Ligado, Desligado | Desligado | Inicia o proxy ao abrir o CAT Suite quando o módulo está ativo | | Porta do proxy | 1024 a 65535 | 8080 | Porta local em que o listener aceita conexões | | Interface de rede | Automática ou interface Wi-Fi/Ethernet detectada | Automática | Endereço local em que o proxy escuta | | Interceptar tráfego HTTPS | Ligado, Desligado | Ligado | Descriptografa o HTTPS com a CA; desligado mantém o destino em túnel | | Hosts sem interceptação | lista de hosts, um por linha (aceita `*.dominio`) | vazio | Hosts que passam em túnel, sem descriptografar | | Portas CONNECT | portas separadas por vírgula | 443, 8443, 9443 | Portas aceitas para o túnel HTTPS (método `CONNECT`) | | Registrar no Histórico | Ligado, Desligado | Ligado | Guarda request, response e metadados no Histórico compartilhado | | Mascarar dados sensíveis | Ligado, Desligado | Ligado | Oculta credenciais conhecidas na visualização e nas exportações comuns | | Limite de body armazenado | 256 KiB, 1 MiB, 4 MiB, 8 MiB | 1 MiB | Tamanho máximo de corpo guardado; acima disso o conteúdo é truncado | | Cota de armazenamento | 250 MiB, 500 MiB, 1 GiB, 2 GiB | 1 GiB | Espaço total reservado para os corpos capturados | | Máximo de registros | 1.000, 5.000, 10.000, 25.000, 50.000 | 10.000 | Número máximo de entradas mantidas | | Retenção do Histórico | Sessão atual, 1 dia, 7 dias, 30 dias, Manual | 7 dias | Por quanto tempo as capturas ficam salvas | ### Serviço Na página **SERVIÇO**, ligue **Iniciar automaticamente** se quiser que o proxy suba junto com o app (só vale com o módulo ativo). O cartão de ação mostra **PROXY EM EXECUÇÃO** ou **PROXY PARADO** e oferece **INICIAR AGORA** / **PARAR AGORA**, espelhando o botão do painel. Lembre-se de que o listener só funciona enquanto o aplicativo está aberto. ### Rede local Em **REDE LOCAL**, defina a **Porta do proxy** (um valor entre 1024 e 65535; o padrão é 8080) e a **Interface de rede**. Deixe em **Automática** para o CatSuite escolher a interface local apropriada, ou selecione uma Wi-Fi/Ethernet específica pelo nome e endereço. Essas duas opções só podem ser alteradas com o proxy parado; o listener é vinculado a uma única interface local, nunca a todas as redes do aparelho. ### HTTPS e certificados Em **HTTPS E CERTIFICADOS**, o interruptor **Interceptar tráfego HTTPS** liga ou desliga a descriptografia: ligado, o proxy usa a CA desta instalação; desligado, mantém os destinos em túnel. Em **Hosts sem interceptação**, informe um host por linha (curingas como `*.exemplo.com` são aceitos) para deixar destinos sensíveis fora do MITM. Em **Portas CONNECT**, liste, separadas por vírgulas, as portas HTTPS aceitas para o túnel. No fim da página fica o cartão **AUTORIDADE CERTIFICADORA**, com o nome e o **fingerprint** da CA e os botões **COPIAR FINGERPRINT**, **EXPORTAR CA** e **REGENERAR CA**. Essas opções de HTTPS exigem o proxy parado. ### Histórico e privacidade A página **HISTÓRICO E PRIVACIDADE** controla o que fica salvo, sem alterar o encaminhamento. **Registrar no Histórico** mantém as capturas no [Histórico](https://netcattest.com/catsuite/docs/modulos/historia). **Mascarar dados sensíveis** oculta credenciais conhecidas na visualização e nas exportações comuns. Os seletores **Limite de body armazenado**, **Cota de armazenamento**, **Máximo de registros** e **Retenção do Histórico** definem o tamanho máximo de cada corpo, o espaço total, o número de entradas e por quanto tempo tudo é mantido. Bodies acima do limite são transmitidos normalmente e armazenados como conteúdo truncado. ## Botões e ações | Botão | Onde | O que faz | | --- | --- | --- | | INICIAR / PARAR PROXY DE REDE | Painel e página Serviço | Sobe ou encerra o listener | | Copiar | Painel (proxy ativo) | Copia o endereço do proxy | | Abrir configuração | Painel (proxy ativo) | Abre a página de configuração web do proxy | | EXPORTAR CA | HTTPS e certificados | Compartilha o certificado CA (`.crt`) para instalar no cliente | | COPIAR FINGERPRINT | HTTPS e certificados | Copia o fingerprint da CA para conferência | | REGENERAR CA | HTTPS e certificados | Cria uma nova CA e invalida clientes e certificados atuais | | PAREAR NOVO DISPOSITIVO | Clientes confiáveis | Gera código, usuário, senha e QR Code para o dispositivo | | ABRIR QR CODE | Diálogo de credenciais | Mostra o QR Code temporário de pareamento | | Revogar cliente | Clientes confiáveis | Remove a autorização de um dispositivo pareado | ## Passo a passo ### 1. Iniciar o proxy e ler o endereço 1. Abra o **Proxy de Rede** e toque em **INICIAR PROXY DE REDE**. 2. Confira o estado **SERVIÇO ATIVO** e copie o **ENDEREÇO DO PROXY** exibido (`endereço:porta`). 3. Se o início falhar, leia a mensagem: porta em uso, interface indisponível ou acesso à rede local negado indicam o que ajustar. ### 2. Gerar, exportar e instalar a CA 1. Com o proxy iniciado ao menos uma vez, a CA é preparada automaticamente. 2. Vá em **HTTPS E CERTIFICADOS** e toque em **EXPORTAR CA** para compartilhar o arquivo `.crt`. 3. No dispositivo cliente, instale o arquivo como **CA confiável** (veja [Primeiros passos](https://netcattest.com/catsuite/docs/primeiros-passos)). 4. Confirme o **fingerprint** com **COPIAR FINGERPRINT** para garantir que instalou a CA certa. ### 3. Parear um dispositivo 1. Em **CLIENTES CONFIÁVEIS**, toque em **PAREAR NOVO DISPOSITIVO** e dê um nome fácil de reconhecer. 2. Anote o **Código temporário**, o **Usuário** e a **Senha** (a senha aparece só agora). 3. Toque em **ABRIR QR CODE** para parear rapidamente, ou digite o código na página de configuração do dispositivo. 4. No cliente, configure o proxy manual com o endereço e a porta copiados do painel. ### 4. Capturar HTTP e HTTPS com Captura Total 1. Mantenha **Interceptar tráfego HTTPS** ligado e **Registrar no Histórico** ligado. 2. Gere tráfego no dispositivo cliente apontado para o proxy. 3. Acompanhe os selos **HTTP**, **HTTPS** e **INTERNET** no cartão de diagnóstico até ficarem `OK`. 4. Analise as capturas no [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) e na [História](https://netcattest.com/catsuite/docs/modulos/historia). ### 5. Criar uma regra de substituição 1. Vá em **Configurações > Regras de substituição** e crie uma regra. 2. Escolha o escopo (request, response, headers, Cookie ou primeira linha). 3. Preencha **Localizar** e **Substituir** e selecione literal ou expressão regular. 4. Ative a regra e ajuste a posição dela na sequência; as regras rodam de cima para baixo. ### 6. Pausar e editar uma response 1. No [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), ligue a interceptação de response. 2. Gere a requisição no cliente; a response para nos headers. 3. Edite status, headers e corpo e encaminhe. Corpos em streaming ou muito grandes ficam como somente leitura. ### 7. Regenerar ou remover a CA 1. Em **HTTPS E CERTIFICADOS**, toque em **REGENERAR CA** para criar uma CA nova. 2. Confirme no aviso: todos os clientes e certificados atuais deixarão de ser confiáveis. 3. Instale a nova CA e refaça o pareamento dos dispositivos. 4. Ao encerrar o trabalho, remova a CA do laboratório dos dispositivos de teste. ## Exemplos Endereço do proxy e URL da página de configuração mostrados no painel quando o serviço está ativo: ```text 192.168.0.42:8080 http://192.168.0.42:8080/ ``` Configuração de proxy manual no dispositivo cliente: ```text Servidor: 192.168.0.42 Porta: 8080 ``` Lista de hosts mantidos em túnel, sem descriptografar: ```text *.google.com accounts.exemplo.com 10.0.0.5 ``` Regra de substituição literal que reescreve um header de origem: ```text Escopo: headers Localizar: X-Forwarded-For: 127.0.0.1 Substituir: X-Forwarded-For: 203.0.113.9 ``` Response pausada no Interceptador, pronta para edição antes do encaminhamento: ```http HTTP/1.1 200 OK Content-Type: application/json {"perfil":"padrao"} ``` ## Problemas comuns e perguntas frequentes **O proxy não inicia.** Leia a mensagem: _porta em uso_ (escolha outra entre 1024 e 65535), _nenhuma interface Wi-Fi ou Ethernet local disponível_, _o Android não permitiu o acesso à rede local_ ou _o pipeline de captura ainda não está pronto_ (tente novamente). **O HTTPS não valida (selo HTTPS em `PENDENTE`).** O cliente chegou ao proxy, mas a confiança na CA ou a negociação TLS falhou. Confirme que a CA foi instalada como confiável no cliente e que o host não está na lista de bypass. **O dispositivo não aparece como autorizado.** O cliente alcançou o listener, mas ainda não foi autorizado nesta sessão. Valide o **código temporário** na página de configuração do dispositivo. **Não chega tráfego algum.** Confira se os dois aparelhos estão na mesma rede local e use exatamente o IP e a porta exibidos no painel. O selo **INTERNET** em `PENDENTE` indica que o destino não foi alcançado pela interface escolhida. **O serviço parou sozinho.** O Proxy de Rede é suspenso quando o CAT Suite sai do primeiro plano e retomado ao voltar. Ele nunca roda oculto em segundo plano. **Preciso trocar a porta ou a interface e os campos estão bloqueados.** Pare o Proxy de Rede antes de alterar porta, interface ou regras de HTTPS. **Troquei de rede e o pareamento parou de funcionar.** A interface ou o endereço mudou. Inicie o proxy novamente e refaça o pareamento. ## Boas práticas e segurança > [!PERIGO] > Descriptografar HTTPS de terceiros sem autorização é ilegal e antiético. Pareie, descriptografe e altere tráfego apenas de aparelhos e alvos que você está autorizado a testar. O uso indevido pode gerar bloqueios, instabilidade ou violação de regras e contratos aplicáveis. - Instale a CA do laboratório só nos dispositivos de teste que você controla e remova-a ao terminar. - Mantenha a lista de **Hosts sem interceptação** para destinos sensíveis que não devem ser descriptografados. - Deixe **Mascarar dados sensíveis** ligado ao compartilhar telas ou exportar capturas. - Revogue credenciais de dispositivos que não estão mais em uso. - Ajuste retenção, cota e máximo de registros ao volume do trabalho para não encher o armazenamento. ## Continue - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) - [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) - [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) - [Segurança, cofre e proteção de dados](https://netcattest.com/catsuite/docs/seguranca) - [Primeiros passos](https://netcattest.com/catsuite/docs/primeiros-passos) --- # Navegador > Guia completo do módulo Navegador do CatSuite: monitor de rede, código-fonte, inspecionar elemento, modificador de DOM, JWT/Base64, User-Agent e spoof de IP. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/navegador - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/browser O **Navegador** é a área de exploração web do CatSuite: um navegador técnico que reúne barra de endereço, pesquisa, abertura controlada de URLs, monitor de rede, código-fonte, inspecionar elemento, modificador de DOM, detecção de JWT e Base64 no storage, troca de User-Agent, modo computador e spoof de IP por headers. Ele coloca no bolso as mesmas ferramentas de inspeção que você usaria num computador e alimenta automaticamente o [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) e a [História](https://netcattest.com/catsuite/docs/modulos/historia). Esta página explica o que cada recurso faz, como configurar o módulo e como usar o Navegador em fluxos reais de teste autorizado. > [!NOTA] > O Navegador captura o tráfego que ele mesmo gera. Para interceptar o tráfego de outros aplicativos do aparelho, use o [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) com a Captura Total. ## O que é o módulo Navegador e para que serve O Navegador abre páginas numa WebView e, ao mesmo tempo, expõe DevTools móveis sobre a página carregada. Além de ver o site, você acompanha cada requisição, lê o HTML e os recursos JavaScript e CSS, seleciona um elemento visível, edita a árvore do DOM, encontra tokens guardados no armazenamento do navegador e ajusta os cabeçalhos das próximas requests. É a porta de entrada para capturar tráfego sem precisar configurar o proxy do sistema: tudo o que você navega aqui já entra no fluxo interceptado. Quando você confirma uma request no [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), o app pode abrir o Navegador automaticamente para acompanhar o resultado da navegação principal. A linha do tempo de páginas e requisições fica disponível quando o módulo [História](https://netcattest.com/catsuite/docs/modulos/historia) está ativado nas configurações. ## Conceitos essenciais do Navegador Antes de abrir a tela, vale fixar os termos que aparecem na barra, no painel de ferramentas e no menu de opções. ### Barra de endereço e navegação A **barra de endereço** aceita tanto uma URL quanto um texto de pesquisa. Se o que você digitou não for uma URL, o Navegador envia o texto para o **mecanismo de pesquisa** escolhido (Google por padrão). O campo mostra um cadeado verde quando o endereço começa com `https://` e um ícone de busca nos demais casos. Ao lado do campo ficam os controles de navegação — **voltar**, **avançar**, **recarregar** e **início** — além do botão do CatEyes e do menu de três pontos. ### Monitor de rede O **Monitor de rede** recaptura a página e lista as requisições na ordem em que foram feitas, com status, método, domínio, tipo, tamanho transferido e tempos. Cada entrada abre um detalhe com linha da requisição, cabeçalhos de requisição e resposta, cookies enviados e recebidos, flags de segurança (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy) e uma linha do tempo com início, meio e fim de cada recurso. É o equivalente à aba Network de um navegador de desktop. ### Código-fonte da página O **Código-fonte** mostra o HTML da página aberta e uma barra de recursos com os scripts JavaScript e as folhas CSS que o site carregou. Você alterna entre o HTML e cada recurso, busca texto dentro do código, navega por janelas quando o arquivo é muito grande e baixa a fonte atual. Daqui também dá para abrir o Inspecionar elemento. ### Inspecionar elemento O **Inspecionar elemento** liga um modo de seleção na página: você toca em um elemento visível e o CatSuite mostra seus atributos, gera um seletor e permite enviar o elemento para o Código-fonte ou para o Modificador de DOM. É a forma rápida de pular do que está na tela para o trecho correspondente no código. ### Modificador de DOM O **Modificador de DOM** verifica a página e organiza os elementos úteis em uma lista com busca e filtros, em vez de exibir uma árvore infinita. Ele classifica os itens por categoria — campo, textarea, select, formulário, botão, link e script externo — e marca quais estão ocultos e quais são editáveis. Você edita o conteúdo e os atributos de um campo e aplica a mudança direto na página aberta. ### Detecção de JWT e Base64 no storage Ao abrir o explorador de armazenamento, o CatSuite varre `localStorage`, `sessionStorage` e cookies em busca de valores decodificáveis e destaca os que parecem **JWT** ou **Base64**. Um valor marcado como JWT abre o inspetor com header, payload e assinatura; um valor em Base64 pode ser enviado ao [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar). Assim você encontra tokens e segredos guardados pela página sem decodificar nada à mão. ### Console JavaScript e explorador de armazenamento O **Console JavaScript** executa um trecho de código na página aberta e mostra o retorno, os logs e os erros. O **Explorador de armazenamento** inspeciona e edita LocalStorage, SessionStorage, cookies (os que não são HttpOnly) e bancos IndexedDB. Juntos, eles deixam você ler e alterar o estado do cliente sem sair do app. ### User-Agent e modo computador O **User-Agent** é o identificador que o navegador envia em cada request. O CatSuite traz um catálogo de perfis prontos, organizados em categorias (Apple / iOS e macOS, Android por versão e por tipo de uso, Desktop, Consoles, Bots / Crawlers e outros), além do padrão do sistema. O **modo computador** vai além do User-Agent: ele usa um layout amplo e um User-Agent de desktop para abrir a página como num computador. ### Spoof de IP por headers O **spoof de IP** adiciona um cabeçalho de IP de origem às próximas requests para simular de onde o cliente parece vir. Você escolhe o header (X-Forwarded-For, X-Real-IP, CF-Connecting-IP, Client-IP ou Forwarded) e um IP pronto do catálogo (faixas privadas e internas, faixas de documentação e laboratório, resolvedores públicos conhecidos e presets IPv6). Lembre-se de que isso é só um cabeçalho: o servidor pode ou não confiar nele. ### CatEyes O **CatEyes** identifica as tecnologias da página e cruza versões com sinais de CVE de uma base local, pontuando a confiança em camadas de pistas (headers, DOM, runtime e probes leves). Ele tem botão próprio na barra, com cor e pulso conforme a severidade encontrada, e uma página dedicada — veja [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes). | Termo | O que é | Onde aparece | | --- | --- | --- | | Barra de endereço | Campo de URL e pesquisa com cadeado de HTTPS | Barra superior | | Monitor de rede | Lista de requisições com status, tempos e segurança | Ferramentas | | Código-fonte | HTML da página e recursos JS/CSS | Ferramentas | | Inspecionar elemento | Seleção de um elemento visível na página | Barra / Opções | | Modificador de DOM | Lista filtrável de elementos editáveis | Ferramentas | | JWT / Base64 no storage | Detecção de tokens em storage e cookies | Explorador de armazenamento | | User-Agent / modo computador | Troca de identidade e layout de desktop | Opções → Headers / Geral | | Spoof de IP | Cabeçalho de IP de origem nas próximas requests | Opções → Headers | ## A tela do Navegador: barra, abas e painéis ### Barra superior A **barra superior** concentra a navegação. Quando o campo de endereço está recolhido, você vê voltar, avançar, recarregar e início à esquerda, a barra de endereço no centro, o botão do CatEyes e o menu de opções à direita. Ao tocar no campo, ele expande para edição, exibe o botão de limpar, o de enviar e uma seta para recolher. ### Painel inicial e página aberta Sem nenhum site carregado, o Navegador mostra o **painel inicial** com a ilustração, o campo "Pesquisar na rede ou digitar URL" e o botão **PESQUISA**. Quando há uma página aberta, ela ocupa a WebView com uma barra de progresso no topo durante o carregamento; se o endereço falhar, aparece a tela **PÁGINA INDISPONÍVEL** com os detalhes do erro e os botões **INÍCIO** e **RECARREGAR**. ### Painel FERRAMENTAS DO NAVEGADOR O painel **FERRAMENTAS DO NAVEGADOR** ("Ferramentas ativas na página atual do navegador.") reúne os atalhos de análise em cartões: **CAT EYES** (análise em camadas), **CONSOLE JS** (scripts, retorno e logs), **ARMAZENAMENTO** (local, cookies e IndexedDB), **MONITOR DE REDE** (requests, recursos e ordem) e **MODIFICADOR DOM** (busca, filtros e edição). Com nenhum site carregado, ele mostra o aviso "SITE AINDA NÃO CARREGADO". ### Menu OPÇÕES DO NAVEGADOR O menu de três pontos abre a folha **OPÇÕES DO NAVEGADOR**, organizada em blocos: itens gerais (ocultar logo, modo computador, limpar cache e cookies), **NAVEGAÇÃO**, **FERRAMENTAS**, **REQUISIÇÕES** e, dentro dela, a aba **HEADERS** com os grupos GERAL, CUSTOMIZAÇÃO e CONTROLE DE CACHE E REDE. > [!DICA] > As ferramentas só funcionam com um site real carregado. Se os cartões aparecerem desativados, pesquise na rede ou digite uma URL antes de usar o Console JavaScript, o Explorador de Armazenamento, o Monitor de Rede, o Modificador de DOM, o Código-fonte e o CatEyes. ## Opções do Navegador e como configurar Abra o menu de três pontos para ajustar o comportamento do navegador interno. As escolhas são persistentes: o CatSuite guarda a sua preferência entre sessões. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Ocultar logo | Ligado / Desligado | Desligado | Remove o cabeçalho ilustrado para deixar o navegador mais limpo. | | Modo computador | Ligado / Desligado | Desligado | Usa layout amplo e User-Agent de desktop para abrir páginas como no computador; exige um site real carregado. | | Limpar cache | Ação | — | Remove cache, storage e bancos locais da página atual. | | Limpar cookies | Ação | — | Apaga os cookies da sessão atual do navegador. | | Aceitar HTTP + HTTPS | Ligado / Desligado | Ligado | Quando desligado, usa somente HTTPS: endereços HTTP tentam migrar para HTTPS e o Android bloqueia conteúdo misto. | | Mecanismo de pesquisa | Google / DuckDuckGo / Bing / Brave Search / Ecosia | Google | Define o provedor usado quando o texto digitado não é uma URL. | | User-Agent | Catálogo de perfis | Padrão do sistema | Troca o identificador enviado nas navegações, fetch e XHR compatíveis. | | Accept-Language | Presets / original | Padrão do navegador | Define o idioma preferido enviado nas próximas requisições. | | Accept | Presets / original | Padrão do navegador | Controla os tipos de conteúdo que o navegador passa a preferir. | | Content-Type | Presets / original | Original | Faz override do tipo de conteúdo enviado. | | Referer | Presets contextuais / original | Original | Define a referência das próximas navegações; presets usam a aba atual ou a origem do destino. | | Origin | Presets / original | Original | Define a origem enviada nas navegações principais e requests compatíveis. | | Sec-Fetch-Site | same-origin / same-site / cross-site / original | Original | Ajusta o contexto de site declarado na navegação principal. | | Spoof de IP | Header + IP do catálogo | Desligado | Adiciona um cabeçalho de IP de origem a todas as novas requests. | | Headers Extras | Pares nome/valor | Vazio | Adiciona ou edita headers arbitrários (por exemplo `X-Api-Key`). | | No-Cache | Ligado / Desligado | Desligado | Injeta `Cache-Control: no-cache` e `Pragma: no-cache`. | | Bypass ETag | Ligado / Desligado | Desligado | Remove `If-None-Match` e `If-Modified-Since` para forçar respostas 200. | | Identity Encoding | Ligado / Desligado | Desligado | Usa `Accept-Encoding: identity` para respostas sem compressão. | | Bloquear trackers | Ligado / Desligado | Desligado | Bloqueia hosts de analytics marcados sem desligar a Captura Total. | Para ajustar cada uma: deixe **Ocultar logo** por conta do gosto visual. Ligue **Modo computador** quando o alvo entregar uma versão mobile diferente e você quiser ver o site de desktop — abra o site antes, porque a opção só fica disponível com uma página carregada. Use **Limpar cache** e **Limpar cookies** para repetir um fluxo de login do zero. Mantenha **Aceitar HTTP + HTTPS** ligado para abrir alvos mistos em laboratório; desligue para forçar somente HTTPS. Escolha o **Mecanismo de pesquisa** que prefere na barra. No bloco de **Headers**, troque o **User-Agent** por um perfil do catálogo, ajuste **Accept-Language**, **Accept**, **Content-Type**, **Referer**, **Origin** e **Sec-Fetch-Site** quando precisar imitar um contexto específico, e use **Headers Extras** para chaves de API e cabeçalhos próprios. Ligue **No-Cache**, **Bypass ETag** e **Identity Encoding** para evitar cache e compressão e enxergar a resposta crua. > [!AVISO] > Trocar o Referer, o Origin, o Sec-Fetch-Site e o IP de origem muda como o alvo vê a requisição. Use essas opções apenas dentro de um escopo autorizado; elas servem para reproduzir contextos de teste, não para contornar controles de terceiros. ## Botões e ações do Navegador ### Barra superior | Botão | O que faz | | --- | --- | | Voltar | Volta uma página no histórico da WebView. | | Avançar | Avança uma página no histórico da WebView. | | Recarregar | Recarrega o endereço atual. | | Início | Volta ao painel inicial de pesquisa. | | Limpar (no campo) | Esvazia o campo de endereço e mantém o teclado aberto. | | Enviar (no campo) | Abre a URL digitada ou pesquisa o texto. | | CatEyes | Abre a análise de tecnologias e CVEs; a cor indica a severidade. | | Menu (três pontos) | Abre a folha OPÇÕES DO NAVEGADOR. | ### Painel de ferramentas | Botão | O que faz | | --- | --- | | CAT EYES | Abre o CatEyes para pontuar tecnologias e assinaturas da página. | | CONSOLE JS | Abre o console para executar JavaScript e ler saídas e logs. | | ARMAZENAMENTO | Abre o explorador de LocalStorage, SessionStorage, cookies e IndexedDB. | | MONITOR DE REDE | Abre o monitor e recaptura a página. | | MODIFICADOR DOM | Abre a lista filtrável de elementos para edição. | ### Monitor de rede | Botão | O que faz | | --- | --- | | INICIAR MONITOR E RECARREGAR | Arma o monitor e recarrega a página para capturar desde o início. | | Entrada da lista | Abre o DETALHE DA REQUISIÇÃO com cabeçalhos, cookies, segurança e tempos. | | Abas do detalhe | Alternam entre Requisição, Resposta, Cabeçalhos, Cookies, Segurança e Tempos. | ### Modificador de DOM | Botão | O que faz | | --- | --- | | VERIFICAR / ATUALIZAR CAPTURA | Lê o DOM atual e monta a lista de elementos. | | Busca | Filtra por input, formulário, script, href, name e outros termos. | | Mais filtros | Abre os filtros por categoria do DOM. | | EDITAR | Abre o editor do elemento para alterar conteúdo e atributos. | | COPIAR DADO / COPIAR SELETOR | Copia o valor do elemento ou o seletor gerado. | ### Código-fonte | Botão | O que faz | | --- | --- | | Barra de recursos | Alterna entre o HTML da página e cada script JS ou folha CSS. | | BUSCAR | Procura texto no código, com resultado anterior e próximo. | | Baixar fonte atual | Baixa o HTML ou o recurso aberto. | | Inspecionar elemento | Liga a seleção de elemento na página. | ## Passo a passo: como usar o Navegador ### Abrir um alvo e capturar tráfego 1. No painel inicial, digite a URL do alvo autorizado ou um texto de pesquisa e toque em **PESQUISA**. 2. Aguarde a página carregar na WebView. 3. Abra o [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) ou a [História](https://netcattest.com/catsuite/docs/modulos/historia) para ver as requisições que o Navegador gerou. 4. Envie o que interessar para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) ou o [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso). ### Monitorar a rede de uma página 1. Com um site carregado, abra o **MONITOR DE REDE** pelo painel de ferramentas ou pelo menu. 2. Toque em **INICIAR MONITOR E RECARREGAR** para capturar desde o começo do carregamento. 3. Leia os contadores de STATUS, ITENS, FALHAS e TOTAL e percorra a SEQUÊNCIA de carregamento. 4. Toque em uma entrada para abrir o DETALHE DA REQUISIÇÃO e conferir cabeçalhos, cookies, flags de segurança e tempos. ### Ler e baixar o código-fonte 1. Abra **Código fonte** pelo menu de opções. 2. Use a barra de recursos para alternar entre o HTML e os scripts JS ou as folhas CSS carregados. 3. Toque em **BUSCAR** e procure um termo; use as setas para ir ao resultado anterior ou ao próximo. 4. Toque em **Baixar fonte atual** para salvar o arquivo aberto. ### Inspecionar um elemento e editar o DOM 1. Ative **Inspecionar elemento** pela barra ou pelo menu e toque em um elemento visível da página. 2. Confira os atributos e o seletor gerado e envie o elemento para o **Modificador de DOM**. 3. No Modificador de DOM, toque em **VERIFICAR** se a lista estiver vazia e filtre pela categoria do elemento. 4. Toque em **EDITAR**, altere o conteúdo ou os atributos e confirme para aplicar a mudança na página. ### Detectar JWT e Base64 no storage 1. Abra o **ARMAZENAMENTO** (Explorador de armazenamento) pelo painel de ferramentas. 2. Escolha a área: LocalStorage, SessionStorage, Cookies ou IndexedDB. 3. Procure os valores destacados como **JWT** ou **Base64**. 4. Abra um JWT para ver header, payload e assinatura, ou envie um Base64 para o [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar). ### Trocar o User-Agent e ativar o modo computador 1. Abra **Opções → Headers** e toque em **User-Agent**. 2. Escolha uma categoria e um perfil pronto (ou o padrão do sistema) e volte. 3. Para ver o site como num computador, volte à tela principal de opções e ligue **Modo computador**. 4. Recarregue a página para aplicar a nova identidade. ### Aplicar o spoof de IP por headers 1. Abra **Opções → Headers** e toque em **Spoof de IP**. 2. Escolha o header de origem (por exemplo X-Forwarded-For) e um IP do catálogo. 3. Toque em **APLICAR SPOOF DE IP**. 4. Recarregue a página; para remover, abra de novo e toque em **DESATIVAR SPOOF DE IP**. ## Exemplos Cabeçalho de spoof de IP adicionado às próximas requests do Navegador. ```http GET / HTTP/1.1 Host: exemplo.com User-Agent: Cat Suite X-Forwarded-For: 203.0.113.10 ``` Valor de JWT encontrado no `localStorage` da página. ```json { "chave": "token", "valor": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMifQ.c2lnbmF0dXJl" } ``` Trecho executado no Console JavaScript para ler o storage da página. ```javascript return JSON.stringify(localStorage); ``` ## Problemas comuns e perguntas frequentes (FAQ) **Os cartões de ferramentas aparecem desativados.** Nenhum site foi carregado ainda. Pesquise na rede ou digite uma URL para abrir uma página real antes de usar as ferramentas. **O modo computador não liga.** Ele só fica disponível com um site carregado. Abra um alvo real e tente de novo. **O Monitor de rede não lista nada.** Toque em **INICIAR MONITOR E RECARREGAR**: o monitor precisa recarregar a página para capturar as requisições desde o início. **Um cookie não aparece no explorador.** Cookies HttpOnly não são expostos aqui; os demais podem ser inspecionados e editados. **A página HTTP não abre.** Com o modo somente HTTPS ativo, o navegador tenta migrar para HTTPS e o Android bloqueia conteúdo misto. Em laboratório autorizado, ligue **Aceitar HTTP + HTTPS**. **Troquei o Referer/Origin e o site quebrou.** Alguns alvos validam esses cabeçalhos. Volte ao valor original no bloco de Headers ou use **Restaurar Padrão**. **O spoof de IP não mudou nada.** O IP de origem é só um cabeçalho; o servidor pode ignorá-lo. Confirme que o header foi aplicado e que o alvo confia nesse cabeçalho. > [!IMPORTANTE] > O Navegador gera tráfego real contra o alvo a cada página aberta e a cada request. Use-o somente dentro de um escopo autorizado e com o cuidado descrito na página de [Segurança](https://netcattest.com/catsuite/docs/seguranca). ## Continue - [CatEyes](https://netcattest.com/catsuite/docs/modulos/cateyes) - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [História](https://netcattest.com/catsuite/docs/modulos/historia) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) - [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) - [Visão geral dos módulos](https://netcattest.com/catsuite/docs/modulos) --- # CatEyes > CatEyes do CatSuite: como usar e configurar a detecção de tecnologias da página, o nível de confiança por detecção e os sinais de CVE da base local. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/cateyes - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/cateyes O **CatEyes** é o módulo de *fingerprint* (impressão digital de tecnologias) do CatSuite: com um toque ele lê a página aberta no [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) e identifica **frameworks, bibliotecas, servidores e serviços** a partir de pistas do HTML, dos cabeçalhos, dos recursos carregados e de objetos em *runtime*. Cada tecnologia aparece com um **nível de confiança** e uma **pontuação**, e, quando o CatEyes descobre a **versão**, ele cruza essa versão com uma **base local de vulnerabilidades** para destacar **sinais de CVE** que você deve revisar. Esta página explica cada conceito, cada camada de detecção, cada botão e como rodar e interpretar o CatEyes passo a passo. ## O que é o CatEyes e para que serve O CatEyes faz reconhecimento passivo da pilha de tecnologia (a *stack*) de um site. Em vez de supor o que roda por trás de uma página, ele observa evidências concretas — um header `Server`, um cookie típico, uma classe CSS, um objeto global do JavaScript, um bundle `/_next/static/` — e soma essas evidências para decidir, com honestidade, o quanto está seguro de cada detecção. É um módulo de **nível iniciante**: você não precisa configurar nada. Abre o site, toca em **VERIFICAR** e lê o resultado em camadas. O trabalho fino fica para a leitura: entender por que uma tecnologia ficou como **DETECTADO** e outra como **POSSÍVEL**, e tratar os sinais de CVE como pistas, não como veredito. > [!AVISO] > O CatEyes consulta a própria página aberta e faz algumas checagens leves de rota no mesmo host. Use-o apenas em alvos que você está **autorizado** a analisar. Consulte as regras de uso responsável em [Segurança](https://netcattest.com/catsuite/docs/seguranca). ## Conceitos essenciais Antes de ler um relatório, vale entender os termos que aparecem na tela do CatEyes. - **Fingerprint multicamadas.** A estratégia central do módulo: em vez de confiar em uma única pista, o CatEyes reúne sinais de várias **camadas** diferentes e só crava uma detecção quando a soma é convincente. - **Camada.** Cada origem de evidência tem uma camada: **SUPERFÍCIE** (cabeçalhos e cookies), **DOM** (meta, HTML e ids), **RUNTIME** (objetos globais do JavaScript e seletores), **ASSETS** (scripts, CSS e recursos), **PROBES** (checagens leves de rotas conhecidas) e **PROTOCOLO** (protocolo de rede e status). - **Sinal / evidência.** Uma pista isolada encontrada numa camada, com uma descrição e uma quantidade de pontos. Exemplo: "Header Server declarou Nginx." - **Pontuação.** A soma dos pontos de todas as evidências de uma tecnologia. Quanto maior, mais forte a detecção. - **Nível de confiança.** O rótulo derivado da pontuação e do número de camadas: **DETECTADO**, **PROVÁVEL** ou **POSSÍVEL**. - **Tecnologia e categoria.** O que foi reconhecido (React, WordPress, Nginx...) e em qual grupo ele entra (Frontend, CMS, Backend, Infra, Analytics, Editor, Conteúdo, Protocolo, Segurança). - **Versão.** Quando o CatEyes consegue extrair a versão de uma tecnologia (de um header, de um objeto em runtime, de uma meta tag ou de uma URL de asset), ela aparece no cartão e habilita o cruzamento de risco. - **Probe leve.** Uma requisição controlada a uma rota conhecida do mesmo host (por exemplo `/wp-login.php` ou uma rota inexistente para ler a página de erro), usada para reforçar a detecção de CMS, backend e servidor. - **Risco local.** O cruzamento das tecnologias **com versão** contra a base local de vulnerabilidades embutida no CatSuite. É de onde vêm os sinais de CVE. - **Sinal de CVE.** Um registro da base local que casou com uma tecnologia e sua versão. É uma **pista para revisão**, não a prova de que o alvo está vulnerável. ## A tela do CatEyes: como abrir, painéis e seções O CatEyes vive dentro do [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) e sempre analisa a **página aberta no momento**. Por isso ele só funciona quando há um site carregado; sem página, o painel mostra "Abra um site primeiro". ### Como abrir o CatEyes Há três caminhos, todos levando ao mesmo painel: - **Selo do olho na barra do Navegador.** O ícone de olho ao lado do endereço abre o CatEyes e já indica o risco pela cor (veja a tabela adiante). - **Menu de opções do Navegador.** O item **CatEyes** abre o painel; o subtítulo do item resume o último resultado. - **Aba das Ferramentas.** No painel de ferramentas do Navegador, a aba **CAT EYES** (subtítulo "Análise em camadas") fica ao lado de **CONSOLE JS**, **ARMAZENAMENTO**, **MONITOR DE REDE** e **MODIFICADOR DOM**. ### O cartão de resumo e os chips No topo do painel, um cartão mostra a URL analisada e uma faixa de *chips* com o panorama da rodada: | Chip | O que mostra | | --- | --- | | **FORTES** | Quantas tecnologias chegaram ao nível **DETECTADO**. | | **POSSÍVEIS** | Quantas ficaram em **PROVÁVEL** ou **POSSÍVEL** (abaixo de detectado). | | **PROBES OK** | Quantos *probes* leves responderam sem erro. | | **VERSÕES** | Quantas tecnologias tiveram versão identificada. | | **RISCO** | Resumo do risco local: `AGUARDANDO`, `SEM VERSÃO`, a severidade máxima com a contagem, ou `VERDE`. | | **PROTOCOLO** | O `nextHopProtocol` da navegação em maiúsculas (por exemplo `H2`, `H3`), ou `N/A`. | ### O selo do CatEyes na barra e suas cores O selo de olho na barra do Navegador muda de cor conforme o último resultado, para você sentir o risco sem abrir o painel: | Estado | Cor | Significado | | --- | --- | --- | | Sem análise | Neutro/escuro | Nenhuma análise executada ainda. | | Sem versão | Azul | Houve detecções, mas nenhuma versão confiável, então a base local não foi consultada. | | Com falhas | Laranja a vermelho | A base local encontrou sinais de CVE; a cor acompanha a severidade máxima. | | Limpo | Verde | A base local foi consultada e não retornou falhas conhecidas. | > [!NOTA] > Quando a severidade máxima é **CRÍTICA** ou **ALTA**, o selo pulsa para chamar atenção. Isso continua sendo um sinal para revisar, não um diagnóstico fechado. ### As seções da análise Depois de **VERIFICAR**, o painel se organiza em seções, de cima para baixo: - **Camadas** — cartões horizontais, um por camada, com a contagem de sinais e quantas tecnologias tocaram aquela camada. - **Tecnologias** — os resultados fortes primeiro, cada um com pontuação, versão, aliases e as evidências por camada. - **Risco Local** — o cruzamento das tecnologias com versão contra a base local; é onde os sinais de CVE aparecem. - **Probes Leves** — o resultado de cada checagem de rota conhecida. - **Avisos** — limitações e observações da rodada (aparece só quando há algo a dizer). ## As seis camadas de detecção As camadas são o coração do CatEyes. Cada detecção soma evidências de uma ou mais delas, e o painel **Camadas** mostra quantos sinais e tecnologias cada uma reuniu. | Camada | Título no app | O que observa | | --- | --- | --- | | **SUPERFÍCIE** | Cabeçalhos e Cookies | Headers da resposta (`Server`, `X-Powered-By`, `CF-RAY`...), cookies típicos e domínios da CSP. | | **DOM** | DOM, Meta e HTML | Meta tags (incluindo `generator` e Open Graph), ids, comentários e marcas no HTML. | | **RUNTIME** | Runtime JavaScript | Objetos globais (`window.jQuery`, `window.Vue`, `__NEXT_DATA__`...) e seletores do DOM. | | **ASSETS** | Assets e Paths | Scripts, folhas de estilo e recursos carregados, com extração de versão por URL. | | **PROBES** | Probes Leves | Reforço por rotas conhecidas e assinaturas de páginas de erro. | | **PROTOCOLO** | Protocolo e Rede | O protocolo de transporte da navegação e o status da resposta. | > [!DICA] > Quanto mais camadas apontam para a mesma tecnologia, maior a confiança. Uma detecção que aparece em **SUPERFÍCIE**, **RUNTIME** e **ASSETS** ao mesmo tempo é bem mais sólida do que uma que veio só de um asset. ## Níveis de confiança e pontuação O CatEyes não mostra "sim ou não": ele mostra o **quanto** confia em cada detecção. A pontuação é a soma das evidências (sinais repetidos na mesma camada não contam em dobro), e o nível sai de limiares fixos que levam em conta também o número de camadas. | Nível | Cor | Como é atingido | | --- | --- | --- | | **DETECTADO** | Verde | 70 pontos ou mais; ou 52 pontos ou mais com pelo menos 2 camadas distintas. | | **PROVÁVEL** | Azul | 42 pontos ou mais. | | **POSSÍVEL** | Âmbar | 24 pontos ou mais. | | (oculto) | — | Abaixo de 24 pontos a tecnologia não é exibida. | As detecções **DETECTADO** contam no chip **FORTES**; as demais (PROVÁVEL e POSSÍVEL) contam em **POSSÍVEIS**. Dentro da lista, os resultados vêm ordenados primeiro por nível e depois por pontuação, então o que está no topo é o mais confiável. Se nada passar do corte de 24 pontos, a seção **Tecnologias** mostra "Sem detecções acima do corte". ## Tecnologias que o CatEyes reconhece O CatEyes tem detectores dedicados, agrupados por categoria. Cada um procura as pistas específicas daquela tecnologia nas camadas onde elas costumam aparecer. | Categoria | Tecnologias reconhecidas | | --- | --- | | **Infra** | Cloudflare, Cloudflare Insights, Varnish, F5 BIG-IP | | **Backend** | PHP, Apache, Nginx, IIS, ASP.NET, Express.js | | **CMS** | WordPress, Elementor, Drupal, Joomla | | **Frontend** | React, Next.js, Vue.js, Nuxt.js, Angular, jQuery, Bootstrap, Tailwind CSS, Lottie | | **Analytics** | Facebook Pixel, Google Tag Manager, Google Analytics, Stripe | | **Editor** | Monaco Editor, Quill, KaTeX | | **Conteúdo** | Open Graph | | **Protocolo** | HTTP/3 | Cada cartão de tecnologia traz o nome (com a versão quando houver), um chip com o nível e os pontos, o chip **CAT** com a categoria, o chip **VERSÃO** quando a versão foi extraída, o chip **RISCO** quando há sinais de CVE, chips com as camadas tocadas e chips **MATCH** com os aliases usados na busca. Logo abaixo ficam as evidências, uma a uma, no formato `[CAMADA +pontos] descrição`. ## Sinais de CVE e risco local A seção **Risco Local** é onde a detecção vira pista de segurança. Ela só roda quando pelo menos uma tecnologia expôs **versão confiável**; sem versão, não há como comparar, e o painel mostra "Base local ainda não consultada". Quando há versão, o CatEyes consulta uma **base local de vulnerabilidades** embarcada no app (um banco compactado, consultado apenas em leitura, sem sair do aparelho). Ele busca pelos aliases de cada tecnologia e, para cada registro encontrado, compara a **versão detectada** com a **versão corrigida** (`fixed in`): - Se a versão detectada é **anterior** à versão corrigida, o sinal aparece marcado como **versão confirmada** (o registro é compatível com o que está na página). - Se a versão detectada é **igual ou posterior** à corrigida, o registro é **descartado** — provavelmente já corrigido. - Se o registro **não informa** versão corrigida, o sinal aparece para revisão manual, sem confirmação por versão. Cada sinal de CVE traz a severidade e o identificador, o pacote, a versão detectada, um resumo e a linha de correção. As severidades são normalizadas em quatro níveis: | Severidade | Leitura | | --- | --- | | **CRÍTICA** | Prioridade máxima de revisão. | | **ALTA** | Revisão prioritária. | | **MÉDIA** | Revisar conforme o contexto. | | **BAIXA** | Menor urgência, mas vale registrar. | Quando a base é consultada e nada casa, a seção mostra "Sem falhas conhecidas" e o chip de risco fica **VERDE**. > [!IMPORTANTE] > Um sinal de CVE é uma **pista para revisão**, não a prova de uma vulnerabilidade. A detecção de versão pode errar, e um CVE pode não se aplicar à configuração específica do alvo. Sempre confirme a versão real e o contexto antes de qualquer conclusão. ## Opções e como configurar O CatEyes não tem tela de configurações: a análise roda com um toque e os parâmetros abaixo são **fixos**. "Configurar" aqui é entender esses limites e decidir **quando e como** rodar para extrair o melhor de cada página. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | **Alvo da análise** | Página aberta no Navegador | Página atual | Define o que será lido; o CatEyes nunca sai do site aberto. | | **Momento da verificação** | Manual | Sob demanda (**VERIFICAR**) | A coleta só roda quando você toca no botão. | | **Escopo dos probes** | Mesma origem | Fixo | As checagens de rota ficam restritas ao host atual. | | **Tempo limite da coleta** | 24 segundos | 24 s | Aborta a coleta se o script demorar demais na página. | | **Corte de exibição** | 24 pontos | Fixo | Esconde tecnologias com pontuação abaixo do corte. | | **Consulta ao risco local** | Automática quando há versão | Ligada | Cruza as versões detectadas com a base local. | | **Exportação** | TXT | Sob demanda (**BAIXAR TXT**) | Gera o relatório completo da última análise. | Como ajustar na prática: deixe a **página carregar por completo** antes de verificar, para que scripts e objetos de runtime já estejam disponíveis; **re-verifique** depois de interagir com a página (login, navegação interna) para capturar cookies e rotas que só aparecem autenticado; e rode de novo se a primeira passada não detectou nada — alguns sinais dependem de recursos que ainda estavam carregando. ## Botões e ações | Botão / ação | O que faz | | --- | --- | | **VERIFICAR** | Roda a coleta na página atual e pontua tecnologias, camadas e risco local. Mostra "VERIFICANDO..." enquanto trabalha. | | **BAIXAR TXT** | Exporta a última análise como relatório de texto (`cateyes-.txt`). Fica desabilitado até existir uma análise. | | **Selo do olho (barra)** | Abre o CatEyes e sinaliza o risco pela cor; pulsa em severidade crítica ou alta. | | **Item CatEyes (menu)** | Abre o painel a partir do menu de opções do Navegador. | | **Aba CAT EYES (ferramentas)** | Abre o CatEyes dentro do painel de ferramentas do Navegador. | Ao concluir uma verificação, o CatEyes confirma com a mensagem "CatEyes atualizou as assinaturas da página.". Se a coleta falhar, aparece "Falha ao verificar a página: ..." com o motivo. Ao exportar, a confirmação é "Relatório TXT salvo." (ou com o destino, quando disponível). ## Passo a passo ### Rodar o CatEyes numa página 1. No [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador), abra o alvo **autorizado** e espere a página carregar por completo. 2. Toque no **selo do olho** na barra, ou abra a aba **CAT EYES** nas ferramentas. 3. Toque em **VERIFICAR**. 4. Aguarde a coleta (o botão mostra "VERIFICANDO..."). 5. Leia o cartão de resumo (**FORTES**, **POSSÍVEIS**, **PROBES OK**, **VERSÕES**, **RISCO**, **PROTOCOLO**) e depois as seções abaixo. ### Interpretar as detecções e a confiança 1. Comece pela seção **Tecnologias**: os itens **DETECTADO** (verde) no topo são os mais confiáveis. 2. Em cada cartão, confira a pontuação e as **evidências por camada** — elas explicam por que aquela tecnologia foi reconhecida. 3. Use o painel **Camadas** para ver de onde veio a confiança: várias camadas apontando para o mesmo lugar é um sinal forte. 4. Trate os itens **PROVÁVEL** e **POSSÍVEL** como hipóteses; confirme com uma nova verificação após a página carregar tudo. ### Revisar sinais de CVE com responsabilidade 1. Abra a seção **Risco Local**. Se aparecer "Base local ainda não consultada", é porque nenhuma versão confiável foi detectada. 2. Para cada sinal, anote a tecnologia, a **versão detectada**, o identificador e a linha de **correção**. 3. Confirme a versão real do alvo por outra via antes de concluir qualquer coisa — o sinal é uma pista. 4. Leve o contexto em conta: um CVE pode não se aplicar à configuração específica daquele servidor. ### Exportar o relatório TXT 1. Com uma análise na tela, toque em **BAIXAR TXT**. 2. O CatEyes gera `cateyes-.txt` com resumo, tecnologias, risco local, camadas, headers, cookies, probes e avisos. 3. Guarde o relatório junto das suas evidências de teste autorizado. ## Exemplos Cabeçalho do relatório TXT (seção de resumo): ```text CAT EYES URL: https://alvo.com/ Origem: https://alvo.com Titulo: Alvo autorizado Status: 200 Lang: pt-br Protocolo: h2 Banco local: consultado Severidade maxima: ALTA Tecnologias com versao: 3 Falhas conhecidas: 2 ``` Uma tecnologia detectada, como aparece no relatório: ```text - WordPress 6.4 | DETECTADO | 123 pontos Categoria: CMS Aliases de busca: wordpress, wordpresscore Camadas: DOM, Probes * [DOM +68] Meta generator declarou WordPress. * [Probes +34] O endpoint /wp-json/ respondeu com status 200. ``` Um sinal de CVE na seção de risco local: ```text - CVE-0000-00000 | ALTA | jquery Resumo: Descricao resumida da falha conhecida. Fixed in: 3.5.0 Alias: jquery | Versao detectada: 3.4.1 ``` Resultado de um probe leve: ```text - WordPress login (HEAD /wp-login.php) -> 200 URL final: https://alvo.com/wp-login.php ``` ## Problemas comuns e perguntas frequentes **"Abra um site primeiro".** — O CatEyes precisa de uma página carregada. Pesquise na rede ou digite uma URL no Navegador antes de abrir o módulo. **"Nada analisado ainda".** — Você abriu o painel mas ainda não rodou a coleta. Toque em **VERIFICAR**. **"Sem detecções acima do corte".** — A página não expôs sinais suficientes nesta rodada. Espere o carregamento terminar e verifique de novo; páginas muito enxutas ou protegidas podem simplesmente não revelar a pilha. **"Base local ainda não consultada".** — Nenhuma tecnologia expôs versão confiável, então não houve o que cruzar. É comum e esperado em muitos sites. **O chip RISCO ficou em `SEM VERSÃO`.** — Houve detecções, mas sem versão. O cruzamento de CVE depende de versão identificada. **"Falha ao verificar a página: ...".** — A coleta não completou (tempo limite de 24 s, bloqueio da página ou erro de script). Recarregue a página e tente novamente. **Os números mudam entre verificações.** — É normal: recursos, cookies e objetos de runtime variam conforme o que já carregou. Verifique com a página totalmente pronta. **O CatEyes acusa um CVE — o alvo está vulnerável?** — Não necessariamente. O sinal é uma pista baseada na versão detectada e na base local. Confirme a versão real e o contexto. Veja também [Referência de erros](https://netcattest.com/catsuite/docs/referencia/erros). ## Boas práticas e uso responsável - Analise **somente alvos autorizados**; veja [Segurança](https://netcattest.com/catsuite/docs/seguranca). - Deixe a página **carregar por completo** e, quando fizer sentido, **re-verifique** após login ou navegação interna. - Leia a **pontuação e as evidências**, não só o nome da tecnologia — elas mostram o quanto confiar. - Trate todo **sinal de CVE como pista**: confirme versão e contexto antes de concluir. - Exporte o **relatório TXT** para registrar o estado da análise junto das suas evidências. ## Continue - [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) - [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) - [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [Visão geral dos módulos](https://netcattest.com/catsuite/docs/modulos) --- # Repetir > Guia completo do módulo Repetir do CatSuite: como usar o editor HTTP com realce, autocompletar de headers, reenviar, comparar respostas e configurar o SSL/TLS. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/repetir - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/repeater O **Repetir** é o módulo de tráfego manual do CatSuite. Ele reúne um editor HTTP com realce de sintaxe, autocompletar de headers, reenvio ilimitado da mesma request, um modo de comparação de respostas lado a lado e o controle de SSL/TLS por envio. É a bancada ideal para alterar um campo por vez, disparar de novo e entender o efeito exato de cada ajuste no comportamento do alvo. Esta página explica o que cada recurso faz, como configurar o módulo e como usar o Repetir em fluxos reais de teste autorizado. > [!NOTA] > O Repetir faz replay manual e preciso de requisições individuais. Para automatizar muitas variações de uma vez, o módulo indicado é o [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso). ## O que é o módulo Repetir e para que serve O Repetir recebe uma request bruta — vinda do [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), do [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador), da [História](https://netcattest.com/catsuite/docs/modulos/historia), do [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) ou de um resultado do [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) — e deixa você editá-la livremente no formato cru (linha inicial, headers e corpo). A cada toque em **ENVIAR**, o módulo dispara a request e guarda a resposta completa, com status, tempo, tamanho e tipo de conteúdo. Você pode reenviar quantas vezes quiser, voltar e avançar pelo histórico de edições e ativar o modo de comparação para medir a diferença entre duas variações. O cabeçalho da tela deixa clara a intenção do módulo: a tarja **TRÁFEGO MANUAL**, o título **REPETIR** e o resumo "Edite, reveja versões e compare respostas." ## Conceitos essenciais do Repetir Antes de abrir a tela, vale fixar os termos que aparecem em botões, chips e configurações. ### Request bruta e editor HTTP com realce de sintaxe A **request bruta** é o texto HTTP exatamente como vai para o fio: a linha inicial (`MÉTODO alvo HTTP/1.1`), os headers (um por linha, no formato `Nome: valor`), uma linha em branco e, por fim, o corpo. O editor do Repetir aplica **realce de sintaxe** nesse texto: o método ganha destaque amarelo, a versão `HTTP/…` fica em cinza, o alvo em azul, os nomes de header em ciano, os dois-pontos em cinza-claro e os valores em verde. As marcações de payload do Intruso, no formato `§trecho§`, aparecem realçadas em fundo ciano, o que permite preparar posições sem sair do Repetir. ### Autocompletar de headers Quando você está numa linha de header que ainda não tem dois-pontos, o Repetir mostra chips de **SUGESTÕES DE HEADER** com os cabeçalhos mais comuns (Authorization, Content-Type, User-Agent, Accept, Cookie, Origin, Referer e outros). Tocar num chip insere o nome do header e o `: ` na linha atual, já com o cursor pronto para o valor. A lista é filtrada pelo que você digitou: comece a escrever `Au` e só os headers que começam com esse prefixo aparecem. ### Reenvio manual e histórico de edições Cada envio é um disparo manual e independente. O editor mantém um **histórico de edições** da request: as setas de voltar e avançar percorrem as versões já digitadas (o subtítulo do painel mostra `histórico N/total`), funcionando como desfazer e refazer específicos da request. Assim você experimenta uma variação, dispara, volta ao texto anterior e tenta outra, sem perder o caminho percorrido. ### Modo de comparação de respostas (A/B) Com o modo de comparação ligado, surge uma **request B** separada da principal. Você mantém a request A intacta, edita a B como variação e compara request e resposta numa tabela: método, host, alvo, contagem de headers (e quantos diferem), tamanho do corpo e linhas alteradas; e, para as respostas, status, tempo, tamanho, tipo de conteúdo e se o corpo ficou igual ou diferente. ### Controle de SSL/TLS por envio O Repetir deixa você decidir, por envio, como tratar a camada de transporte. Com **SSL/TLS** ligado, o envio HTTPS negocia TLS normalmente; desligado, o envio força HTTP mesmo que o alvo original estivesse em HTTPS. Há ainda a opção de **ignorar erros de certificado**, útil em laboratório quando o alvo apresenta um certificado inválido ou autoassinado. Para uma inspeção dedicada de certificado, cadeia e protocolo, use o [Analisador SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls). ### Modos de visualização: Bruto, Hex e Render Tanto a request quanto a resposta têm um alternador de visualização. **BRUTO** mostra o texto editável (na request) ou a resposta completa com status, headers e corpo (na resposta). **HEX** mostra um dump hexadecimal somente leitura. **RENDER**, disponível só na resposta, faz uma renderização local para HTML e exibe uma árvore formatada para JSON. | Termo | O que é | Onde aparece | | --- | --- | --- | | Request bruta | Texto HTTP cru, editável linha a linha | Painel REQUEST | | Realce de sintaxe | Cores por método, header, valor e marcação | Editor BRUTO | | Autocompletar | Chips de headers comuns na linha atual | Painel REQUEST | | Comparação A/B | Request B separada e tabela de diferenças | Painel COMPARAÇÃO A/B | | SSL/TLS por envio | Chaves de TLS e de certificado | Configurações | ## A tela do Repetir: painéis, abas e modos A tela é uma coluna rolável com quatro blocos principais, do topo para baixo. ### Cartão de execução manual O primeiro cartão, **EXECUÇÃO MANUAL**, concentra os controles de disparo: o botão **ENVIAR**, o botão **LIMPAR** e o ícone de ajustes que abre as configurações. Durante um envio, o ENVIAR vira CANCELAR (e CANCELANDO enquanto a interrupção é concluída). ### Painel REQUEST O painel **REQUEST** traz o editor da request principal. No topo há chips de resumo (MÉTODO, HOST, ALVO e tamanho do BODY), as setas de histórico, o alternador BRUTO/HEX, o botão COPIAR e, quando faz sentido, os chips de sugestão de header. Se a primeira linha ainda não tem método, alvo e `HTTP/1.1`, o painel mostra um aviso explicando o que falta em vez do resumo técnico. ### Painel de comparação A/B Quando o modo comparação está ligado, o painel **COMPARAÇÃO A/B** aparece entre a request e a resposta. Ele mostra um selo **B PRONTA** ou **B VAZIA**, as tabelas de resumo de REQUEST e RESPONSE, os botões de ação da comparação, os chips da request B e o editor **REQUEST B**. ### Painel RESPONSE O painel **RESPONSE** exibe a resposta do último envio. Traz chips de STATUS, TEMPO, TAMANHO e TIPO, o alternador BRUTO/HEX/RENDER, o botão COPIAR e, quando o CatSuite detecta formatos no corpo (JWT, Base64, JSON e afins), uma faixa **CONTEÚDO DETECTADO** com chips que abrem a decodificação daquele trecho. > [!DICA] > O painel RESPONSE também oferece atalhos de rolagem: ao descer muito, um botão flutuante permite voltar rápido ao topo da página. ## Opções do Repetir e como configurar Toque no ícone de ajustes do cartão de execução para abrir a folha **CONFIGURAÇÕES DO REPETIR** ("Configure o editor, SSL/TLS e a exportação em cURL."). As chaves são persistentes: o CatSuite guarda a sua escolha entre sessões. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Autocompletar headers | Ligado / Desligado | Ligado | Sugere Authorization, Content-Type, User-Agent e outros headers comuns enquanto você digita o nome de um header. | | Cores do HTTP | Ligado / Desligado | Ligado | Liga ou desliga o realce visual de método, linha inicial, headers e valores no editor. | | Ativar SSL/TLS | Ligado / Desligado | Ligado | Quando desligado, o envio força HTTP mesmo que o alvo original esteja em HTTPS. | | Ignorar erros de certificado | Ligado / Desligado | Desligado | Aceita certificados inválidos durante o envio HTTPS; só fica disponível com SSL/TLS ligado. | | Manter template padrão ao limpar | Ligado / Desligado | Ligado | Define se o LIMPAR volta ao template `GET exemplo.com` ou deixa o editor vazio. | | Modo comparação | Ligado / Desligado | Desligado | Mostra uma request B separada para comparar variações sem sobrescrever a request principal. | Para ajustar cada uma: deixe **Autocompletar headers** ligado enquanto monta requests do zero e desligue se os chips atrapalharem a digitação. **Cores do HTTP** é só conforto visual — desligue se preferir texto monocromático. **Ativar SSL/TLS** deve ficar ligado para alvos HTTPS reais; desligue apenas para forçar HTTP em testes de laboratório. **Ignorar erros de certificado** só deve ser usado em ambiente próprio e autorizado, porque desativa uma proteção de transporte. **Manter template padrão ao limpar** é preferência de produtividade. E **Modo comparação** você liga quando quiser medir duas variações em paralelo. > [!AVISO] > Ignorar erros de certificado desativa a validação da cadeia TLS no envio. Use somente em laboratório, staging ou rede própria explicitamente autorizada, nunca contra alvos de terceiros. No rodapé da folha há o botão **EXPORTAR COMO cURL**, que gera o comando `curl` equivalente à request atual (respeitando a escolha de SSL/TLS) e copia para a área de transferência. ## Botões e ações do Repetir ### Botões do cartão de execução | Botão | O que faz | | --- | --- | | ENVIAR | Dispara a request A. Durante o envio vira CANCELAR; enquanto interrompe, mostra CANCELANDO. | | LIMPAR | Esvazia a resposta e o editor, respeitando a opção "Manter template padrão ao limpar". | | Ícone de ajustes | Abre a folha CONFIGURAÇÕES DO REPETIR. | ### Botões do painel REQUEST | Botão | O que faz | | --- | --- | | Seta voltar | Volta uma versão no histórico de edições da request (desfazer). | | Seta avançar | Avança uma versão no histórico de edições (refazer). | | BRUTO / HEX | Alterna o editor entre texto bruto editável e dump hexadecimal somente leitura. | | COPIAR | Copia a request atual para a área de transferência. | | Chip de sugestão de header | Insere o header escolhido na linha atual, pronto para o valor. | ### Botões da comparação A/B | Botão | O que faz | | --- | --- | | USAR A COMO B | Copia a request A para o campo da request B. | | TROCAR A/B | Inverte as requests A e B (e suas URLs de apoio). | | ENVIAR B / CANCELAR B | Dispara a request B; durante o envio vira CANCELAR B. | | COPIAR B | Copia a request B. | | LIMPAR B | Zera a request B e a resposta dela. | ### Menu de contexto do editor Ao selecionar texto no editor, surge uma barra de ações específica do Repetir. | Ação | O que faz | | --- | --- | | COPIAR | Copia a seleção. | | COLAR | Cola o conteúdo da área de transferência (só no editor editável). | | DECODIFICAR | Envia a seleção para o [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar). | | NOTAS | Envia a seleção para o Bloco de Notas. | | TUDO | Seleciona todo o texto do bloco. | | REQUEST / RESPONSE | Copia o bloco inteiro (request ou resposta). | ## Passo a passo: como usar o Repetir ### Reenviar uma request várias vezes 1. Envie uma request para o Repetir a partir do [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), da [História](https://netcattest.com/catsuite/docs/modulos/historia) ou de outro módulo. 2. Confira os chips MÉTODO, HOST e ALVO e ajuste a request bruta no editor. 3. Toque em **ENVIAR** e leia os chips STATUS, TEMPO, TAMANHO e TIPO no painel RESPONSE. 4. Altere um campo, dispare de novo e use as setas de histórico para comparar com a versão anterior. ### Comparar duas respostas lado a lado 1. Abra as configurações e ligue **Modo comparação**. 2. No painel COMPARAÇÃO A/B, toque em **USAR A COMO B** para clonar a request atual ou cole uma segunda request completa no editor REQUEST B. 3. Edite a request B com a variação que quer testar. 4. Toque em **ENVIAR** (A) e em **ENVIAR B** e leia as tabelas de resumo para ver onde A e B divergem em status, tamanho, tipo e linhas do corpo. ### Ajustar o SSL/TLS de um envio 1. Abra as configurações do Repetir. 2. Para um alvo HTTPS real, deixe **Ativar SSL/TLS** ligado. 3. Em laboratório com certificado inválido, ligue **Ignorar erros de certificado**. 4. Para testar o comportamento sem TLS, desligue **Ativar SSL/TLS** e reenvie; o módulo passa a usar HTTP. ### Levar a request para o Intruso 1. No editor, marque as posições de payload envolvendo o trecho com o delimitador `§`, no formato `§valor§`. As marcações ficam realçadas em fundo ciano. 2. Confira o resultado — o Repetir mostra onde cada marcação cai na request. 3. Encaminhe a request para o [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) usando o atalho "Enviar para o Intruso" disponível no Interceptador, ou copie a request e cole no editor do Intruso. 4. No Intruso, use **AUTODETECTAR** ou **MARCAR SELEÇÃO** para confirmar as posições e configurar o ataque. ## Exemplos de requests Request GET simples no formato bruto, igual ao template inicial do módulo. ```http GET / HTTP/1.1 Host: exemplo.com User-Agent: Cat Suite Accept: */* ``` Request POST com corpo JSON. Note a linha em branco separando os headers do corpo. ```http POST /api/login HTTP/1.1 Host: exemplo.com Content-Type: application/json Accept: application/json {"usuario":"alice","senha":"trocar"} ``` Request com posição marcada para o Intruso usando o delimitador `§`. ```http GET /conta/§id§ HTTP/1.1 Host: exemplo.com User-Agent: Cat Suite ``` Comando gerado pela ação EXPORTAR COMO cURL. ```bash curl --request GET 'https://exemplo.com/' --header 'User-Agent: Cat Suite' --header 'Accept: */*' ``` ## Problemas comuns e perguntas frequentes (FAQ) **O envio diz "Cole uma request válida para enviar".** O editor está vazio. Cole ou digite uma request bruta completa antes de tocar em ENVIAR. **O resumo técnico não aparece.** A primeira linha precisa ter método, alvo e `HTTP/1.1`, e a request precisa de um header `Host` (ou uma URL completa na primeira linha). O painel mostra exatamente o que falta. **O envio falhou com erro de TLS.** O alvo pode ter certificado inválido ou protocolo incompatível. Em ambiente autorizado, ligue **Ignorar erros de certificado**; para diagnosticar a conexão, use o [Analisador SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls). **Cancelei o envio por engano.** O módulo mostra "Envio cancelado." e mantém a request intacta. É só tocar em ENVIAR de novo. **Preciso testar muitas variações.** O Repetir é para replay manual. Para percorrer listas de payloads automaticamente, leve a request para o [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) com as [Wordlists](https://netcattest.com/catsuite/docs/modulos/wordlists). **A request B sumiu quando outro módulo mandou uma request nova.** A request B fica separada da principal e continua intacta: a request importada substitui apenas a A. > [!IMPORTANTE] > O Repetir gera tráfego real contra o alvo a cada envio. Use-o somente dentro de um escopo autorizado e com o cuidado descrito na página de [Segurança](https://netcattest.com/catsuite/docs/seguranca). ## Continue - [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [História](https://netcattest.com/catsuite/docs/modulos/historia) - [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) - [Analisador SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) - [Visão geral dos módulos](https://netcattest.com/catsuite/docs/modulos) --- # Intruso > Intruso do CatSuite: como usar e configurar os marcadores de payload, wordlists, geradores, ritmo do ataque e filtro de resultados por status e tamanho. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/intruso - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/intruder O **Intruso** é o módulo de automação de requisições do CatSuite: ele pega uma **request-base**, substitui as **posições marcadas** por cada **payload** de uma wordlist ou de um gerador, dispara os envios no ritmo que você definir e guarda cada resposta para você **recortar e filtrar**. É a ferramenta certa para enumeração de valores, teste de parâmetros, fuzzing controlado e verificação de comportamento quando você precisa repetir a mesma request dezenas ou milhares de vezes trocando apenas um trecho. Esta página explica cada conceito, cada opção e como configurar o Intruso passo a passo, sempre contra um alvo autorizado. > [!AVISO] > O Intruso gera tráfego automatizado real. Use somente contra sistemas que você tem autorização por escrito para testar e mantenha o ritmo responsável. Veja [Segurança e uso responsável](https://netcattest.com/catsuite/docs/seguranca). ## O que é o Intruso e para que serve O Intruso resolve um problema simples de repetição: em vez de editar e reenviar uma request manualmente no [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir), você marca **onde** o valor muda, escolhe **quais** valores testar e deixa o módulo percorrer a lista inteira. Cada envio vira uma linha no **log da intrusão**, com status, tamanho e tempo, pronta para comparação. Casos de uso típicos: - Enumerar identificadores sequenciais (por exemplo `id=1` até `id=500`) para checar controle de acesso. - Testar uma lista de nomes de usuário, caminhos ou parâmetros contra um endpoint. - Variar o valor de um header ou de um campo de formulário e observar mudanças de resposta. - Medir diferenças de tamanho e tempo entre a resposta normal (a **sonda**) e cada variação. O Intruso é um **cliente HTTP local**: ele monta e envia as requests do próprio aparelho, sem servidores intermediários. O histórico da sessão fica salvo no armazenamento do app, então você pode **pausar e retomar** sem perder o progresso. ## Conceitos essenciais do Intruso Antes de configurar, vale entender os termos que aparecem na tela. Cada conceito abaixo tem um reflexo direto em um botão ou painel do módulo. ### Marcadores de payload: marcar as posições Um **marcador de payload** indica o ponto exato da request em que cada valor da sua lista vai entrar. No Intruso você **não digita** o marcador à mão: os botões **AUTODETECTAR** e **MARCAR SELEÇÃO** envolvem o trecho escolhido em um **par de marcadores** e cada posição passa a aparecer como um chip `P1`, `P2`, `P3`… na lista **MARCAÇÕES ATUAIS**. No editor, o trecho marcado fica destacado entre o par de delimitadores (`§valor§`). > [!NOTA] > O marcador de payload é a mesma ideia do token `$CAT$` que o [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) usa literalmente na URL. A diferença é que, no Intruso, o marcador é inserido pelos botões ao redor de um trecho existente, em vez de digitado. Para remover todas as marcações, use **LIMPAR** na aba REQUEST. A detecção automática entende três formatos de campo: - **Query string** na URL (`?chave=valor&chave2=valor2`). - **Formulário** `application/x-www-form-urlencoded` no corpo (`campo=valor`). - **JSON** no corpo (marca os valores de cada par `"chave": valor`). ### Wordlists e geradores de payload Os valores que entram nas posições vêm de uma de duas **origens**: - **Wordlist** — uma lista de linhas, interna ou importada por você. As wordlists internas e as criadas nas configurações do app são listadas no seletor **WORDLIST DO INTRUSO**. Importação, formato `.txt` e validação estão detalhados em [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists). - **Gerador dinâmico** — cria uma sequência numérica na hora, a partir de um intervalo e de afixos. Útil quando você não tem um arquivo, só um intervalo (por exemplo `user-001` a `user-250`). ### Modos de distribuição Quando há **mais de uma posição marcada**, o **modo de distribuição** decide como as listas são combinadas entre as marcas. São quatro modos, cada um com uma estimativa de total diferente, detalhados na tabela **Modos de distribuição e combinação**, mais abaixo. ### Processadores de payload Um **processador** é uma transformação aplicada a cada payload **antes** do envio. Você monta uma **cadeia** de passos (codificar em URL, Base64, gerar hash, mudar a caixa, escapar Unicode, adicionar afixos) e os passos são aplicados **na ordem** em que aparecem. É o mesmo mecanismo do [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar), reaproveitado para preparar os valores no momento do ataque. ### Sonda e linha de base (baseline) Ao iniciar, o Intruso envia primeiro a request **sem marcadores** — a **sonda**. A resposta da sonda vira a **linha de base** contra a qual cada variação é comparada. A partir dela o módulo calcula, para cada resultado: - **Delta de tamanho** — a diferença, em bytes, entre a resposta e a sonda. - **Semelhança** — um índice de 0 a 100 (por bigramas) entre o corpo da resposta e o da sonda. - **Diferente da sonda** — se o corpo é igual ou diferente do da linha de base. ### Recorte e filtro de resultados **Recorte** e **filtro** refinam o que o log mostra, sem reenviar nada. Você pode filtrar por **status**, **tamanho**, **tempo**, buscar por **palavras** em qualquer parte do resultado e aplicar **GREP** (manter o que casa com um padrão) ou **EXTRAIR** (puxar um trecho da resposta via regex). ### Ritmo e sessão O **ritmo** combina duas opções: o **delay** (espera fixa entre tentativas) e as **requisições por segundo** (teto de taxa). O Intruso respeita o maior intervalo entre os dois. A **sessão** é persistida em disco, então pausar, sair e voltar mantém request, marcações, payloads e resultados. ## A tela do Intruso: páginas, abas e painéis O Intruso tem duas páginas: **Preparação** (onde você monta o ataque) e **Fluxo** (onde acompanha os resultados). Você alterna entre elas com **VER FLUXO** e com o botão de voltar da página de fluxo. ### Página de preparação A preparação é dividida em três abas, no topo: **ALVO**, **REQUEST** e **PAYLOADS**. A aba REQUEST mostra um contador com o número de marcações ativas. ### Aba ALVO Define o destino e a rede. O campo **ALVO PRINCIPAL** aceita um host (`alvo.exemplo`) ou uma URL completa — o Intruso mantém apenas **host, protocolo e porta**, descartando caminho, query e barras extras. Abaixo ficam o **PROTOCOLO** (HTTPS/HTTP), a **PORTA**, o **DELAY**, as **REQUISIÇÕES POR SEGUNDO** e o interruptor de **tolerância TLS**. Os chips do topo resumem a configuração atual (alvo, delay, ritmo e TLS estrito/flexível). ### Aba REQUEST Contém o editor da request-base e as ações de marcação: **AUTODETECTAR**, **MARCAR SELEÇÃO** e **LIMPAR**. Logo abaixo, **MARCAÇÕES ATUAIS** lista os chips `P1`, `P2`… e um **preview** com as posições destacadas. Quando a request chega importada do [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) ou do [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir), o Intruso já tenta marcar os campos automaticamente. ### Aba PAYLOADS Reúne, nesta ordem: os **tiles de modo de distribuição**; (quando há duas ou mais marcas em modo Alinhadas ou Combinações) os **chips de origem por marca**; a escolha de **ORIGEM DOS PAYLOADS** (WORDLIST ou GERADOR DINÂMICO); a configuração da origem escolhida; e os **PROCESSADORES**. ### Página de fluxo (resultados) Mostra três contadores — **PROCESSADAS**, **RESPOSTAS** e **FALHAS** — e o **LOG DA INTRUSÃO**. Cada resultado é um cartão com `#` da execução, status, tamanho, tempo, o payload e um trecho da resposta. O botão **FILTROS** abre o recorte; **LIMPAR** zera os filtros ativos. Toque e segure um resultado para abrir o menu de cópia e envio. ## Opções do Intruso e como configurar A tabela abaixo reúne as opções de alvo, rede e ritmo da aba ALVO. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Protocolo | HTTPS, HTTP | HTTPS | Define o esquema do envio e sugere a porta (443 ou 80) | | Porta | 1 a 65535 | 443 (HTTPS) / 80 (HTTP) | Porta de destino; some do header `Host` quando é a padrão do protocolo | | Alvo principal | host ou URL | vazio | Destino do ataque; mantém só host, protocolo e porta | | Delay | 0, 50, 100, 250, 500, 750, 1000 ms | 0 (sem delay) | Espera fixa antes de iniciar a próxima tentativa (aceita 0 a 60000) | | Requisições por segundo | 0, 1, 2, 3, 5, 10, 20 | 0 (livre) | Teto de taxa; 0 não limita e respeita só o delay (aceita 0 a 1000) | | Ignorar erros de certificado | Ligado, Desligado | Desligado (TLS estrito) | Aceita certificados TLS inválidos ou autoassinados | Para **configurar o alvo**, cole o host ou a URL no campo ALVO PRINCIPAL; se colar uma URL com protocolo e porta, o Intruso ajusta os botões e o campo automaticamente. Escolha **HTTPS** ou **HTTP** — ao trocar, a porta padrão (443/80) é preenchida quando o campo está vazio ou contém a porta padrão do outro protocolo. Deixe **Ignorar erros de certificado** desligado em alvos públicos; ligue apenas em ambientes de teste com certificado próprio. Para **ajustar o ritmo**, pense em duas travas somadas. O **delay** garante uma pausa mínima após cada envio; use valores maiores (250 a 1000 ms) em alvos sensíveis. As **requisições por segundo** limitam o pico: com `5 REQ/S`, o Intruso espaça os envios para no máximo cinco por segundo. Com `0` (livre), não há teto de taxa e o único freio é o delay mais o tempo natural de resposta. > [!DICA] > Quando os dois estão ativos, vale o intervalo maior. `DELAY 500 MS` com `5 REQ/S` resulta em um envio a cada 500 ms, porque 500 ms é maior que os 200 ms exigidos por 5 req/s. ### Origem dos payloads: wordlist e gerador dinâmico Na aba PAYLOADS, escolha **WORDLIST** para usar uma lista pronta ou **GERADOR DINÂMICO** para criar uma sequência. Com WORDLIST selecionada, toque em **WORDLIST** para abrir o seletor **WORDLIST DO INTRUSO**: as listas internas aparecem primeiro e as suas, criadas nas configurações, logo abaixo. O seletor atualiza as listas sempre que é aberto. O **gerador dinâmico** monta números por um intervalo. Os campos são: | Campo | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Início | inteiro | 1 | Primeiro número da sequência | | Fim | inteiro maior ou igual ao início | 25 | Último número (inclusive) | | Passo | inteiro maior que 0 | 1 | Incremento entre um número e o próximo | | Padding | inteiro | 0 | Completa com zeros à esquerda até esse tamanho (0 desliga) | | Prefixo | texto | vazio | Texto fixo antes do número | | Sufixo | texto | vazio | Texto fixo depois do número | A linha **Estimativa atual** mostra quantos payloads a configuração vai gerar. O total é `((fim - início) / passo) + 1`. Com Início `1`, Fim `5`, Passo `1` e Padding `3`, a sequência é `001, 002, 003, 004, 005`; com Prefixo `user-`, vira `user-001`… `user-005`. ### Modos de distribuição e combinação Com duas ou mais posições marcadas, o modo decide como as listas se cruzam. O total estimado aparece no tile de Combinações. | Modo | O que faz | Total estimado | | --- | --- | --- | | Por marca | Uma lista, uma marca por vez (as demais ficam no valor original) | Soma dos tamanhos | | Todas as marcas | O mesmo item em todas as marcas ao mesmo tempo | Tamanho da primeira lista | | Alinhadas | Uma lista por marca, pelo mesmo índice | Menor tamanho entre as listas | | Combinações | Produto cartesiano de todas as listas | Produto dos tamanhos | **Todas as marcas** é o padrão. **Combinações** tem um teto de **10.000** combinações; acima disso o ataque é bloqueado para evitar execuções enormes. Nos modos **Alinhadas** e **Combinações** com duas ou mais marcas, aparecem os **chips de origem por marca**, que permitem usar uma lista diferente em cada posição; sem override, cada marca usa a origem global. ### Processadores de payload e a cadeia de transformação Na seção **PROCESSADORES**, toque no botão de adicionar e escolha um passo. Cada chip pode ser reordenado (subir/descer) ou removido; a cadeia é aplicada **na ordem**. | Processador | Opções | O que faz | | --- | --- | --- | | URL | — | Codifica o payload em percent-encoding | | BASE64 | — | Codifica o payload em Base64 | | JSON | — | Escapa o payload como string JSON | | HASH | MD5, SHA-1, SHA-256, SHA-512 | Substitui o payload pelo seu hash | | AFIXOS | prefixo, sufixo | Adiciona texto antes e/ou depois do payload | | CAIXA | MAIÚSCULAS, MINÚSCULAS, INVERTER | Muda a caixa das letras | | UNICODE | — | Escapa caracteres fora de ASCII como `\uXXXX` | > [!DICA] > A ordem importa. `AFIXOS` depois de `BASE64` adiciona o texto ao valor já codificado; antes, codifica o texto já com os afixos. Monte a cadeia pensando no formato que o alvo espera. ## Botões e ações | Botão | Onde | O que faz | | --- | --- | --- | | AUTODETECTAR | Aba REQUEST | Detecta e marca campos de query, formulário e JSON | | MARCAR SELEÇÃO | Aba REQUEST | Marca como posição o trecho selecionado no editor | | LIMPAR | Aba REQUEST | Remove todas as marcações da request | | WORDLIST / GERADOR DINÂMICO | Aba PAYLOADS | Alterna a origem dos payloads | | WORDLIST (seletor) | Aba PAYLOADS | Abre a lista de wordlists internas e do usuário | | Adicionar processador | Aba PAYLOADS | Acrescenta um passo de transformação à cadeia | | VER FLUXO | Preparação | Abre a página de resultados | | INICIAR INTRUSÃO | Preparação | Envia a sonda e dispara o ataque | | PAUSAR / RETOMAR | Durante a execução | Pausa e retoma sem perder o progresso | | PARAR INTRUSÃO | Durante a execução | Encerra a sessão em andamento | | FILTROS | Fluxo | Abre o painel de recorte e filtro | | LIMPAR (filtros) | Fluxo | Remove todos os filtros ativos | | Toque longo no resultado | Fluxo | Abre o menu de cópia e de envio ao Repetir | O menu do resultado (toque longo) oferece: **Enviar para o Repetir**, **Copiar URL**, **Copiar request**, **Copiar headers**, **Copiar body**, **Copiar response**, **Copiar payload** e **Copiar cURL**. ## Passo a passo ### 1. Enviar uma request e marcar automaticamente 1. No [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) ou no [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir), use **Enviar para o Intruso**. 2. O Intruso abre com a request já colada e tenta marcar os campos. Confira os chips `P1`, `P2`… em MARCAÇÕES ATUAIS. 3. Se algo ficou de fora, selecione o trecho no editor e toque em **MARCAR SELEÇÃO**. Para recomeçar, toque em **LIMPAR** e depois **AUTODETECTAR**. ### 2. Ataque com wordlist em uma posição 1. Na aba **ALVO**, confirme host, protocolo e porta. 2. Na aba **REQUEST**, marque a posição (uma só marca). 3. Na aba **PAYLOADS**, mantenha **WORDLIST**, toque no seletor e escolha a lista. 4. Ajuste o ritmo na aba ALVO (por exemplo `DELAY 250 MS` e `5 REQ/S`). 5. Toque em **INICIAR INTRUSÃO** e acompanhe o **LOG DA INTRUSÃO** na página de fluxo. ### 3. Gerador dinâmico com processadores 1. Marque a posição que recebe o número (por exemplo `id=` no corpo ou na query). 2. Na aba PAYLOADS, escolha **GERADOR DINÂMICO** e preencha Início, Fim, Passo e Padding. 3. Confira a **Estimativa atual**. 4. Em **PROCESSADORES**, adicione os passos necessários (por exemplo `AFIXOS` e depois `BASE64`). 5. Inicie o ataque. ### 4. Duas posições com modos Alinhadas ou Combinações 1. Marque **duas** posições (por exemplo usuário e senha). 2. Na aba PAYLOADS, escolha o modo: **Alinhadas** para testar pares por índice, **Combinações** para cruzar tudo. 3. Use os **chips de origem por marca** para dar uma lista a cada posição. 4. Verifique a estimativa (lembre do teto de 10.000 em Combinações) e inicie. ### 5. Recortar e filtrar os resultados 1. Na página de fluxo, toque em **FILTROS**. 2. Em **RECORTE**, ative **DIFERENTE** para ver só o que mudou em relação à sonda, ou **TAMANHO** e informe o `|delta| mín.`. 3. Para texto, ative **GREP** (manter o que casa) ou **EXTRAIR** (puxar um grupo) e digite a regex. 4. Em **MÉTODO E STATUS**, selecione códigos como `200` ou classes como cliente/servidor. 5. Toque em **APLICAR**; o botão mostra quantos resultados sobram. Use **LIMPAR** para voltar à lista completa. ## Exemplos Request-base antes de marcar, com um campo de ID na query: ```http GET /api/pedidos?id=1024 HTTP/1.1 Host: alvo.exemplo Accept: application/json ``` Depois do **AUTODETECTAR**, o valor de `id` é envolvido pelo par de marcadores (a posição aparece como `P1`): ```http GET /api/pedidos?id=§1024§ HTTP/1.1 Host: alvo.exemplo Accept: application/json ``` Sequência do gerador dinâmico com Início 1, Fim 5, Passo 1, Padding 3 e Prefixo `user-`: ```text user-001 user-002 user-003 user-004 user-005 ``` Request efetivamente enviada em uma das execuções, já com o payload no lugar da marca: ```http GET /api/pedidos?id=1031 HTTP/1.1 Host: alvo.exemplo Accept: application/json ``` ## Problemas comuns e perguntas frequentes **O ataque não inicia e volto para a aba PAYLOADS.** Não há payloads válidos: escolha uma wordlist com linhas ou verifique o gerador (Fim deve ser maior ou igual ao Início). Linhas em branco são ignoradas. **Digitei o marcador no editor e não funcionou.** No Intruso o marcador não é digitado. Selecione o trecho e use **MARCAR SELEÇÃO**, ou **AUTODETECTAR**. O token literal `$CAT$` pertence ao [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor). **O Combinações ficou bloqueado.** O produto das listas passou de 10.000. Reduza as listas, troque para **Alinhadas** ou use **Por marca**. **Todos os resultados somem ao filtrar.** Algum filtro está exigente demais (regex que não casa, delta alto, status restrito). Toque em **LIMPAR** no painel de filtros e refine aos poucos. **Recebo erros de certificado.** Em ambiente de teste com certificado próprio, ligue **Ignorar erros de certificado**. Em produção, mantenha o TLS estrito e investigue o certificado. **Fechei o app no meio do ataque.** A sessão é salva em disco: ao reabrir o Intruso, request, marcações, payloads e resultados voltam, e você pode **RETOMAR**. > [!IMPORTANTE] > Comece sempre com uma lista pequena e ritmo baixo para validar as marcações e a resposta da sonda. Só então aumente o volume. Isso evita disparar milhares de requests por um erro de marcação. ## Boas práticas e segurança > [!PERIGO] > Automação em volume pode indisponibilizar um serviço. Dispare o Intruso apenas contra alvos que você está autorizado a testar e combine o ritmo com o responsável pelo sistema. - Prefira o menor volume que responda à sua pergunta; não teste o intervalo inteiro quando uma amostra basta. - Use delay e teto de requisições por segundo em alvos de terceiros. - Compare sempre com a **sonda**: um delta de tamanho ou de status fora do padrão é mais informativo que a lista crua. - Encaminhe os resultados interessantes para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) e aprofunde um a um. ## Continue - [Wordlists e payloads](https://netcattest.com/catsuite/docs/modulos/wordlists) - [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [Segurança e uso responsável](https://netcattest.com/catsuite/docs/seguranca) --- # Descobridor > Descobridor do CatSuite: como usar e configurar a descoberta de caminhos, parâmetros e endpoints com wordlists, métodos HTTP, ritmo controlado e backoff 429. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/descobridor - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/discoverer O **Descobridor** é o módulo de descoberta de conteúdo do CatSuite: ele percorre uma **wordlist** de caminhos ou parâmetros e aplica cada entrada a uma **URL base** com o marcador `$CAT$`, testando combinações contra um alvo autorizado para revelar diretórios, endpoints e parâmetros que não aparecem na navegação comum. O módulo controla o ritmo com **requisições por segundo**, **atraso** extra e **backoff automático em 429**, filtra o que é capturado por **status** e **tamanho**, e preserva a sessão para você **pausar e retomar** de onde parou. Esta página explica cada conceito, cada opção e como configurar o Descobridor passo a passo. ## O que é o Descobridor e para que serve O Descobridor faz *fuzzing* de conteúdo (também chamado de *content discovery* ou força bruta de diretórios). Em vez de depender só dos links visíveis de um site, ele testa uma lista de nomes prováveis — `admin`, `backup`, `api/v1`, `.git`, `id`, `token` e milhares de outros — e observa como o servidor responde a cada um. Caminhos e parâmetros que existem, mas não estão publicados, costumam se revelar pelo código de status, pelo tamanho da resposta ou por um redirecionamento. É um módulo de **nível intermediário**: você escolhe a wordlist, o método HTTP e o ritmo, e interpreta os achados. O Descobridor foi desenhado para rodar em Android de forma contínua e segura, lendo wordlists grandes por *stream* (linha a linha, sem carregar tudo na memória) e respeitando limites de ritmo para não sobrecarregar o alvo nem o aparelho. > [!AVISO] > Descoberta gera muitas requisições em sequência. Use o Descobridor apenas em alvos que você está **autorizado** a testar. Consulte as regras de uso responsável em [Segurança](https://netcattest.com/catsuite/docs/seguranca). ## Conceitos essenciais Antes de configurar, vale entender os termos que aparecem na tela e nos logs. - **Wordlist.** Arquivo de texto com uma entrada por linha. Cada linha é um candidato (um nome de caminho ou de parâmetro). O Descobridor traz bases prontas e também lê as suas; veja [Wordlists](https://netcattest.com/catsuite/docs/modulos/wordlists). - **URL base com `$CAT$`.** O endereço do alvo com o marcador `$CAT$` no ponto exato em que a palavra da wordlist deve entrar. Para cada entrada, o Descobridor substitui `$CAT$` pela palavra e dispara a requisição. - **Candidato / palavra-chave.** A entrada da wordlist que está sendo testada naquela requisição. Nos resultados ela aparece como **PALAVRA-CHAVE**. - **Requisições por segundo (RPS).** O ritmo base: quantas requisições o módulo tenta disparar a cada segundo. - **Atraso (delay extra).** Uma pausa fixa adicional entre uma tentativa e a próxima, somada ao ritmo de RPS. - **Intervalo efetivo.** O espaçamento real entre requisições. O Descobridor sempre respeita o **maior** valor entre o intervalo exigido pelo RPS e o atraso extra, para você nunca ficar mais rápido do que pediu. - **Backoff em 429.** Quando o servidor responde `429 Too Many Requests`, o módulo espera automaticamente alguns segundos antes de continuar, para aliviar o serviço. - **Repetição automática.** Quando uma requisição falha por *timeout*, o módulo tenta de novo automaticamente, até um limite de tentativas. - **Verificação inicial (pre-flight).** Antes de começar a percorrer a wordlist, o Descobridor faz um `GET` de teste na URL base para validar a conectividade com o alvo. - **Filtros de captura.** Regras de **status** e **tamanho** que decidem quais respostas viram resultado (correspondência) e quais são apenas processadas e descartadas. - **Sessão retomável.** O estado da execução é salvo em disco. Se o app for para segundo plano, fechar ou cair, você consegue retomar da entrada em que parou. ## A tela do Descobridor: painéis, abas e indicadores O módulo tem três telas, acessadas a partir da tela de execução: - **Execução** — onde você informa a URL, inicia a varredura e acompanha o log e os resultados. - **Configurações** — wordlist, método, ritmo, filtros e opções de exibição (botão **CONFIGURAÇÕES** / ícone de ajustes). - **Headers** — identidade das requisições: User-Agent, Accept, Referer, Origin, spoof de IP e outros cabeçalhos. ### Tela de execução No topo ficam o campo **URL com `$CAT$`** e o botão de configurações. Logo abaixo, uma faixa de *chips* resume a configuração ativa: nome da wordlist, método, RPS, atraso, estado do log (`LOG ON`/`LOG OFF`), `RETRY AUTO`/`SEM RETRY`, `429 AUTO`/`429 OFF`, contagem compacta ou completa, resumo dos headers e o **passo efetivo** em milissegundos. Durante a execução aparecem ainda `EM EXECUÇÃO`, `PAUSADO` ou `PAUSA AUTOMÁTICA`. Três indicadores acompanham o progresso: | Indicador | O que mostra | | --- | --- | | **PROCESSADAS** | Quantas entradas já foram testadas, no formato `atual / total` da wordlist. | | **RESULTADOS** | Quantas respostas corresponderam aos filtros de status e tamanho. | | **FALHAS** | Quantas tentativas falharam (timeout ou erro inesperado). | Abaixo dos indicadores ficam os painéis **LOG DA EXECUÇÃO** (se o log estiver ativo) e **RESULTADOS DETALHADOS**. Ambos têm botão para abrir em **tela cheia**, e o painel de resultados tem botão de **filtros**. ## Bases de diretórios, parâmetros e wordlists O Descobridor já vem com duas bases internas, e você pode adicionar as suas em [Wordlists](https://netcattest.com/catsuite/docs/modulos/wordlists). | Wordlist interna | Para que serve | Entradas | | --- | --- | --- | | **Catsuite diretórios e API** (padrão) | Enumeração de caminhos e endpoints (diretórios, rotas e recursos de API). | 4.750 | | **Catsuite parâmetros** | Teste de nomes de parâmetros e variações de query/campos. | 6.453 | Para escolher a base, abra **Configurações → WORDLIST** e toque na lista desejada. As bases internas aparecem primeiro; as suas wordlists importadas aparecem em **WORDLISTS DO USUÁRIO**, logo abaixo. Se ainda não houver nenhuma personalizada, o botão **ADICIONAR WORDLIST** leva à tela de importação. > [!DICA] > Use **Catsuite diretórios e API** para mapear caminhos (`https://alvo.com/$CAT$`) e **Catsuite parâmetros** para descobrir parâmetros (`https://alvo.com/busca?$CAT$=cat-suite`). Wordlists muito grandes entram em **modo seguro** e são lidas por *stream*, sem travar o aparelho. ## Métodos HTTP: GET, POST, PUT e DELETE O **método** escolhido é aplicado a todas as tentativas geradas pela wordlist. Abra **Configurações → MÉTODO HTTP** para trocá-lo. | Método | Quando usar | | --- | --- | | **GET** (padrão) | Leitura leve para mapear caminhos e endpoints. É a escolha inicial para a maioria das descobertas. | | **POST** | Envio sem corpo para testar comportamentos que dependem do método (rotas que só respondem a POST). | | **PUT** | Útil em variações de rotas que respondem a atualização de recurso. | | **DELETE** | Testa respostas condicionadas ao método DELETE. | > [!AVISO] > `PUT` e `DELETE` podem **alterar ou remover** dados no alvo. Use-os apenas com autorização explícita e em ambientes em que você entende o efeito de cada requisição. ## Opções do Descobridor e como configurar A tabela abaixo reúne as opções da aba **Configurações**. A seção seguinte explica como ajustar cada uma. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | **Wordlist** | Bases internas ou suas listas | Catsuite diretórios e API | Lista de entradas que o módulo vai percorrer. | | **Método HTTP** | GET, POST, PUT, DELETE | GET | Método aplicado a todas as tentativas. | | **Requisições por segundo** | 1 a 6 | 2 | Ritmo base de disparo das requisições. | | **Delay extra (atraso)** | 0, 100, 250, 500, 750, 1000 ms | 250 ms | Pausa fixa adicional entre tentativas. | | **Backoff 429 automático** | Ligado / desligado | Ligado | Espera automática ao receber `429`. | | **Repetição automática** | Ligado / desligado | Ligado | Repete requisições que falharem por timeout (até 3 tentativas). | | **Filtrar por status** | Códigos 100–599 separados por vírgula | `200,204,301,302,307,308,401,403` | Quais códigos de status viram resultado. | | **Filtrar por tamanho mínimo** | Bytes (≥ 0) | 0 (desligado) | Tamanho mínimo da resposta para virar resultado. | | **Mostrar log** | Ligado / desligado | Ligado | Exibe o log completo da execução. | | **Mostrar contagem compacta** | Ligado / desligado | Ligado | Resume números grandes (mil / milhão / bilhão). | | **Ativar headers** | Ligado / desligado | Desligado | Aplica os cabeçalhos personalizados da aba Headers. | ### Ritmo: requisições por segundo Abra **REQUISIÇÕES POR SEGUNDO** e escolha de **1 a 6 RPS**. Valores até 2 são mais leves para execuções longas; 3 e 4 são equilibrados; 5 e 6 são mais agressivos, porém ainda controlados para celular. O padrão é **2 RPS**. Esse valor define o intervalo base entre requisições (1000 ms dividido pelo RPS, arredondado para cima): | RPS | Intervalo base | | --- | --- | | 1 | 1000 ms | | 2 | 500 ms | | 3 | 334 ms | | 4 | 250 ms | | 5 | 200 ms | | 6 | 167 ms | ### Atraso (delay extra) Abra **DELAY EXTRA** e escolha **SEM DELAY** (0 ms) ou **100, 250, 500, 750 ou 1000 ms**. O atraso é uma pausa fixa somada ao ritmo. O Descobridor respeita sempre o **maior intervalo** entre o exigido pelo RPS e o atraso: com 2 RPS (500 ms) e atraso de 250 ms, o passo efetivo continua 500 ms; já com 6 RPS (167 ms) e atraso de 500 ms, o passo efetivo vira 500 ms. O painel **EXECUÇÃO SEGURA**, na própria tela de configurações, mostra o valor "`N` MS EFETIVOS" calculado a partir das suas escolhas. ### Backoff automático em 429 Mantenha **BACKOFF 429 AUTOMÁTICO** ligado (padrão) para que o módulo reduza o ritmo sozinho quando o servidor responder `429 Too Many Requests`. No primeiro `429` da sequência, o Descobridor aguarda **5 segundos** antes da próxima tentativa; se os `429` continuarem, a espera sobe para **10 segundos**. Quando chega uma resposta diferente de `429`, a contagem é zerada. O log registra cada pausa com a mensagem "429 recebido. Backoff automático aplicado por `N`s antes da próxima tentativa." ### Repetição automática Com **REPETIÇÃO AUTOMÁTICA** ligada (padrão), cada requisição que falhar por *timeout* é refeita automaticamente, somando **até 3 tentativas**. Desligada, cada entrada é testada **uma única vez**. Falhas que não são de timeout (erros inesperados) contam direto como **FALHA** e não são repetidas. ### Opções de exibição - **MOSTRAR LOG** controla o painel **LOG DA EXECUÇÃO**. Com o log desligado, a tela mostra só os resultados, ocupando mais espaço. - **MOSTRAR CONTAGEM COMPACTA** resume números grandes (por exemplo, `12 mil` em vez de `12.000`). Desligada, os indicadores mostram o valor completo com separador de milhar. ## Filtros de captura por status e tamanho Esses dois filtros, na aba **Configurações**, decidem o que é considerado **resultado** durante a varredura. - **Filtrar por status.** Lista de códigos HTTP separados por vírgula. Só respostas com um desses códigos viram resultado. O padrão `200,204,301,302,307,308,401,403` cobre sucesso (`200`, `204`), redirecionamentos (`301`, `302`, `307`, `308`) e acessos negados reveladores (`401`, `403`). São aceitos códigos de **100 a 599**. Deixe o campo **vazio** para capturar todos os status. - **Filtrar por tamanho mínimo.** Tamanho mínimo da resposta, em **bytes**. Respostas menores do que esse valor são processadas, mas não viram resultado. Útil para descartar páginas de erro curtas e padronizadas. O padrão **0** desliga o filtro de tamanho. > [!NOTA] > Esses filtros atuam no momento da captura. Para refinar depois, sem repetir a varredura, use os **filtros dos resultados** (veja adiante). As respostas que não correspondem são descartadas do disco para economizar espaço. ## Botões e ações | Botão / ação | O que faz | | --- | --- | | **CONFIGURAÇÕES** / **CONFIG.** | Abre a aba de configurações do Descobridor. | | **CONFIGURAR** | Aparece no lugar de iniciar quando ainda não há configuração salva; leva às configurações. | | **INICIAR** | Começa a varredura (após a verificação inicial). | | **PAUSAR** | Pausa a execução preservando o ponto atual da wordlist. | | **RETOMAR** | Continua da entrada em que a sessão foi pausada. | | **PARAR** | Interrompe e encerra a execução atual. | | **LIMPAR** | Limpa log, resultados e a sessão temporária. | | **SALVAR** | Salva as configurações e volta para a execução. | | **CANCELAR** | Descarta as alterações nas configurações. | | Ícone de **filtro** | Abre os filtros dos resultados. | | Ícone de **tela cheia** | Expande o log ou os resultados. | | **VER RESPONSE** | Abre a resposta completa salva de um resultado. | | **LIMPAR FILTROS** | Remove os filtros aplicados aos resultados. | ### Ações por resultado Toque em um resultado para ver os detalhes (**PALAVRA-CHAVE**, **URL**, **CONTENT-TYPE**, **LOCATION** quando houver, e **PRÉVIA**). Pressione e segure (ou use o menu) para abrir as ações de cópia: | Ação | O que faz | | --- | --- | | **Enviar para o Repetir** | Abre a requisição no módulo [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir). | | **Copiar URL** | Copia a URL final testada. | | **Copiar headers** | Copia os cabeçalhos enviados na requisição. | | **Copiar body** | Copia o corpo enviado (quando houver). | | **Copiar cURL** | Copia a requisição como comando `curl`. | ## Headers e identidade das requisições Na aba **Headers**, ative **ATIVAR HEADERS** para aplicar cabeçalhos personalizados em **todas** as requisições do Descobridor, inclusive na verificação inicial e no loop da wordlist. Com os headers ativos, você define **User-Agent**, **Accept-Language**, **Accept**, **Content-Type**, **Referer**, **Origin**, **Sec-Fetch-Site** e um **spoof de IP** (header e valor). Com a opção desligada (padrão), o Descobridor usa os cabeçalhos padrão do sistema. O *chip* `HEADERS` na tela de execução mostra `DESATIVADOS`, `PADRÃO` ou `PERSONALIZADO`. ## Passo a passo ### Mapear diretórios de um alvo 1. Abra o Descobridor e toque em **CONFIGURAÇÕES**. 2. Em **WORDLIST**, escolha **Catsuite diretórios e API**. 3. Deixe **MÉTODO HTTP** em **GET**. 4. Ajuste **REQUISIÇÕES POR SEGUNDO** para **2** e **DELAY EXTRA** para **250 MS** (padrões seguros). 5. Confira **Filtrar por status** (padrão) e deixe **Filtrar por tamanho mínimo** em `0`. 6. Toque em **SALVAR**. 7. No campo **URL com `$CAT$`**, escreva `https://alvo.com/$CAT$`. 8. Toque em **INICIAR**. O módulo faz a verificação inicial e começa a varredura. 9. Acompanhe **PROCESSADAS**, **RESULTADOS** e **FALHAS** e abra os achados em **RESULTADOS DETALHADOS**. ### Descobrir parâmetros 1. Em **CONFIGURAÇÕES → WORDLIST**, escolha **Catsuite parâmetros**. 2. Salve e volte para a execução. 3. Em **URL com `$CAT$`**, posicione o marcador no nome do parâmetro, por exemplo `https://alvo.com/busca?$CAT$=cat-suite`. 4. Toque em **INICIAR** e observe variações de status e tamanho que indiquem parâmetros válidos. ### Enviar um achado para outro módulo 1. Em **RESULTADOS DETALHADOS**, toque no resultado que interessa. 2. Abra o menu de ações e toque em **Enviar para o Repetir**. 3. No [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir), ajuste a requisição e reenvie. Para automatizar variações, leve-a ao [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso). ## Exemplos URL base para enumeração de caminhos: ```text https://alvo.com/$CAT$ ``` URL base para descoberta de parâmetros: ```text https://alvo.com/busca?$CAT$=cat-suite ``` Filtro de status que captura sucesso, redirecionamentos e acessos negados: ```text 200,204,301,302,307,308,401,403 ``` Requisição copiada de um resultado como comando cURL (ação **Copiar cURL**): ```bash curl 'https://alvo.com/api/v1/users' ``` ```bash curl -X POST -H 'Content-Type: application/json' --data-raw '{}' 'https://alvo.com/api/login' ``` ## Pausar, retomar e recuperação de sessão O Descobridor salva o estado da execução em disco periodicamente. Isso permite: - **Pausar e retomar manualmente.** Toque em **PAUSAR** para parar no ponto atual e em **RETOMAR** para continuar da mesma entrada. - **Pausa automática.** Ao enviar o app para segundo plano durante a varredura, o módulo pausa sozinho para preservar o ponto da wordlist (*chip* `PAUSA AUTOMÁTICA`). Ao voltar, a execução retoma. - **Recuperação após encerramento.** Se o app for fechado ou cair, ao reabrir o Descobridor você recebe uma mensagem de sessão recuperada e pode **RETOMAR** da entrada em que parou, com os achados preservados. > [!IMPORTANTE] > A recuperação de sessão depende de ela estar habilitada nas configurações do CatSuite. As respostas completas são salvas em arquivos temporários da sessão; o módulo mantém apenas as sessões mais recentes e limpa as antigas automaticamente. ## Problemas comuns e perguntas frequentes **"Inclua `$CAT$` na URL..."** — A URL base precisa conter o marcador `$CAT$` no ponto em que a palavra entra. Sem ele, o módulo não sabe onde aplicar a wordlist. **"A URL informada não é válida."** — Revise o endereço. Se você não digitar o esquema, o Descobridor assume `https://` automaticamente e avisa. **A verificação inicial falhou por timeout.** — Verifique conexão, VPN e se o alvo está no ar antes de iniciar. A verificação inicial é um `GET` de teste na URL base. **Muitos `429` aparecendo.** — O alvo está limitando o ritmo. Mantenha o **backoff 429 automático** ligado, reduza o **RPS** e aumente o **atraso**. Veja também [Referência de erros](https://netcattest.com/catsuite/docs/referencia/erros). **Nenhum resultado, só processadas.** — Os filtros de **status** ou **tamanho** podem estar restritivos demais. Esvazie o campo de status para capturar todos os códigos ou zere o tamanho mínimo. **A wordlist configurada não está disponível.** — Abra as configurações e selecione outra wordlist, ou reimporte a lista personalizada em [Wordlists](https://netcattest.com/catsuite/docs/modulos/wordlists). **Muitas FALHAS.** — Timeouts frequentes indicam instabilidade de rede ou alvo lento. Reduza o RPS, mantenha a repetição automática ligada e verifique a conexão. ## Boas práticas e uso responsável - Teste **somente alvos autorizados**. A descoberta é intensa por natureza; veja [Segurança](https://netcattest.com/catsuite/docs/seguranca). - Comece com **RPS baixo** e **atraso** moderado; suba o ritmo só quando tiver certeza de que o alvo aguenta. - Deixe o **backoff 429** e a **repetição automática** ligados para um comportamento mais educado com o serviço. - Use os **filtros de status e tamanho** para separar sinal de ruído desde a captura. - Encaminhe achados relevantes para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) e o [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) em vez de repetir a varredura inteira. ## Continue - [Wordlists](https://netcattest.com/catsuite/docs/modulos/wordlists) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [Visão geral dos módulos](https://netcattest.com/catsuite/docs/modulos) --- # Decodificar > Decodificar do CatSuite: como usar e configurar a autodetecção de JWT, Base64, URL, Hex, HTML Entities e Binary, além do inspetor JWT/JWE e hashes MD5 e SHA. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/decodificar - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/decoder O **Decodificar** é a bancada de transformação de dados do CatSuite: você cola ou envia um valor do tráfego e o módulo **reconhece o formato**, mostra o conteúdo legível e ainda **gera e identifica hashes**. Ele reúne, em uma só tela, a **autodetecção** de JWT, Base64, URL, Hex, HTML Entities e Binary, o suporte a **Base64URL** e **Unicode**, inspetores dedicados de **JWT**, **assinaturas JWT** e **JWE**, e a geração de **MD5, SHA-1, SHA-256 e SHA-512**. Esta página explica cada conceito, cada opção e como usar e configurar o Decodificar passo a passo, do jeito mais simples para quem está começando. > [!NOTA] > Todo o processamento do Decodificar acontece **localmente**, no próprio aparelho. Nada é enviado para servidores externos. Tokens, segredos e textos colados ficam só no app. ## O que é o Decodificar e para que serve Durante um teste, o tráfego vem cheio de valores "embaralhados": um parâmetro em percent-encoding na URL, um cookie em Base64, um token JWT no header `Authorization`, um corpo com entidades HTML, um dump em hexadecimal. O Decodificar é a ferramenta que **traduz** esses valores de volta para texto legível, e também faz o **caminho inverso** (codificar) quando você precisa montar um valor para reenviar. Casos de uso típicos: - Ler o conteúdo de um **token JWT** (header e payload) sem depender de sites externos. - Decodificar um parâmetro ou cookie em **Base64** ou **Base64URL** para ver o que ele carrega. - Transformar **%20**, `<`, bytes em **Hex** ou blocos **binários** de volta em texto. - **Gerar** o hash de um valor (MD5, SHA-1, SHA-256, SHA-512) para comparar com outro. - **Identificar** rapidamente que tipo de hash é uma string capturada, pelo tamanho. - Inspecionar o envelope de um **JWE** e descobrir quais algoritmos de criptografia ele usa. O Decodificar é um **auxiliar de análise**: ele não envia requisições nem altera o alvo. É a dupla natural do [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), do [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) e do [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador), que mandam trechos de tráfego para ele. ## Conceitos essenciais do Decodificar Antes de mexer nas opções, vale entender os termos que aparecem na tela. Cada conceito abaixo corresponde a um formato, um painel ou um botão do módulo. ### Codificar e decodificar **Codificar** é transformar um texto legível no formato de transporte (por exemplo, texto comum para Base64). **Decodificar** é o contrário: partir do formato de transporte e recuperar o texto legível. No painel **FORMATOS**, um alternador escolhe entre os dois modos para o mesmo formato selecionado. ### URL (percent-encoding) A codificação de **URL** troca caracteres especiais por `%XX`. Um espaço vira `%20`, uma chave `{` vira `%7B`, e assim por diante. É o formato dos parâmetros de query e de formulários `application/x-www-form-urlencoded`. Ao decodificar, o Decodificar transforma `%20` de volta em espaço e reconstrói o texto original. ### Base64 O **Base64** representa bytes usando 64 caracteres imprimíveis (`A-Z`, `a-z`, `0-9`, `+`, `/`) com `=` de preenchimento. É muito comum em APIs, cookies, blobs e cabeçalhos. O Decodificar interpreta o texto como bytes UTF-8 ao codificar e reconstrói o texto ao decodificar. ### Base64URL O **Base64URL** é a variante **segura para URL**: troca `+` e `/` por `-` e `_` e costuma **dispensar o `=`** de preenchimento. É o formato dos três segmentos de um **JWT** e de muitos links e tokens. Ao codificar em Base64URL, o Decodificar remove o preenchimento `=`; ao decodificar, ele recompõe o preenchimento necessário automaticamente. > [!DICA] > Se um valor tem `-` e `_` no lugar de `+` e `/`, ou não termina em `=`, provavelmente é **Base64URL**, não Base64 padrão. ### Hexadecimal O **Hexadecimal** (Hex) mostra cada byte como dois dígitos de `0` a `f`. O Decodificar exibe os bytes separados por espaço, no padrão `48 65 78`. Ao decodificar, ele ignora separadores e caracteres fora de `0-9a-f` e remonta os bytes dois a dois. ### HTML Entities As **entidades HTML** escapam caracteres com significado na marcação: `<` vira `<`, `>` vira `>`, `&` vira `&`, `"` vira `"` e `'` vira `'`. O Decodificar converte nos dois sentidos e também resolve **entidades numéricas** como `é` (decimal) e `é` (hexadecimal), que apontam para pontos de código **Unicode**. ### ASCII / Binary O formato **ASCII / Binary** mostra cada byte como um bloco de **8 bits** (`01001000`), separados por espaço. Ao decodificar, o Decodificar exige blocos de exatamente 8 bits contendo só `0` e `1`, e reconstrói o texto a partir deles. ### Unicode e UTF-8 O Decodificar trata o texto como **UTF-8** em todas as conversões. Isso significa que caracteres acentuados, emojis e qualquer ponto de código Unicode **sobrevivem** ao codificar e decodificar Base64, Hex e Binary. Não há um botão "Unicode" separado: o suporte a Unicode é **intrínseco** ao módulo e, no caso de HTML Entities, aparece também na forma das entidades numéricas `&#...;` e `&#x...;`, que são resolvidas para o caractere Unicode correspondente. ### JWT (JSON Web Token) Um **JWT** tem três partes separadas por ponto: **header**, **payload** e **signature**, cada uma em Base64URL. O **header** diz o algoritmo (`alg`) e o tipo (`typ`); o **payload** carrega as claims (como `sub`, `exp`, `iat`); a **signature** garante a integridade. O **Inspetor de JWT** separa, decodifica e formata as duas primeiras partes como JSON, converte o `exp` em data legível e permite **remontar** o token após editar o payload. > [!IMPORTANTE] > O Decodificar lê o JWT **localmente** e **não valida a assinatura** — isso exigiria a chave ou o segredo. Ao editar o payload e remontar, a assinatura original é mantida, então o token reconstruído provavelmente ficará **inválido** para o servidor. ### Assinaturas JWT (famílias de algoritmo) O painel **JWT e assinaturas** lê o campo `alg` do header e classifica a assinatura em uma **família** e um **tipo**: - **HMAC (HS256/384/512)** — assinatura **simétrica**: o mesmo segredo compartilhado assina e valida. - **RSA (RS256/384/512)** — assinatura **assimétrica** com PKCS#1 v1.5: chave privada assina, pública valida. - **RSA-PSS (PS256/384/512)** — variante moderna do RSA com padding PSS, também assimétrica. - **ECDSA (ES256/384/512)** — curvas elípticas com par de chaves, assimétrica. - **EdDSA** — família moderna (normalmente Ed25519/Ed448), assimétrica. - **none** — header com `alg=none`: o token **não está assinado**. ### JWE (JSON Web Encryption) Um **JWE compacto** tem **cinco** segmentos: **protected header**, **encrypted key**, **initialization vector (IV)**, **ciphertext** e **authentication tag**. O **Inspetor de JWE** lê apenas o **protected header** (os metadados públicos do envelope) e identifica `alg` (gestão de chave), `enc` (criptografia do conteúdo), `zip`, `cty`, `typ` e `kid`. > [!AVISO] > O Inspetor de JWE **não descriptografa** o payload. Sem a chave correta, o conteúdo continua cifrado; o módulo só mostra o envelope. ### Hashes Um **hash** é uma impressão digital de tamanho fixo de um conteúdo. O Decodificar **gera** MD5, SHA-1, SHA-256 e SHA-512 a partir do texto (em bytes UTF-8) e também **identifica** um hash capturado pelo tamanho em caracteres hexadecimais: 32 (MD5), 40 (SHA-1), 64 (SHA-256) e 128 (SHA-512). Hash é um caminho só de ida: ele **não é reversível**. ### Smart Decode (autodetecção) O **Smart Decode** é a "mágica" do módulo: você cola um valor e ele **testa vários formatos automaticamente**, mostrando um cartão para cada detecção plausível. Ele reconhece **JWT**, **JWE**, **URL**, **Base64**, **Base64URL**, **Hex**, **HTML Entities** e **ASCII/Binary**, e só mostra um resultado quando ele é diferente da entrada e parece **legível** (acima de 85% de caracteres imprimíveis), evitando "lixo" na tela. ## A tela do Decodificar: página inicial, painéis e abas O Decodificar abre numa **página inicial** com o título `DECODIFICAR` e o resumo "Analise strings, tokens e hashes rapidamente". Dela saem seis entradas, cada uma com um ícone, uma descrição curta e um chip de resumo à direita. Toque em uma entrada para abrir a página correspondente; em cada página, o atalho **DECODIFICAR** no topo (com a seta) volta para o início. | Entrada | O que abre | Resumo exibido | | --- | --- | --- | | FORMATOS | Codificar e decodificar URL, Base64, Base64URL, Hex, HTML Entities e ASCII/Binary | O formato atual (ex.: `URL`) | | INSPETOR DE JWT | Separar header, payload e signature, converter `exp` e remontar o token | `JWT` | | JWT E ASSINATURAS | Classificar HS/HMAC, RS/RSA, PS/RSA-PSS, ES/ECDSA e simétrica vs. assimétrica | `HS / RS / ES` | | INSPETOR DE JWE | Ler o protected header e separar os 5 segmentos do JWE compacto | `JWE` | | HASHES E CRIPTO | Gerar MD5, SHA-1, SHA-256, SHA-512 e identificar hashes | O algoritmo atual (ex.: `SHA-256`) | | SMART DECODE | Autodetecção de JWT, Base64, URL, Hex, HTML Entities e Binary | `MÁGICA` | Cada página tem a mesma estrutura: um campo de **ENTRADA** para colar o valor, uma linha de **botões de ação** e um ou mais blocos de **RESULTADO**. Os blocos de resultado são **selecionáveis**: toque e segure para copiar ou para reenviar um trecho ao próprio Smart Decode. ## Opções do Decodificar e como configurar As opções do Decodificar ficam nas páginas **FORMATOS** e **HASHES E CRIPTO**. A tabela abaixo reúne todas. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Modo (FORMATOS) | DECODIFICAR, CODIFICAR | DECODIFICAR | Define o sentido da conversão para o formato selecionado | | Formato | URL, BASE64, BASE64URL, HEXADECIMAL, HTML ENTITIES, ASCII / BINARY | URL | Escolhe qual transformação será aplicada à entrada | | Algoritmo (HASHES) | MD5, SHA-1, SHA-256, SHA-512 | SHA-256 | Escolhe o algoritmo usado em GERAR HASH | Para **configurar os FORMATOS**, comece pelo **MODO**: deixe em **DECODIFICAR** para ler um valor capturado, ou troque para **CODIFICAR** quando quiser produzir um valor para reenviar. Em seguida, toque no chip do **FORMATO** desejado — a descrição logo abaixo explica o que aquele formato faz. Cole o conteúdo em **ENTRADA** e toque em **EXECUTAR**. O resultado aparece em **RESULTADO**; use **USAR SAÍDA** para jogar o resultado de volta na entrada e **encadear** conversões (por exemplo, decodificar Base64URL e depois ler o JSON). Para **configurar os HASHES**, toque no chip do **ALGORITMO** (MD5, SHA-1, SHA-256 ou SHA-512) antes de gerar. Cole o conteúdo em **ENTRADA** e use **GERAR HASH**. Se o que você colou já é um hash e você quer saber qual é, toque em **IDENTIFICAR**: o módulo olha o tamanho em caracteres hexadecimais e diz o tipo provável. > [!DICA] > O **algoritmo de hash** afeta apenas o botão **GERAR HASH**. O **IDENTIFICAR** funciona para qualquer hash hexadecimal, independentemente do algoritmo selecionado nos chips. ## Botões e ações Cada página tem seu próprio conjunto de botões. A tabela reúne o que cada um faz. | Botão | Página | O que faz | | --- | --- | --- | | EXECUTAR | Formatos | Aplica o formato e o modo atuais à entrada | | USAR SAÍDA | Formatos | Copia o resultado de volta para o campo de entrada | | COPIAR | Formatos | Copia o resultado para a área de transferência | | ANALISAR | Inspetor de JWT | Separa e decodifica header, payload e signature | | COPIAR TOKEN | Inspetor de JWT / JWE | Copia o token original da entrada | | REMONTAR TOKEN | Inspetor de JWT | Recria o token a partir do payload editado | | COPIAR REMONTADO | Inspetor de JWT | Copia o token reconstruído | | ANALISAR ASSINATURA | JWT e assinaturas | Classifica a família e o tipo da assinatura | | USAR TOKEN DO INSPETOR | JWT e assinaturas | Traz para cá o token já colado no Inspetor de JWT | | ANALISAR JWE | Inspetor de JWE | Separa os 5 segmentos e lê o protected header | | GERAR HASH | Hashes e cripto | Gera o hash da entrada no algoritmo escolhido | | IDENTIFICAR | Hashes e cripto | Diz o tipo provável de um hash pelo tamanho | | COPIAR HASH | Hashes e cripto | Copia o hash gerado | | MÁGICA | Smart Decode | Roda a autodetecção sobre a entrada | | LIMPAR | Smart Decode | Apaga a entrada e os resultados | | USAR COMO ENTRADA | Smart Decode | Usa o texto recebido do tráfego como entrada | | ABRIR JWT / ABRIR JWE | Smart Decode | Abre o token detectado no inspetor correspondente | ## Passo a passo ### 1. Decodificar um valor de formato simples 1. Na página inicial, abra **FORMATOS**. 2. Deixe o **MODO** em **DECODIFICAR**. 3. Escolha o **FORMATO** (por exemplo, **BASE64**). 4. Cole o valor em **ENTRADA** e toque em **EXECUTAR**. 5. Leia o **RESULTADO**. Se ele ainda estiver codificado em outro formato, toque em **USAR SAÍDA** e repita com o formato seguinte. ### 2. Codificar um valor para reenviar 1. Em **FORMATOS**, troque o **MODO** para **CODIFICAR**. 2. Escolha o formato de destino (por exemplo, **URL** para um parâmetro de query). 3. Digite ou cole o texto legível em **ENTRADA** e toque em **EXECUTAR**. 4. Use **COPIAR** e leve o valor para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) ou o [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador). ### 3. Inspecionar e remontar um JWT 1. Abra o **INSPETOR DE JWT** e cole o token completo em **TOKEN JWT**. 2. Toque em **ANALISAR**. Veja a visualização colorida (HEADER, PAYLOAD, SIGNATURE), o **HEADER DECODED** e, se houver `exp`, o **TIMESTAMP exp** convertido para data local. 3. Edite o JSON em **PAYLOAD EDITÁVEL** se quiser testar uma variação. 4. Toque em **REMONTAR TOKEN** e depois em **COPIAR REMONTADO**. 5. Lembre-se: a assinatura antiga é mantida, então o token remontado tende a ser recusado pelo servidor que valida a assinatura. ### 4. Classificar a assinatura de um JWT 1. Abra **JWT E ASSINATURAS**. Se o token já está no Inspetor, toque em **USAR TOKEN DO INSPETOR**; senão, cole em **TOKEN JWT**. 2. Toque em **ANALISAR ASSINATURA**. 3. Leia o **RESUMO DA ASSINATURA** (`ALG`, `TIPO`, `FAMÍLIA`, `typ`) e a **CLASSIFICAÇÃO**, que explica o fluxo de chaves e lista os algoritmos da mesma família. ### 5. Ler o envelope de um JWE 1. Abra o **INSPETOR DE JWE** e cole o JWE compacto (5 segmentos) em **TOKEN JWE**. 2. Toque em **ANALISAR JWE**. 3. Veja o **RESUMO DO ENVELOPE** (`alg`, `enc`, `zip`, `cty`, `typ`, `kid`), a visualização dos 5 segmentos e o **PROTECTED HEADER DECODED**. ### 6. Gerar e identificar hashes 1. Abra **HASHES E CRIPTO**. 2. Para gerar: escolha o **ALGORITMO**, cole o conteúdo em **ENTRADA** e toque em **GERAR HASH**. Use **COPIAR HASH** para levar o valor adiante. 3. Para identificar: cole o hash em **ENTRADA** e toque em **IDENTIFICAR**. O módulo responde com o tipo provável pelo tamanho. ### 7. Colar ou enviar um valor vindo do tráfego 1. No [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador), no [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) ou em qualquer texto selecionável do app, **selecione** o trecho. 2. No menu de seleção, toque em **DECODIFICAR** (ou use **Enviar para Decodificar**). O app mostra a mensagem "Análise enviada para o Decodificar". 3. O Decodificar abre o **SMART DECODE** com o trecho em **TEXTO RECEBIDO** e já roda a autodetecção. 4. Toque em **USAR COMO ENTRADA** para editar e reprocessar, ou em **ABRIR JWT** / **ABRIR JWE** quando um token for detectado. 5. No [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador), use **Detectar JWT / Base64 em storage** para mandar tokens e valores do storage da página direto para cá. > [!DICA] > Se preferir, cole o valor manualmente na **ENTRADA MÁGICA** e toque em **MÁGICA**. O resultado é o mesmo da autodetecção vinda do tráfego. ## Exemplos Decodificação de URL (percent-encoding): ```text nome%3DCat%20Suite%26id%3D1024 ``` ```text nome=Cat Suite&id=1024 ``` Base64 e Base64URL com o mesmo conteúdo: ```text Q2F0U3VpdGU= ``` ```text CatSuite ``` Hexadecimal em bytes separados por espaço: ```text 48 65 78 ``` ```text Hex ``` Entidades HTML, incluindo uma entidade numérica Unicode: ```text <b>café</b> ``` ```text café ``` Blocos binários de 8 bits: ```text 01001000 01101001 ``` ```text Hi ``` JWT de exemplo e as duas primeiras partes decodificadas: ```text eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ``` ```json { "alg": "HS256", "typ": "JWT" } ``` ```json { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } ``` Hashes do texto `CatSuite` em cada algoritmo: ```text MD5 08aa3451f325a5ffebb46df10aec9ecf SHA-1 30a1abc0a012cd7a49f469d698d7881df04b201e SHA-256 10f3dfd0bb7f1fb99bbe8fd16816ad6e5ca012be645c2a0660d50a45ecfb7961 SHA-512 1824976bbd707e6d646ff5fbb5ea3d9171d8ba3882d9ef6e81e84c34ea1a52f3ea097123e30420037917cd78bcd3df2f89cd794a3d9faa840330c5ca785aa58f ``` Identificação pelo tamanho em caracteres hexadecimais: ```text 32 caracteres -> MD5 40 caracteres -> SHA-1 64 caracteres -> SHA-256 128 caracteres -> SHA-512 ``` ## Problemas comuns e perguntas frequentes **Colei um Base64 e o resultado veio "sujo" ou vazio.** Pode ser **Base64URL** (com `-` e `_`), não Base64 padrão. Troque o formato para **BASE64URL**. Também confira se não há quebras de linha ou espaços colados junto; o módulo remove espaços, mas conteúdo cortado não decodifica. **O Hex não decodifica.** O decodificador de Hex precisa de um número **par** de dígitos hexadecimais. Caracteres fora de `0-9a-f` são ignorados, mas, se sobrar um dígito solto, a conversão falha. Cole os bytes completos. **O Binary deu erro.** Use blocos de exatamente **8 bits** contendo só `0` e `1`, separados por espaço. Qualquer outro caractere invalida a entrada. **O JWT não abre.** Um JWT precisa de pelo menos **header e payload** separados por ponto, e ambos devem ser JSON válido em Base64URL. Tokens truncados, com aspas a mais ou colados pela metade não passam. **Editei o payload e o token "quebrou".** É esperado. O Decodificar **mantém a assinatura original** ao remontar e **não assina** de novo (ele não tem a chave). O token remontado serve para estudo, não para enganar um servidor que valide a assinatura. **O JWE não mostra o conteúdo.** O Inspetor de JWE lê **apenas o envelope** (protected header e segmentos). O payload continua **cifrado**: sem a chave correta, não há como descriptografar. **O IDENTIFICAR disse que "o tamanho não bate".** O valor é hexadecimal, mas não tem 32, 40, 64 nem 128 caracteres. Pode ser um hash de outro algoritmo, um valor truncado ou algo que não é hash. **O Smart Decode não detectou nada.** Ele só mostra resultados **diferentes da entrada** e que pareçam **legíveis**. Um valor que já está em texto puro, ou que decodifica para bytes ilegíveis, não gera cartão. Tente o formato específico na página **FORMATOS**. > [!PERIGO] > O Decodificar nunca valida assinaturas nem descriptografa conteúdo protegido. Não trate um JWT lido aqui como "confiável" só porque o payload abriu: a leitura local **não prova** a autenticidade do token. ## Continue - [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) - [SSL/TLS](https://netcattest.com/catsuite/docs/modulos/ssl-tls) - [Segurança e uso responsável](https://netcattest.com/catsuite/docs/seguranca) --- # SSL/TLS > Analisador SSL/TLS do CatSuite: como usar e configurar a triagem de handshake, versão do TLS, cipher suite, cadeia até a raiz, fingerprints e validade. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/ssl-tls - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/ssl-tls O **Analisador SSL/TLS** é o módulo do CatSuite que faz a triagem da conexão segura de um host autorizado. Você informa um domínio ou URL (com a porta, quando não for 443), toca em **VERIFICAR** e o módulo executa o **handshake TLS**, mostra a **versão do protocolo** e a **cipher suite** negociadas, valida a **cadeia de certificados até a raiz confiável** do Android, confere o **hostname**, calcula os **fingerprints SHA-256 e SHA-1** de cada certificado e exibe as **datas de validade** com os dias restantes. Esta página explica cada termo, cada painel da tela e como usar e configurar o módulo para diagnosticar falhas de TLS no laboratório. > [!NOTA] > O Analisador SSL/TLS é uma ferramenta de leitura e diagnóstico. Ele só abre conexões TLS e lê o que o servidor apresenta; não envia requisições HTTP nem altera a configuração do sistema. O veredito sobre a cadeia vem sempre do repositório de autoridades confiáveis do próprio Android. ## Conceitos de SSL/TLS usados no módulo Antes de ler os resultados, vale fixar os termos que aparecem nos chips, rótulos e mensagens da tela. ### TLS e SSL **TLS** (_Transport Layer Security_) é o protocolo que protege o HTTPS e outros serviços: ele cifra o tráfego e permite que o cliente confirme a identidade do servidor por meio de certificados. **SSL** é o nome do antecessor do TLS e continua sendo usado no dia a dia como sinônimo, por isso o módulo se chama SSL/TLS. Na prática, o que o analisador negocia e mostra são as versões modernas do TLS, como `TLSv1.3` e `TLSv1.2`. ### Handshake TLS O **handshake** é a negociação inicial entre cliente e servidor, antes de qualquer dado da aplicação. Nele as duas pontas combinam a versão do protocolo e a cipher suite, o servidor apresenta sua cadeia de certificados e ambos derivam as chaves da sessão. O analisador mede quanto essa etapa demora e mostra o resultado no campo **Tempo de handshake**, em milissegundos. Se o handshake não termina, a triagem falha e a mensagem de erro aparece na tela. ### Versão do protocolo e cipher suite A **versão do protocolo** é a edição do TLS que as duas pontas aceitaram usar, como `TLSv1.3`. A **cipher suite** (conjunto de cifras) é a combinação de algoritmos escolhida para a sessão: troca de chaves, cifra simétrica e função de integridade, por exemplo `TLS_AES_128_GCM_SHA256` ou `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`. Versões antigas e cifras fracas indicam configurações que merecem atenção no relatório. ### SNI (Server Name Indication) O **SNI** é uma extensão do TLS em que o cliente informa, já no início do handshake, qual nome de host deseja acessar. Isso permite que um mesmo endereço IP sirva vários sites, cada um com seu certificado. No Android, quando o alvo é um nome de domínio, esse nome segue na negociação como SNI. Quando o alvo é um endereço IP, não há nome para indicar, e o servidor costuma responder com um certificado padrão, o que frequentemente leva a **HOSTNAME FALHOU**. ### Cadeia de certificados: folha, intermediários e raiz O servidor não apresenta um certificado isolado, e sim uma **cadeia**. O primeiro é o **certificado folha**, emitido para o host. Em seguida vêm os **intermediários**, que ligam a folha a uma autoridade certificadora. No topo fica a **raiz**, a autoridade em que o sistema confia diretamente. Cada certificado é assinado pelo seguinte, e **validar a cadeia até a raiz** significa conferir essas assinaturas uma a uma até chegar a uma autoridade confiável. ### Raiz confiável e repositório do Android Uma **raiz confiável** (_trust anchor_) é uma autoridade certificadora presente no repositório de confiança do dispositivo. O analisador usa o validador padrão do Android para decidir se a cadeia apresentada termina em uma dessas raízes. Certificados autoassinados, emitidos por uma CA privada ou com intermediários faltando não chegam a uma raiz confiável e geram **CADEIA COM ALERTA**. ### Verificação de hostname e SAN Uma cadeia válida não basta: o certificado folha precisa ter sido emitido **para o host acessado**. Essa conferência usa os **nomes alternativos do assunto** (SAN, _Subject Alternative Names_), a lista de domínios e endereços cobertos pelo certificado. O resultado aparece no chip **HOSTNAME OK** ou **HOSTNAME FALHOU**, e os SAN de cada certificado aparecem como chips no cartão correspondente. ### Fingerprints SHA-256 e SHA-1 O **fingerprint** (impressão digital) é o hash do certificado inteiro, calculado sobre a sua forma codificada. Dois certificados idênticos têm o mesmo fingerprint, e qualquer diferença, por menor que seja, muda o valor completamente. Por isso o fingerprint é a forma mais segura de comparar certificados e anotá-los em evidências. O módulo mostra cada valor em hexadecimal maiúsculo, com os bytes separados por dois-pontos. O **SHA-256** é a referência recomendada; o **SHA-1** aparece para compatibilidade com inventários e ferramentas antigas. ### Datas de validade Todo certificado tem um início (_not before_) e um fim (_not after_) de validade. Fora desse intervalo, o certificado deve ser recusado. O analisador mostra as duas datas no formato `dd/mm/aaaa hh:mm`, no fuso do aparelho, e resume a situação como dias restantes, "vence hoje" ou expirado. | Termo | O que é | Onde aparece no módulo | | --- | --- | --- | | Handshake | Negociação inicial do TLS | Tempo de handshake, mensagens de carregamento e de erro | | Versão do protocolo | Edição do TLS negociada | TLS negociado e painel Versões do TLS | | Cipher suite | Combinação de algoritmos da sessão | Cipher suite negociada e painel Cipher Suites | | SNI | Nome do host enviado no início do handshake | Influencia o certificado recebido e o chip de hostname | | Cadeia | Folha, intermediários e raiz | Cartão Cadeia de certificação | | Raiz confiável | Autoridade presente no repositório do Android | Chip CADEIA OK ou CADEIA COM ALERTA e mensagem da cadeia | | SAN | Nomes cobertos pelo certificado | Chips no cartão de cada certificado | | Fingerprint | Hash SHA-256 ou SHA-1 do certificado | Resumo da Sessão e cartão de cada certificado | | Validade | Início e fim do período válido | Validade, Status da validade e chip de validade | ## A tela do Analisador SSL/TLS A tela é uma coluna rolável. No topo ficam o cabeçalho e o painel de entrada; abaixo, a área de resultado muda conforme o estado da triagem. ### Cabeçalho do módulo O cabeçalho traz a tarja **ANALISADOR SSL/TLS**, o título **CERTIFICADOS E SESSÃO TLS** e o resumo "Analise certificados, TLS, cifras e fingerprints." ### Painel ALVO HTTPS O painel **ALVO HTTPS** tem o campo de endereço (com a dica "Sua URL") e o botão **VERIFICAR**. Enquanto a análise roda, o botão mostra **ANALISANDO** com um indicador de progresso e fica desabilitado, e o painel exibe "Conectando, negociando TLS e validando a cadeia...". ### Estados da área de resultado | Estado | O que aparece | | --- | --- | | Antes da primeira análise | Cartão "Nenhuma análise feita ainda", lembrando que o analisador identifica o host automaticamente para verificar o certificado. | | Em andamento | Cartão "Executando handshake TLS, validando a cadeia e calculando fingerprints." | | Erro | Cartão "Falha na análise SSL/TLS", com a mensagem detalhada do problema. | | Concluído | Cartões Resumo da Sessão, Cadeia de certificação, Versões do TLS e Cipher Suites. | ### Resumo da Sessão O cartão **RESUMO DA SESSÃO** ("Veja o host, o certificado e a sessão TLS.") começa com três chips de veredito e segue com os dados principais da conexão. | Item | O que mostra | | --- | --- | | CADEIA OK / CADEIA COM ALERTA | Verde quando a cadeia chega a uma raiz confiável e o hostname confere; laranja nos demais casos. | | HOSTNAME OK / HOSTNAME FALHOU | Resultado da verificação do host contra o certificado folha. | | CERTIFICADO VÁLIDO / FORA DA VALIDADE | Situação do certificado folha na data e hora atuais. | | Host | Host e porta realmente analisados, no formato `host:porta`. | | Alvo normalizado | Endereço final usado na análise, sempre em `https://`. | | TLS negociado | Versão do protocolo aceita no handshake. | | Cipher suite negociada | Conjunto de cifras escolhido para a sessão. | | Tempo de handshake | Duração do handshake, em milissegundos. | | Validade | Início e fim da validade do certificado folha. | | Status da validade | Dias restantes, "vence hoje" ou há quantos dias expirou. | | Fingerprint SHA-256 | Hash SHA-256 do certificado folha, com botão de copiar. | | Fingerprint SHA-1 | Hash SHA-1 do certificado folha, com botão de copiar. | | Mensagem da cadeia | Faixa colorida com a explicação do veredito da cadeia. | A faixa final repete a cor do chip de cadeia. Ela mostra "A cadeia foi validada com sucesso para o host informado.", "A cadeia foi aceita, mas o nome do host não corresponde ao certificado apresentado." ou o motivo devolvido pelo validador do Android quando a cadeia não é aceita. ### Cadeia de certificação O cartão **CADEIA DE CERTIFICAÇÃO** informa quantos certificados foram observados durante o handshake e lista um cartão por certificado, na ordem em que o servidor os enviou. Cada cartão tem um chip de papel (**FOLHA**, **INTERMEDIÁRIO 1**, **INTERMEDIÁRIO 2** e assim por diante, e **RAIZ**) e o indicador "Dentro da validade" ou "Fora da validade". | Campo | O que mostra | | --- | --- | | Assunto | Nome distinto do titular, como `CN=exemplo.com`. | | Emissor | Nome distinto de quem assinou o certificado. | | Serial | Número de série em hexadecimal maiúsculo. | | Assinatura | Algoritmo de assinatura, como `SHA256withRSA`. | | Chave pública | Algoritmo da chave pública, como `RSA` ou `EC`. | | Validade | Início e fim da validade daquele certificado. | | Status | Dias restantes ou há quantos dias expirou. | | Chips de SAN | Nomes alternativos cobertos, quando existirem. | | SHA-256 e SHA-1 | Fingerprints daquele certificado, cada um com botão de copiar. | > [!IMPORTANTE] > O papel de cada certificado segue a posição na lista enviada pelo servidor: o primeiro é a folha e o último recebe o rótulo de raiz. Muitos servidores não enviam a raiz, apenas folha e intermediário. Nesse caso, o cartão marcado como **RAIZ** é, na verdade, o último intermediário; confira o campo **Emissor** dele para saber qual autoridade fecha a cadeia. ### Versões do TLS O cartão **VERSÕES DO TLS** ("Veja o protocolo e as versões TLS aceitas.") mostra um chip destacado com a versão negociada e um chip para cada versão que o servidor aceitou em testes individuais. Abaixo, a linha **Versões visíveis no dispositivo** lista as versões de TLS que o próprio aparelho suporta. ### Cipher Suites O cartão **CIPHER SUITES** ("Veja a cipher suite negociada e as opções disponíveis.") traz a linha **Negociada** e uma lista de chips. O primeiro chip, destacado, é a cipher suite negociada; os demais são cipher suites suportadas pelo dispositivo, em ordem alfabética e sem as categorias inseguras (nulas, anônimas, RC4 e 3DES), limitadas às 18 primeiras. Com mais de seis chips, a lista vira uma faixa com rolagem horizontal. > [!NOTA] > A lista de chips de Cipher Suites descreve o que o **dispositivo** oferece, não tudo o que o servidor aceita. O dado que vem do servidor é a cipher suite negociada. ## Opções e como configurar o Analisador SSL/TLS O módulo não tem uma folha de configurações própria: a triagem depende do endereço que você informa e de duas chaves gerais do CatSuite. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Campo de endereço (ALVO HTTPS) | Domínio, URL, `host:porta`, IPv4 ou IPv6 entre colchetes | Vazio | Define o host e a porta da triagem; caminho, consulta e fragmento são descartados. | | Porta | 1 a 65535, dentro do endereço | 443 | Escolhe o serviço TLS a analisar, como `exemplo.com:8443`. | | Ativar Analisador SSL/TLS (Configurações > Aplicativos) | Ligado / Desligado | Desligado, salvo se escolhido na seleção inicial de módulos | Mostra ou oculta o módulo no menu principal e libera o atalho de envio a partir das capturas. | | Permissão ANALISADOR SSL/TLS da IA | Ligado / Desligado | Desligado | Permite que o assistente de IA do CatSuite execute a triagem e leia certificados e fingerprints. | Para configurar: digite no campo apenas o que identifica o serviço, como `exemplo.com` ou `api.exemplo.com:8443`; se colar uma URL completa, o módulo extrai o host e a porta sozinho. Informe a porta explicitamente sempre que o serviço TLS não estiver em 443. Se o módulo não aparece no menu, ligue **ATIVAR ANALISADOR SSL/TLS** em **Configurações > Aplicativos**; enquanto ele estiver oculto, o atalho de envio das capturas também fica indisponível. A permissão da IA só deve ser ligada se você quiser que o assistente faça a triagem por conta própria dentro do escopo. ### Como o host e a porta são normalizados Antes de conectar, o analisador reescreve o que você digitou e atualiza o campo com o resultado. | Você digita | Alvo normalizado | Host analisado | | --- | --- | --- | | `exemplo.com` | `https://exemplo.com` | `exemplo.com:443` | | `https://exemplo.com/login?next=/painel` | `https://exemplo.com` | `exemplo.com:443` | | `exemplo.com:8443` | `https://exemplo.com:8443` | `exemplo.com:8443` | | `https://exemplo.com:443/` | `https://exemplo.com` | `exemplo.com:443` | | `[2001:db8::10]:8443` | `https://[2001:db8::10]:8443` | `[2001:db8::10]:8443` | O esquema final é sempre `https://`, porque o módulo só fala TLS. Domínios com acentos são convertidos para a forma ASCII (punycode) antes da conexão. ### Parâmetros fixos da triagem Alguns comportamentos não são configuráveis, mas ajudam a interpretar o resultado. | Parâmetro | Valor | Efeito | | --- | --- | --- | | Tempo limite de conexão e leitura | 4,5 segundos | Hosts lentos ou filtrados geram erro de tempo esgotado. | | Porta padrão | 443 | Usada quando o endereço não informa porta. | | Versões testadas | TLSv1.3, TLSv1.2, TLSv1.1 e TLSv1 | Só as que o dispositivo suporta; cada uma é um handshake separado. | | Lista de cipher suites | Negociada mais até 18 do dispositivo | Exclui suites nulas, anônimas, RC4 e 3DES. | | Validação da cadeia | Validador padrão do Android | Define CADEIA OK ou CADEIA COM ALERTA. | > [!DICA] > Cada triagem abre uma conexão principal e mais uma por versão de TLS testada. Em alvos com limite de conexões ou alertas de varredura, espere alguns segundos entre verificações. ## Botões e ações ### Painel de entrada | Botão ou ação | O que faz | | --- | --- | | VERIFICAR | Normaliza o endereço e inicia a triagem. Vira ANALISANDO e fica desabilitado até terminar. | | Tecla Ir do teclado | Inicia a triagem a partir do campo, igual ao VERIFICAR. | | Campo vazio + VERIFICAR | Mostra o aviso "Informe um domínio ou URL para analisar." | ### Resultados | Botão ou ação | Onde | O que faz | | --- | --- | --- | | Ícone de copiar do Fingerprint SHA-256 | Resumo da Sessão | Copia o SHA-256 da folha e confirma com "Fingerprint SHA-256 copiado." | | Ícone de copiar do Fingerprint SHA-1 | Resumo da Sessão | Copia o SHA-1 da folha e confirma com "Fingerprint SHA-1 copiado." | | Ícone de copiar do SHA-256 | Cartão de certificado | Copia o SHA-256 daquele certificado. | | Ícone de copiar do SHA-1 | Cartão de certificado | Copia o SHA-1 daquele certificado. | | Seleção de texto | Qualquer valor | Abre o menu de contexto do CatSuite. | ### Menu de contexto da seleção Todos os valores da tela, como assunto, emissor, serial e fingerprints, podem ser selecionados. O campo de endereço também tem o menu, com as ações de edição. | Ação | O que faz | | --- | --- | | COPIAR | Copia o trecho selecionado. | | CORTAR | Recorta a seleção (somente no campo de endereço). | | COLAR | Cola o conteúdo da área de transferência (somente no campo de endereço). | | DECODIFICAR | Envia a seleção para o [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar). | | NOTAS | Envia a seleção para o Bloco de Notas da [História](https://netcattest.com/catsuite/docs/modulos/historia). | | TUDO | Seleciona todo o texto do valor. | | BLOCO | Copia o valor inteiro. | ### Atalhos de outros módulos | Origem | Ação | Resultado | | --- | --- | --- | | [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) | Toque longo em uma captura > **Enviar para o Analisador SSL/TLS** | Abre o módulo com o host da request já normalizado e inicia a triagem automaticamente. | | Botão flutuante | Ação do Analisador SSL/TLS | Abre o módulo diretamente. | | Assistente de IA | Ferramenta de análise SSL/TLS, com a permissão ligada | Executa a triagem de um host do escopo ou abre o módulo com o endereço da request ou da página atual do Navegador. | ## Passo a passo: como usar o Analisador SSL/TLS ### Fazer a primeira triagem de um host 1. Abra o **Analisador SSL/TLS** pelo menu principal. Se ele não aparecer, ative-o em **Configurações > Aplicativos**. 2. No painel **ALVO HTTPS**, digite o domínio ou cole a URL do alvo autorizado. Acrescente `:porta` se o serviço não estiver em 443. 3. Toque em **VERIFICAR** ou na tecla **Ir** do teclado. 4. Aguarde o cartão de carregamento e confira, no **Resumo da Sessão**, os três chips de veredito. 5. Leia **Host** e **Alvo normalizado** para confirmar que o módulo analisou exatamente o serviço desejado. ### Validar a cadeia até a raiz 1. Observe o chip **CADEIA OK** ou **CADEIA COM ALERTA** e leia a faixa de mensagem no fim do resumo. 2. Desça até **CADEIA DE CERTIFICAÇÃO** e confira quantos certificados foram observados. 3. Em cada cartão, compare o **Emissor** de um certificado com o **Assunto** do seguinte: eles devem coincidir até o topo. 4. No último cartão, confira o emissor para identificar a autoridade que fecha a cadeia. 5. Verifique o indicador "Dentro da validade" de cada certificado; um intermediário vencido também quebra a cadeia. ### Conferir e registrar fingerprints 1. No **Resumo da Sessão**, toque no ícone de copiar do **Fingerprint SHA-256** para levar o hash da folha à área de transferência. 2. Compare o valor com o fingerprint esperado, informado pelo responsável pelo alvo ou obtido em outra ferramenta. 3. Selecione o fingerprint e use **NOTAS** para registrá-lo no Bloco de Notas, junto com host, data e versão do TLS. 4. Repita nos cartões de intermediários quando precisar documentar a cadeia inteira. ### Verificar versões de protocolo e cifra 1. No cartão **VERSÕES DO TLS**, leia o chip destacado da versão negociada. 2. Confira os chips das versões aceitas: a presença de `TLSv1` ou `TLSv1.1` indica suporte a versões legadas. 3. Compare com **Versões visíveis no dispositivo**: uma versão ausente dessa linha não pôde ser testada pelo aparelho. 4. No cartão **CIPHER SUITES**, leia a linha **Negociada** e registre a cifra escolhida. ### Diagnosticar uma falha de TLS 1. Rode a triagem e leia a mensagem do cartão **Falha na análise SSL/TLS**, se ele aparecer. 2. Se a mensagem fala em tempo esgotado, conexão recusada ou host não resolvido, o problema está antes do TLS: revise host, porta e rede. 3. Se o handshake termina, mas a cadeia tem alerta, leia a faixa da mensagem da cadeia e os cartões de certificado para achar a causa. 4. Se o chip **HOSTNAME FALHOU** aparece, compare o host digitado com os chips de SAN do certificado folha. 5. Se **FORA DA VALIDADE** aparece, confira as datas de validade e o relógio do aparelho. ### Analisar o host de uma captura do Proxy 1. Com o [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) capturando o tráfego autorizado, abra o [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador). 2. Dê um toque longo na captura desejada e escolha **Enviar para o Analisador SSL/TLS**. 3. O módulo abre com o host da request preenchido e já inicia a verificação. 4. Compare o certificado real do servidor com o comportamento observado no cliente. ## Relação com o Proxy de Rede e o Repetir O Analisador SSL/TLS conecta-se **diretamente** do aparelho ao servidor, sem passar pelo [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy). Por isso ele enxerga o certificado verdadeiro do alvo. Quando um cliente navega pelo proxy com interceptação HTTPS ligada, o certificado que esse cliente recebe é emitido na hora pela CA do laboratório, e o fingerprint da folha vista pelo cliente será diferente do fingerprint que o analisador mostra. Essa diferença é esperada e confirma que a interceptação está ativa. Se um cliente recusa a conexão pelo proxy, use o analisador para conferir se o problema está no próprio servidor (cadeia, validade, versão) ou na confiança na CA do laboratório. No [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir), um envio HTTPS pode falhar por certificado inválido ou protocolo incompatível. Antes de ligar **Ignorar erros de certificado** nas configurações do Repetir, rode o analisador no mesmo host: ele mostra se a cadeia é autoassinada, se o hostname não confere ou se o certificado venceu. Assim, você documenta o motivo exato da falha e só desativa a validação no Repetir quando o ambiente é próprio e autorizado. > [!AVISO] > Uma cadeia com alerta em produção é um achado, não um obstáculo a contornar. Registre o resultado e trate a desativação de validação no Repetir apenas como recurso de laboratório. ## Exemplos Entradas aceitas no campo do painel ALVO HTTPS. ```text exemplo.com https://exemplo.com/login?next=/painel api.exemplo.com:8443 https://[2001:db8::10]:8443/ ``` Resumo de uma sessão saudável, como registrado no Bloco de Notas. ```text Host: exemplo.com:443 Alvo normalizado: https://exemplo.com TLS negociado: TLSv1.3 Cipher suite negociada: TLS_AES_128_GCM_SHA256 Tempo de handshake: 182 ms Validade: 01/08/2026 00:00 até 30/10/2026 23:59 Status da validade: 24 dias restantes ``` Cadeia típica com folha e intermediário, como listada no cartão Cadeia de certificação. Repare que o segundo cartão recebe o rótulo RAIZ, embora seja o intermediário: o servidor não enviou a raiz, e o emissor dele revela a autoridade que fecha a cadeia. ```text FOLHA Assunto: CN=exemplo.com Emissor: CN=Exemplo Intermediate CA,O=Exemplo,C=BR RAIZ Assunto: CN=Exemplo Intermediate CA,O=Exemplo,C=BR Emissor: CN=Exemplo Root CA,O=Exemplo,C=BR ``` Formato dos fingerprints exibidos pelo módulo. ```text SHA-256: 3B:7E:1A:C4:59:02:DF:88:6A:E1:4C:93:B0:27:5D:F6:11:A8:7C:E9:42:0B:D5:36:9F:C2:68:E4:1D:B7:05:7A SHA-1: 9C:2E:41:B8:07:D3:6F:A5:18:E0:C7:52:3B:94:FD:61:0A:8E:27:C3 ``` Conferência do fingerprint SHA-256 da folha fora do aplicativo, em uma estação de trabalho. ```bash openssl s_client -connect exemplo.com:443 -servername exemplo.com /dev/null | openssl x509 -noout -fingerprint -sha256 ``` Teste manual de uma versão específica do TLS, útil para confirmar o painel Versões do TLS. ```bash openssl s_client -connect exemplo.com:443 -servername exemplo.com -tls1_2 Aplicativos**. > [!PERIGO] > Analise somente hosts que você tem autorização para testar. Mesmo sendo uma triagem de leitura, cada verificação abre várias conexões TLS reais contra o alvo. Veja [Segurança](https://netcattest.com/catsuite/docs/seguranca). ## Continue - [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) - [História e notas](https://netcattest.com/catsuite/docs/modulos/historia) - [Visão geral dos módulos](https://netcattest.com/catsuite/docs/modulos) --- # História e notas > Guia de História e notas do CatSuite: como usar e configurar a linha do tempo de requisições, filtros, busca, bloco de notas e exportação de evidências. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/historia - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/history O módulo **História e notas** é a memória da sessão no CatSuite. A **História** organiza a linha do tempo do navegador e das requisições capturadas em sessões por site, com busca, filtros rápidos, marcação de itens interessantes e envio direto para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir). O **Bloco de Notas** guarda suas observações no próprio aparelho, com criação, edição, fixação e exportação em TXT. Juntos, os dois formam a base para montar o relatório de um teste autorizado sem perder nenhuma evidência. Esta página explica como ativar o módulo, como ler cada tela, como configurar captura e retenção e como transformar a sessão em um relatório. > [!NOTA] > A História vem desativada em uma instalação nova. O Bloco de Notas vem ativado. Os dois são ligados e desligados em **Configurações > Aplicativos**. ## Conceitos da História e do Bloco de Notas Antes de abrir a tela, vale fixar os termos que aparecem nos cartões, nas tags e no menu. ### Sessão de navegação A História não mostra uma lista solta de requisições: ela agrupa os registros em **sessões**. Cada vez que o [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) faz uma navegação principal (registro com origem **Navegação**), uma nova sessão começa. As requisições seguintes, como scripts, imagens, chamadas de API e envios de formulário, entram na sessão aberta mais recente. Se o primeiro registro disponível não for uma navegação, o app cria uma sessão a partir dele mesmo, para que nada fique de fora. Cada sessão tem um **site principal** (a URL que abriu a sessão), um título montado com o domínio e o caminho, a lista de **domínios envolvidos** e a janela de tempo entre o primeiro e o último registro. ### Linha do tempo A **linha do tempo** é a lista de sessões, da mais recente para a mais antiga, ordenada pelo horário do último registro de cada uma. Dentro de uma sessão, as requisições também aparecem da mais nova para a mais antiga. Um marcador circular à esquerda de cada cartão liga as sessões; ele fica amarelo quando a sessão teve alguma requisição interceptada. ### Requisição interceptada, falha e interessante | Marcação | Quando aparece | Onde você vê | |---|---|---| | **INTERCEPTADA** | A requisição passou pelo [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador). | Tag na requisição e contador **INTERCEPTOU N** na sessão. | | **Falha** | Status HTTP 400 ou maior, ou status **FALHA** (erro, cancelamento ou abortamento antes de uma resposta válida). | Tag **N FALHAS** com borda vermelha na sessão. | | **INTERESSANTE** | Você marcou a requisição manualmente com **Marcar como interessante**. | Estrela no cartão da sessão, tag na requisição e contador **N INTERESSANTES**. | ### Status exibidos Quando há resposta, o status é o código HTTP (por exemplo, `200` ou `404`). Sem código numérico, a História mostra um rótulo: **ENVIADA** (formulário enviado aguardando a navegação), **SUBSTITUIDA** (navegação trocada antes da resposta final), **EXTERNO** (link externo), **FALHA** ou **PENDENTE** (ainda em andamento). ### Base compartilhada com o Interceptador A História lê a mesma base de registros do histórico do [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador). Por isso, as regras de captura, o limite de itens e a limpeza valem para os dois lugares ao mesmo tempo. A História é uma forma de ler esses registros organizados por site, enquanto o Interceptador mostra a lista técnica completa. ### Nota do Bloco de Notas Uma **nota** tem título, conteúdo, cor de marcador, estado de fixação e as datas de criação e de última edição. Se o título ficar em branco, o app usa a primeira linha do conteúdo como título de exibição; sem nenhum texto, a nota aparece como **Nota rápida**. ## A tela da História: linha do tempo, detalhe e menu A História tem duas páginas e um painel lateral de menu. O título **HISTÓRIA** fica no topo e o botão **MENU** fica sempre à direita. ### Linha do tempo A página inicial traz o resumo "Veja sites, requisições e eventos da sessão." e os seguintes elementos: | Elemento | O que mostra | |---|---| | Cartão **SESSÕES** | Total de sites ou fluxos navegados. | | Cartão **REQUISIÇÕES** | Total de capturas registradas. | | Cartão **INTERCEPTADAS** | Quantas requisições passaram pelo interceptador. | | Campo de busca | Filtra as sessões por site, domínio, método, URL ou status. | | Tags de filtro ativo | **SÓ INTERCEPTADAS**, **SÓ FALHAS**, **SÓ INTERESSANTES** e **BUSCA: TERMO**, quando aplicados. | | Cartões de sessão | Data e hora de abertura, título, site principal, tags de resumo e as três requisições mais recentes. | Os cartões de resumo sempre contam a sessão inteira, mesmo com filtros ativos. Quando não há nenhum registro, a tela mostra **NENHUMA HISTÓRIA AINDA**. Quando há registros, mas nenhum combina com a busca ou os filtros, aparece **NADA COMBINA COM O FILTRO**. ### Detalhe da sessão Tocar em um cartão abre o detalhe. O cabeçalho troca para um botão de voltar com o rótulo **HISTÓRIA** e informa a janela de tempo da sessão. A página tem quatro blocos: 1. **Resumo da sessão:** título, URL principal (com a contagem de domínios envolvidos), tags **INTERCEPTOU N** ou **SEM INTERCEPTAÇÃO**, **N REQUISIÇÕES**, **N FALHAS**, **N INTERESSANTES** (quando houver) e **N DOMÍNIOS**, além da linha **SITE PRINCIPAL**. 2. **REQUISIÇÕES DA SESSÃO:** a lista de requisições com método, URL, status, origem e as tags **INTERCEPTADA** e **INTERESSANTE**. A requisição selecionada fica destacada em amarelo. 3. **DETALHE DA REQUISIÇÃO:** URL, origem, domínio, tipo de conteúdo, horário, status, detalhe do status e se a requisição foi interceptada ou marcada como interessante, seguidos dos botões de ação. 4. **REQUEST** e **RESPONSE:** o conteúdo bruto capturado, em fonte monoespaçada e com texto selecionável. ### Menu da História O botão **MENU** abre o painel **MENU DA HISTÓRIA** ("Revise a sessão, aplique filtros ou limpe o histórico."). Ele reúne: - os contadores **SESSÕES**, **REQUISIÇÕES**, **INTERCEPTADAS**, **FALHAS** e **INTERESSANTES**; - a seção **VISUALIZAÇÃO**, com os filtros rápidos; - a seção **DOMÍNIOS VISTOS**, com até 12 domínios principais das sessões, em ordem alfabética; - o botão **LIMPAR HISTÓRIA**, em vermelho, no fim do painel. ### Tela com o módulo desativado Se a História estiver desligada, a tela mostra **HISTÓRIA DESATIVADA** e o botão **ATIVAR HISTÓRIA**, que leva direto para **Configurações > Aplicativos**. ## A tela do Bloco de Notas O Bloco de Notas é aberto pelo menu principal e tem duas páginas: a lista e o editor. ### Lista de notas O cabeçalho traz a tarja **ORGANIZAÇÃO LOCAL**, o título **BLOCO DE NOTAS** e três contadores: **NOTAS** (total), **FIXADAS** e **HOJE** (notas editadas no dia). Abaixo ficam o campo **Pesquisar notas**, a seção **FIXADAS** ("Ficam sempre no topo até você desafixar.") e a seção **TODAS AS NOTAS** ("As mais recentes aparecem primeiro."). Durante uma busca, a segunda seção passa a se chamar **RESULTADOS** e informa quantos itens foram encontrados. Um botão flutuante com ícone de lápis cria uma nova nota. Cada cartão mostra a cor da nota, o título, um resumo do conteúdo, a data, um botão de alfinete para fixar ou desafixar e o menu de três pontos com as ações da nota. ### Editor de nota O editor abre com o título **NOVA NOTA** ou **EDITAR NOTA**. Ele tem: | Área | Função | |---|---| | Voltar (**BLOCO DE NOTAS**) | Retorna à lista e pede confirmação se houver mudanças não salvas. | | **SALVAR** | Grava a nota no aparelho. | | Prévia | Mostra título e conteúdo enquanto você escreve. | | Campo de título | Texto curto de identificação, com a dica "Ex.: plano de hoje". | | Campo de conteúdo | Texto livre: "Escreva livremente. Cada linha pode virar uma ideia, checklist ou lembrete." | | Seletor de cor | Azul, Verde, Amarelo, Rosa, Laranja, Roxo ou Grafite. | | **FIXAR NO TOPO** | Mantém a nota na seção de fixadas. | | Informações | **CARACTERES**, **COR**, **STATUS** (**FIXADA** ou **NORMAL**) e **ÚLTIMA EDIÇÃO** (em notas já salvas). | | **DUPLICAR** e **EXCLUIR** | Aparecem apenas ao editar uma nota existente. | ## Opções e como configurar o módulo As opções da História e do Bloco de Notas ficam em três áreas das configurações. | Opção | Valores | Padrão | O que faz | |---|---|---|---| | **ATIVAR MÓDULO HISTÓRIA** (Configurações > Aplicativos) | Ligado ou desligado | Desligado | Mostra ou oculta a História no menu principal. | | **ATIVAR BLOCO DE NOTAS** (Configurações > Aplicativos) | Ligado ou desligado | Ligado | Mostra ou oculta o Bloco de Notas no menu e libera a ação **NOTAS** na seleção de texto. | | **HISTÓRICO DO INTERCEPTADOR** (Configurações > Histórico) | Ligado ou desligado | Ligado | Liga ou pausa novas entradas sem apagar o que já foi capturado. | | **CAPTURAR SÓ EM CONDIÇÕES** (Configurações > Histórico) | TODAS, WI-FI, DADOS ou CARGA | TODAS | Define quando novas requisições podem ser registradas. | | **LIMITE DO HISTÓRICO** (Configurações > Histórico) | 100, 300, 500, 1000, 2000 ou 5000 | 300 (100 em aparelhos mais fracos) | Quantas requisições ficam guardadas antes da remoção automática das mais antigas. | | **RECUPERAR SESSÃO APÓS FECHAMENTO** (Configurações > Personalização > Sessão e dados) | Ligado ou desligado | Ligado | Restaura navegador, histórico e contextos temporários após um fechamento inesperado. | | **NÃO SALVAR LINHA DO TEMPO SEM HISTÓRIA** (Configurações > Personalização > Sessão e dados) | Ligado ou desligado | Desligado | Impede novas entradas na linha do tempo enquanto a História estiver desligada. | | **APAGAR NOTAS AO DESATIVAR O MÓDULO** (Configurações > Personalização > Sessão e dados) | Ligado ou desligado | Desligado | Apaga as notas salvas quando o Bloco de Notas é desativado. | ### Como ativar a História nas configurações Abra **Configurações > Aplicativos** e ligue **ATIVAR MÓDULO HISTÓRIA**. O item passa a aparecer no menu principal. O mesmo caminho é aberto pelo botão **ATIVAR HISTÓRIA** da tela desativada. ### Condições de captura A opção **CAPTURAR SÓ EM CONDIÇÕES** tem quatro valores: capturar em todas as circunstâncias, apenas no Wi-Fi, apenas nos dados móveis ou apenas carregando (com o aparelho na tomada e bateria acima de 50%). O item **STATUS DA CAPTURA**, logo abaixo, mostra **ATIVA** ou **PAUSADA** de acordo com a condição escolhida e o estado atual do aparelho. ### Limite do histórico e itens interessantes O limite conta apenas as requisições **não marcadas**. Quando o total passa do limite, o app remove as mais antigas que não são interessantes. As requisições marcadas como interessantes ficam preservadas, o que torna a estrela a forma mais segura de proteger evidências importantes durante sessões longas. > [!DICA] > Em aparelhos com pouca memória, mantenha o limite em 100 ou 300 e marque como interessante tudo o que for entrar no relatório. Assim a limpeza automática não leva embora o que importa. ### História desligada e captura em segundo plano Com a opção **NÃO SALVAR LINHA DO TEMPO SEM HISTÓRIA** desligada (padrão), os registros continuam sendo gravados no histórico do Interceptador mesmo com a História oculta, e aparecem na linha do tempo assim que você reativar o módulo. Ligue essa opção se preferir que nada seja registrado enquanto a História estiver desativada. ## Botões e ações ### Ações da História | Botão ou gesto | Onde fica | O que faz | |---|---|---| | **MENU** | Topo da tela | Abre o **MENU DA HISTÓRIA**. | | Tocar no cartão da sessão | Linha do tempo | Abre o detalhe da sessão. | | Voltar (**HISTÓRIA**) | Topo do detalhe | Retorna à linha do tempo. | | Tocar na requisição | Detalhe | Seleciona a requisição e atualiza o detalhe, a request e a response. | | Toque longo na requisição | Detalhe | Abre o menu rápido da requisição. | | **Enviar para o Repetir** | Detalhe e menu rápido | Abre a request no [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) para editar e reenviar. | | **Marcar como interessante** / **Desmarcar interessante** | Detalhe e menu rápido | Liga ou desliga o destaque da requisição. | | **COPIAR URL** | Detalhe e menu rápido | Copia o endereço completo. | | **COPIAR REQUEST** | Detalhe e menu rápido | Copia a request bruta capturada. | | **COPIAR RESPONSE** | Detalhe | Copia a resposta exibida. | | **COPIAR cURL** | Detalhe e menu rápido | Copia um comando cURL pronto com método, headers, corpo e URL. | | **ATIVAR HISTÓRIA** | Tela desativada | Abre **Configurações > Aplicativos**. | ### Ações do menu da História | Item | O que faz | |---|---| | **Ver só sessões interceptadas** | Mostra apenas sessões com alguma requisição que passou pelo interceptador. | | **Ver só sessões com falha** | Filtra para erros, cancelamentos e respostas com falha. | | **Ver só sessões com interessantes** | Mostra apenas sessões com alguma requisição marcada como interessante. | | **Limpar filtros rápidos** | Desliga os três filtros e também limpa o termo de busca. | | **LIMPAR HISTÓRIA** | Pede confirmação e apaga todo o histórico capturado. | ### Menu de seleção de texto Nos blocos **REQUEST** e **RESPONSE**, no detalhe da requisição, no resumo da sessão e no campo de busca, selecionar um trecho abre o menu do CatSuite com **COPIAR**, **DECODIFICAR** (envia o trecho ao [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar)), **NOTAS** (envia o trecho ao Bloco de Notas, quando o módulo está ativo) e **TUDO** (seleciona todo o texto). ### Ações do Bloco de Notas | Ação | Onde fica | O que faz | |---|---|---| | Botão flutuante (lápis) | Lista | Abre o editor de uma nova nota. | | **Editar** | Menu do cartão | Abre a nota no editor. Tocar no cartão faz o mesmo. | | **Fixar no topo** / **Remover do topo** | Menu do cartão e alfinete | Alterna a fixação da nota. | | **Duplicar** | Menu do cartão e editor | Cria uma cópia com o título "Cópia de …", sem fixação. | | **Copiar** | Menu do cartão | Copia título e conteúdo para a área de transferência. | | **Baixar TXT** | Menu do cartão | Exporta a nota como arquivo `.txt`. | | **Excluir** | Menu do cartão e editor | Pede confirmação e remove a nota do aparelho. | | **SALVAR** | Editor | Grava a nota. Exige título ou conteúdo. | | **LIMPAR BUSCA** | Lista sem resultados | Remove o termo de pesquisa. | ## Filtros e busca na linha do tempo A busca não diferencia maiúsculas de minúsculas e procura o termo no título da sessão, no site principal, nos domínios envolvidos e, em cada requisição, na URL, no método, na origem, no rótulo de status e na descrição do status. Basta que uma requisição combine para a sessão inteira aparecer. Os filtros rápidos se somam: com **Ver só sessões interceptadas** e **Ver só sessões com falha** ligados, só aparecem sessões que atendem às duas condições. Os três filtros ficam salvos e voltam ativos quando você reabre o app; o termo de busca, não. ```text api.exemplo.com POST /login 403 FALHA Formulário ``` ## Reabrir itens no Repetir e no Interceptador Para reproduzir uma requisição, abra a sessão, selecione a requisição e toque em **Enviar para o Repetir**. O CatSuite troca para o [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) já com a request bruta carregada, pronta para editar e reenviar. O mesmo envio está no menu do toque longo. Como a História e o histórico do [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) usam a mesma base, toda requisição da linha do tempo também está na lista do Interceptador. A História não tem um botão dedicado para abrir o item no Interceptador; use **COPIAR URL** e procure a URL no histórico do Interceptador, onde ficam os filtros técnicos e a exportação em TXT, cURL, JSON e HAR. ## Bloco de notas: criação, edição e exportação ### Criar e editar Toque no botão flutuante, escreva um título e o conteúdo, escolha a cor e, se quiser, ligue **FIXAR NO TOPO**. Toque em **SALVAR**. A mensagem "Nota criada com sucesso." confirma a gravação; ao salvar uma nota existente, aparece "Nota atualizada.". Se você tentar voltar com alterações pendentes, o app pergunta **Descartar alterações?** e oferece **CONTINUAR** ou **DESCARTAR**. ### Enviar trechos da História para uma nota Selecione um trecho na request, na response ou no detalhe e toque em **NOTAS**. O editor abre com uma sugestão de estrutura: - texto com várias linhas e primeira linha de até 72 caracteres: a primeira linha vira o título e o restante vira o conteúdo; - texto de uma linha com até 72 caracteres: vira apenas o título; - qualquer outro caso: o texto inteiro vai para o conteúdo. ### Exportar em TXT No menu do cartão, toque em **Baixar TXT**. O nome do arquivo vem do título em minúsculas, com espaços, acentos e símbolos trocados por hífens (por exemplo, "Achados do login" vira `achados-do-login.txt`). O arquivo traz um cabeçalho fixo seguido do conteúdo: ```text BLOCO DE NOTAS Título: Achados do login Fixada: Sim Criada em: 06/10/2026 14:02 Atualizada em: 06/10/2026 15:40 Cor: #F2C94C CONTEÚDO POST /api/login sem limite de tentativas Resposta 200 com mensagem diferente para usuário inexistente Cookie de sessão sem a flag Secure ``` ## Limpar dados da História e das notas O botão **LIMPAR HISTÓRIA** abre a confirmação **Limpar história**: "Isso apaga requisições, marcações interessantes, corpos completos, cookies, cache e armazenamentos web, encerrando as sessões abertas nos sites." Ao confirmar com **Limpar**, a linha do tempo volta vazia e aparece "História limpa com sucesso.". > [!PERIGO] > A limpeza não tem desfazer. Ela também apaga as requisições marcadas como interessantes, limpa o histórico do Interceptador, libera sem alteração as requisições que estavam pausadas na fila de interceptação e encerra os logins abertos no Navegador. Exporte e anote tudo o que precisa antes de limpar. As notas não são afetadas por **LIMPAR HISTÓRIA**. Elas só saem do aparelho quando você exclui cada uma, quando desativa o módulo com **APAGAR NOTAS AO DESATIVAR O MÓDULO** ligado ou quando usa **Configurações > Resetar aplicativo**. ## Armazenamento local no aparelho Tudo fica no dispositivo. As notas são gravadas no armazenamento local do app e sobrevivem ao fechamento. O histórico de requisições é mantido pelo app e, com **RECUPERAR SESSÃO APÓS FECHAMENTO** ligado, é restaurado depois de um fechamento inesperado. Registros vindos do [Proxy de Rede](https://netcattest.com/catsuite/docs/modulos/proxy) só entram nessa recuperação quando estão marcados como interessantes. Nenhuma conta ou nuvem é exigida. > [!IMPORTANTE] > Requests e responses podem conter tokens, cookies e dados pessoais do alvo. Proteja o aparelho com bloqueio de tela e consulte [Segurança, cofre e proteção de dados](https://netcattest.com/catsuite/docs/seguranca) antes de compartilhar arquivos exportados. ## Passo a passo: montar o relatório da sessão 1. Abra **Configurações > Aplicativos** e ligue **ATIVAR MÓDULO HISTÓRIA** e **ATIVAR BLOCO DE NOTAS**. 2. Em **Configurações > Histórico**, confira se **STATUS DA CAPTURA** mostra **ATIVA** e ajuste o **LIMITE DO HISTÓRICO** ao tamanho do teste. 3. Navegue pelo alvo autorizado no [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) e use o [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) quando precisar pausar e editar requisições. 4. Abra a **HISTÓRIA** e localize a sessão do fluxo testado pela busca ou pelos filtros do **MENU**. 5. Abra a sessão, selecione cada requisição relevante e toque em **Marcar como interessante**. 6. Para confirmar um achado, toque em **Enviar para o Repetir**, reproduza a variação e volte à História. 7. Selecione os trechos que comprovam o problema na request ou na response e toque em **NOTAS** para levá-los ao Bloco de Notas. 8. No editor, complete a nota com impacto, passos de reprodução e recomendação, ligue **FIXAR NO TOPO** e toque em **SALVAR**. 9. Use **COPIAR cURL** para registrar um comando reproduzível de cada achado dentro da nota. 10. No menu da nota, toque em **Baixar TXT** e, se precisar das capturas completas, exporte o histórico do Interceptador em HAR ou JSON. 11. Junte o TXT das notas e a exportação do Interceptador no relatório final. Só então, se quiser, use **LIMPAR HISTÓRIA**. ## Exemplos ### Detalhe da requisição copiado ```text URL: https://app.exemplo.com/api/login Origem: Formulário Domínio: app.exemplo.com Tipo: JSON Horário: 06/10/2026 14:02:31 Status: 200 Detalhe: Resposta recebida Interceptada: SIM Interessante: SIM ``` ### Request bruta copiada com COPIAR REQUEST ```http POST /api/login HTTP/1.1 Host: app.exemplo.com Content-Type: application/json Accept: application/json {"usuario":"teste","senha":"senha-de-teste"} ``` ### Comando gerado por COPIAR cURL ```bash curl -X POST -H 'Host: app.exemplo.com' -H 'Content-Type: application/json' -H 'Accept: application/json' --data-raw '{"usuario":"teste","senha":"senha-de-teste"}' 'https://app.exemplo.com/api/login' ``` ### Modelo de nota de achado ```text Login sem limite de tentativas Alvo: https://app.exemplo.com/api/login Severidade: Média Evidência: 30 envios seguidos no Repetir, todos com resposta 200 Reprodução: cURL abaixo Recomendação: aplicar limite por conta e por IP ``` ## Problemas comuns e perguntas frequentes ### A História não aparece no menu O módulo vem desligado. Ligue **ATIVAR MÓDULO HISTÓRIA** em **Configurações > Aplicativos**. ### A tela mostra "NENHUMA HISTÓRIA AINDA" Ainda não há registros. Abra páginas no Navegador e confira em **Configurações > Histórico** se **HISTÓRICO DO INTERCEPTADOR** está ligado e se **STATUS DA CAPTURA** mostra **ATIVA**. Com a condição WI-FI, DADOS ou CARGA, a captura pausa fora dessa situação. ### A tela mostra "NADA COMBINA COM O FILTRO" Há registros, mas a busca ou os filtros esconderam todos. Abra o **MENU** e toque em **Limpar filtros rápidos**, que também apaga a busca. ### Requisições antigas sumiram O **LIMITE DO HISTÓRICO** foi atingido e as mais antigas não marcadas foram removidas. Aumente o limite ou marque as importantes como interessantes. ### Os filtros voltaram ligados ao reabrir o app É o comportamento esperado: os três filtros rápidos ficam salvos. Desligue-os no **MENU**. ### A ação NOTAS não aparece ao selecionar texto Ela só existe com o Bloco de Notas ativado em **Configurações > Aplicativos**. ### O botão SALVAR mostra "Escreva um título ou conteúdo antes de salvar." A nota está vazia. Preencha pelo menos o título ou o conteúdo. ### Aparece "Não foi possível baixar a nota em TXT." O arquivo não pôde ser gravado. Tente de novo e confira o espaço livre e o destino escolhido. Se você cancelar a escolha do destino, nenhuma mensagem de erro aparece. ### Limpar a História apaga minhas notas? Não. **LIMPAR HISTÓRIA** atua apenas sobre requisições, marcações e dados do navegador. As notas continuam no aparelho. ## Continue - [Interceptador](https://netcattest.com/catsuite/docs/modulos/interceptador) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Navegador](https://netcattest.com/catsuite/docs/modulos/navegador) - [Decodificar](https://netcattest.com/catsuite/docs/modulos/decodificar) - [Segurança, cofre e proteção de dados](https://netcattest.com/catsuite/docs/seguranca) - [Módulos do CatSuite](https://netcattest.com/catsuite/docs/modulos) --- # Wordlists e payloads > Wordlists e payloads do CatSuite: como importar listas .txt, usar wordlists padrão, configurar o gerador de payload e aplicar no Intruso e no Descobridor. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/modulos/wordlists - Seção: Módulos - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/modules/wordlists As **Wordlists e payloads** do CatSuite reúnem as listas de palavras que alimentam os ataques locais do app: as **wordlists padrão** já incluídas, as **wordlists adicionadas pelo usuário** (importadas em `.txt`) e os **geradores de payload** que criam sequências numéricas na hora. Este módulo explica o que é uma wordlist, como importar e validar um arquivo, como funciona o gerador de payload do Intruso e como selecionar cada lista no [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) e no [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor). ## O que são wordlists e payloads no CatSuite Uma **wordlist** é um arquivo de texto com uma entrada por linha. Cada linha vira um valor que o CatSuite injeta em uma posição do alvo durante um teste autorizado. Um **payload** é cada valor concreto que sai da wordlist (ou de um gerador) e entra na requisição. O módulo de wordlists é o ponto central onde essas listas são organizadas, importadas, validadas e guardadas para serem reutilizadas pelos módulos de ataque. O CatSuite separa as listas em duas origens: as **wordlists padrão**, que já vêm embutidas no app e não podem ser apagadas, e as **wordlists do usuário**, que você importa a partir de um arquivo `.txt`. Além das listas prontas, o Intruso oferece o **gerador dinâmico**, que produz uma sequência de payloads numéricos a partir de poucos parâmetros, sem precisar de nenhum arquivo. > [!NOTA] > A tela de wordlists fica em **Configurações > Wordlist**. É de lá que você gerencia as listas padrão e personalizadas, importa novos arquivos e acompanha a validação de cada um. ## Conceitos essenciais ### Wordlist e o formato .txt A wordlist importada é sempre um arquivo `.txt` em texto simples, com uma entrada por linha. O seletor de arquivos do CatSuite aceita apenas a extensão `.txt` (tipos `text/plain` e `application/octet-stream`). Linhas vazias e conteúdo sem valor útil são descartados na validação; se o arquivo não tiver nenhuma linha aproveitável, a importação é recusada. ```text admin login api api/v1 api/v2 backup config uploads .git ``` ### Wordlists padrão versus adicionadas pelo usuário As **wordlists padrão** (rótulo **PADRÃO DO APP**) são protegidas: ficam embutidas no app, aparecem no topo do catálogo e não podem ser renomeadas nem apagadas. As **wordlists do usuário** (rótulo **ADICIONADA PELO USUÁRIO**) são as que você importa; elas aparecem logo abaixo das listas internas e podem ser renomeadas e removidas a qualquer momento. > [!DICA] > No seletor de wordlists dos módulos, as listas internas aparecem primeiro e as suas listas importadas aparecem logo abaixo. O seletor é atualizado toda vez que você o abre, então uma lista recém-importada já fica disponível. ### Payload e gerador de payload Um **payload** é cada valor enviado ao alvo. Ele pode vir de uma wordlist (uma linha por payload) ou de um **gerador dinâmico**, que monta uma sequência de números a partir de um início, um fim e um passo, com a opção de preencher com zeros à esquerda e acrescentar um prefixo e um sufixo. O gerador é útil quando você precisa testar faixas como `1` a `1000` ou identificadores no formato `user0001`, `user0002` sem manter um arquivo gigante. ### Leitura protegida e modo seguro Para arquivos grandes, o CatSuite ativa a **leitura protegida** (também exibida como **MODO SEGURO**): a wordlist é lida por *stream*, linha a linha, em vez de carregar tudo na memória do aparelho de uma vez. Isso evita travamentos quando a lista entra em operação. A contagem de linhas é feita e guardada na validação, então o catálogo mostra o total mesmo sem reabrir o arquivo. > [!IMPORTANTE] > Ao importar, o CatSuite faz uma **cópia protegida** do arquivo dentro do diretório privado do app. A lista continua funcionando mesmo que o arquivo original seja movido ou apagado depois. ### Marcador $CAT$ Nos módulos de ataque, o ponto exato em que cada palavra da wordlist entra na requisição é marcado com `$CAT$`. No Descobridor, o marcador vai na URL base; no Intruso, ele marca as posições dentro da requisição. Sem o marcador, o app não sabe onde aplicar o payload. ## A tela de wordlists A tela de wordlists (em **Configurações > Wordlist**) gerencia as listas padrão, as listas customizadas, a importação e a validação. Ela é dividida em duas seções e exibe, para cada item, os rótulos de origem, contagem e tamanho. ### Seção Wordlists padrão A seção **WORDLISTS PADRÃO** lista as bases que já vêm com o app. Cada item mostra o nome, a descrição de uso, a contagem de linhas e o rótulo **PADRÃO DO APP**. Esses itens são protegidos e não oferecem ação de renomear ou apagar. ### Seção Wordlists do usuário A seção **WORDLISTS DO USUÁRIO** reúne as listas que você importou. Cada item traz o nome editável, o campo **ARQUIVO DA WORDLIST** (o arquivo `.txt` associado), a contagem de linhas, o tamanho e o rótulo **ADICIONADA PELO USUÁRIO**. É aqui que ficam as ações de renomear e apagar. Quando não há nenhuma lista importada, a seção fica vazia até você usar **ADICIONAR WORDLIST**. ### Rótulos de cada item Cada item do catálogo exibe rótulos calculados a partir do arquivo: | Rótulo | O que mostra | | --- | --- | | PADRÃO DO APP / ADICIONADA PELO USUÁRIO | A origem da wordlist (padrão ou do usuário). | | Contagem de linhas | O total de entradas, ou **Sob demanda** quando a contagem não foi fixada. | | Tamanho | O tamanho do arquivo em B, KB ou MB; **Interna** para listas padrão. | | LEITURA PROTEGIDA / MODO SEGURO | Aparece quando a lista é grande e será lida por stream. | ## Wordlists padrão incluídas O CatSuite já traz duas bases prontas, voltadas aos dois módulos de ataque: | Nome | Uso recomendado | Linhas | Origem | | --- | --- | --- | --- | | Catsuite diretórios e API | Enumeração de caminhos e endpoints no módulo Descobridor. | 4.750 | PADRÃO DO APP | | Catsuite parâmetros | Testes de parâmetros e variações no módulo de Intrusão. | 6.453 | PADRÃO DO APP | As duas listas são armazenadas internamente em formato compactado e tratadas em leitura segura, por isso aparecem com o tamanho **Interna**. > [!DICA] > Comece pelas listas padrão antes de importar as suas. A base **Catsuite diretórios e API** é a escolha natural para o Descobridor, e a **Catsuite parâmetros** foi preparada para o Intruso. ## Como adicionar uma wordlist (importar .txt) O botão **ADICIONAR WORDLIST** abre o fluxo para importar uma lista personalizada em `.txt`. O arquivo é selecionado, validado, contado e copiado em segundo plano para o app. ### Passo a passo 1. Abra **Configurações > Wordlist**. 2. Toque em **ADICIONAR WORDLIST**. 3. Escolha um arquivo `.txt` no seletor do aparelho. 4. Aguarde a validação (**VALIDANDO WORDLIST**): o CatSuite confere o formato e conta as linhas. 5. Confirme. Se o arquivo for grande, o app avisa que vai usar **leitura protegida**. 6. A mensagem **Wordlist adicionada com sucesso** confirma que ela já está no catálogo. 7. Opcional: renomeie a lista para um nome curto e claro (até 48 caracteres). ### O que acontece na validação Durante a validação, o CatSuite verifica se o arquivo é um `.txt` compatível e conta as linhas úteis para salvar esse total no catálogo. Em seguida, ele faz uma cópia protegida do conteúdo no diretório privado do app. Se o arquivo não passar na checagem de formato, ou não tiver conteúdo aproveitável, a importação é recusada com uma mensagem explicativa. ### Leitura protegida para arquivos grandes Quando o arquivo é grande, o CatSuite marca a wordlist para **leitura protegida** e informa que vai tratá-la em **modo seguro** por causa do tamanho. Em operação, a lista é lida por stream, linha a linha, mesmo em arquivos muito grandes, o que evita carregar tudo na memória do aparelho. > [!AVISO] > Importe apenas arquivos em que você confia. A wordlist alimenta requisições reais nos módulos de ataque; use somente contra alvos autorizados. ## Opções do item de wordlist e como configurar Cada wordlist do catálogo é descrita por um conjunto de campos. Alguns você ajusta (como o nome), outros são preenchidos pela importação ou pela lista interna. | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Nome | Texto até 48 caracteres | Nome do arquivo | Rótulo exibido no catálogo e nos seletores dos módulos. | | Arquivo da wordlist | Arquivo `.txt` | O importado | O arquivo associado à lista; aparece no campo **ARQUIVO DA WORDLIST**. | | Formato | `.txt` (usuário) / `.gz` (padrão) | `.txt` | Extensão do conteúdo; listas padrão são internas e compactadas. | | Origem | Padrão / Customizada | Customizada | Define se a lista é protegida (padrão) ou editável (do usuário). | | Contagem de linhas | Número ou Sob demanda | Da validação | Total de entradas salvo na importação. | | Leitura protegida | Ativa / Inativa | Automática | Ativada para arquivos grandes, força a leitura por stream. | O único campo que você edita livremente é o **nome**: ele é limitado a 48 caracteres e, se você deixar em branco, volta para um valor padrão. Os demais campos refletem o arquivo importado e não precisam de ajuste manual. ## Botões e ações | Botão / ação | O que faz | | --- | --- | | ADICIONAR WORDLIST | Abre o seletor de arquivos `.txt` e inicia a importação e a validação. | | RENOMEAR WORDLIST | Troca o nome de uma lista do usuário (até 48 caracteres). | | Apagar wordlist | Remove uma lista do usuário do catálogo e do app. | > [!PERIGO] > Apagar uma wordlist do usuário é definitivo dentro do app: a cópia protegida é removida. Guarde o arquivo `.txt` original fora do CatSuite se quiser reimportá-lo depois. ## O gerador de payload do Intruso No Intruso, a área **ORIGEM DOS PAYLOADS** deixa você escolher entre usar **Wordlists** ou **Geradores Dinâmicos**. O **GERADOR DINÂMICO** cria uma sequência de payloads numéricos a partir de poucos parâmetros, sem precisar de arquivo. Cada payload tem o formato prefixo + número + sufixo, e o número pode ser preenchido com zeros à esquerda. ### Opções do gerador e como configurar | Opção | Valores | Padrão | O que faz | | --- | --- | --- | --- | | Início | Número inteiro | 1 | Primeiro número da sequência. | | Fim | Número inteiro | 25 | Último número da sequência. | | Passo | Inteiro maior que 0 | 1 | Incremento entre um número e o próximo. | | Padding | Inteiro | 0 | Largura do número com zeros à esquerda; 0 não preenche. | | Prefixo | Texto | vazio | Texto fixo antes do número. | | Sufixo | Texto | vazio | Texto fixo depois do número. | Comece por **Início** e **Fim** para definir a faixa. Use o **Passo** para pular valores (por exemplo, de 10 em 10). O **Padding** garante largura fixa, útil para identificadores com zeros à esquerda. O **Prefixo** e o **Sufixo** envolvem o número com texto fixo, como `user` ou `.php`. ### Estimativa de payloads A tela mostra a **Estimativa atual** de payloads à medida que você ajusta os campos. O total é calculado como `((fim - início) ÷ passo) + 1`. Se o **Passo** for zero ou negativo, ou se o **Fim** for menor que o **Início**, a estimativa é zero e nenhum payload é produzido. ### Exemplos de saída Sequência simples de `1` a `5`, sem padding: ```text 1 2 3 4 5 ``` Identificadores com prefixo e padding de 4 dígitos: ```text user0001 user0002 user0003 user0004 user0005 ``` Faixa de `0` a `100` com passo de `10`: ```text 0 10 20 30 40 50 60 70 80 90 100 ``` > [!NOTA] > Se o gerador não produzir payloads ou se a wordlist selecionada não retornar valores utilizáveis, o Intruso avisa antes de iniciar. Revise a faixa, o passo e a seleção da lista. ## Como selecionar a wordlist em cada módulo ### No Descobridor No [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor), a seção **WORDLIST DO DESCOBRIDOR** deixa você selecionar a lista que o módulo vai percorrer. Use as listas internas ou as wordlists adicionadas por você; o seletor é atualizado ao ser aberto e mostra as listas internas no topo. O ponto em que cada palavra entra na URL é marcado com `$CAT$`. ```text https://alvo.com/api/$CAT$ ``` Se a wordlist configurada não estiver disponível, o Descobridor pede que você abra as configurações e selecione outra. ### No Intruso No [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso), você escolhe a **ORIGEM DOS PAYLOADS** entre **Wordlists** e **Geradores Dinâmicos**. Ao usar uma wordlist, a seção **WORDLIST DO INTRUSO** lista as mesmas bases padrão e personalizadas do catálogo. As posições a testar são marcadas com `$CAT$` dentro da requisição. É preciso selecionar uma wordlist (ou configurar o gerador) antes de iniciar a intrusão. ## Limites e boas práticas - **Nome:** até 48 caracteres por wordlist. - **Formato de importação:** apenas `.txt` em texto simples, uma entrada por linha. - **Arquivos grandes:** entram automaticamente em leitura protegida (modo seguro) e são lidos por stream. - **Armazenamento:** as listas importadas são copiadas para o diretório privado do app; o arquivo original não precisa continuar no aparelho. - **Gerador:** passo deve ser maior que zero e o fim não pode ser menor que o início, ou a estimativa fica em zero. > [!DICA] > Dê nomes curtos e descritivos às suas listas (por exemplo, `api-v1-rotas` ou `params-login`). Nomes claros facilitam a escolha no seletor do Intruso e do Descobridor. ## Problemas comuns / FAQ **O seletor só aceita `.txt`?** Sim. A importação valida a extensão e o conteúdo; arquivos em outros formatos são recusados. **Por que minha lista aparece como "Sob demanda"?** Quando a contagem de linhas não foi fixada, o catálogo mostra **Sob demanda** em vez do número. Reimporte o arquivo para gravar a contagem. **Posso apagar as wordlists padrão?** Não. As listas com rótulo **PADRÃO DO APP** são protegidas e não oferecem renomear nem apagar. **A wordlist sumiu na hora de iniciar o ataque.** Se a lista configurada não estiver disponível, o módulo pede que você abra as configurações e selecione outra, ou reimporte o arquivo. No Intruso, selecione uma wordlist antes de iniciar a intrusão. **O gerador não produziu payloads.** Verifique se o passo é maior que zero e se o fim é maior ou igual ao início; a estimativa precisa ser maior que zero. **Onde ficam as listas importadas?** Em uma cópia protegida no diretório privado do app. Apagar os dados do app remove as wordlists customizadas junto com configurações, sessões e histórico. ## Continue - [Intruso](https://netcattest.com/catsuite/docs/modulos/intruso) - [Descobridor](https://netcattest.com/catsuite/docs/modulos/descobridor) - [Repetir](https://netcattest.com/catsuite/docs/modulos/repetir) - [Visão geral dos módulos](https://netcattest.com/catsuite/docs/modulos) - [Uso seguro e responsável](https://netcattest.com/catsuite/docs/seguranca) --- # Extensões do CatSuite > Como funcionam as extensões .catplug: motor QuickJS isolado, permissões, ciclo de vida, pontos de integração e limites da API v1. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/extensoes - Seção: Extensões - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/extensions Extensões são pacotes `.catplug` com código JavaScript executado pelo **QuickJS 2026-06-04**, incorporado por JNI em um serviço Android isolado. Cada extensão tem seu próprio ambiente, seus dados em SQLite e suas permissões. ## O que uma extensão pode fazer - Observar requests e responses com `cat.events.on`. - Alterar mensagens antes do encaminhamento com `cat.proxy.onRequest` e `cat.proxy.onResponse`. - Enviar requests para destinos declarados com `cat.http.send`. - Consultar APIs externas com credenciais protegidas com `cat.external.call`. - Registrar comandos, menus de mensagem e abas nativas. - Salvar dados e registrar achados com evidência. - Participar de [fluxos visuais](https://netcattest.com/catsuite/docs/fluxos) como etapas e parsers. ## O que uma extensão não pode fazer Não há Node.js, DOM, `fetch`, acesso geral a arquivos ou execução de processos. Use `cat.http.parseUrl` para URLs e `cat.bytes` para converter UTF-8. TLS usa a validação de certificados do Android e o SDK não pode desativá-la. ## Pontos de integração Os hooks cobrem o proxy, o Proxy de Rede, o Repetir, o Intruso e o Descobridor. Toda mensagem informa sua origem em `source`: | `source` | Origem | |---|---| | `proxy` | Tráfego do navegador interceptado | | `network_proxy` | Sessão do Proxy de Rede | | `repetir` | Envios do Repetir | | `intruso` | Envios do Intruso | | `descobridor` | Envios do Descobridor | | `extension` | Requests enviadas por extensões | | `laboratory` | Tráfego simulado do laboratório | Requests de uma extensão não voltam aos próprios handlers; outras extensões podem processá-las conforme o escopo. Quando extensões processam o tráfego do proxy, as regras de substituição aplicáveis são executadas antes dos handlers, e a edição manual prevalece. ## Ciclo de vida 1. **Criar ou importar** — em **Configurações → Extensões**, use o botão Criar (modelo básico ou exemplo Aurora), importe um `.catplug` ou crie o pacote na [IDE web](https://netcattest.com/catsuite/docs/extensoes/ide) ou no [CatSuite Studio para VS Code](https://netcattest.com/catsuite/docs/extensoes/vscode). 2. **Validar** — pacote, manifesto e código são validados antes de qualquer troca. 3. **Aprovar** — instalações começam desativadas. Ao ativar, você revisa capacidades e destinos. 4. **Executar** — hooks, comandos, menus e abas entram em ação. 5. **Atualizar** — permissões ou destinos ampliados exigem nova aprovação. > [!AVISO] > Três falhas consecutivas suspendem a extensão. Desativar ou remover limpa os handlers e componentes registrados. ## Limites da API v1 | Recurso | Limite | |---|---| | Extensões ativas | 4 | | Memória por ambiente | 32 MiB | | Handler de alteração | 100 ms, síncrono | | Chamadas HTTP simultâneas | 2 por extensão | | Prazo HTTP total | 120 segundos | | Resposta HTTP | até 8 MiB, com preview para o JavaScript | | Preview editável | até 32 KiB | | Script de entrada | até 128 KiB | | Pacote | 10 MiB comprimido, 40 MiB expandido e 500 arquivos | | Dados por extensão | 10 MiB, com 128 KiB por valor | Corpos maiores, incompletos, comprimidos ou contínuos ficam somente para leitura. SSE e WebSocket preservam seu transporte, e túneis HTTPS sem descriptografia não fornecem conteúdo HTTP. ## Primeira extensão ```js cat.commands.register('lab.ola', {'pt-BR': 'Dizer olá', en: 'Say hello'}, () => { cat.log({'pt-BR': 'Olá do laboratório.', en: 'Hello from the lab.'}); return {ok: true}; }); ``` Declare a permissão `commands` no [manifesto](https://netcattest.com/catsuite/docs/extensoes/manifesto) e rode o comando no simulador da [IDE de extensões](https://netcattest.com/catsuite/ide). ## Continue - [SDK de extensões 1.4.0](https://netcattest.com/catsuite/docs/extensoes/sdk) - [Manifesto do pacote .catplug](https://netcattest.com/catsuite/docs/extensoes/manifesto) - [Referência da API JavaScript](https://netcattest.com/catsuite/docs/extensoes/api) - [Interface, dados e achados](https://netcattest.com/catsuite/docs/extensoes/interface-e-dados) --- # Manifesto do pacote .catplug > Estrutura do arquivo .catplug, campos do manifest.json, regras de validação, permissões, destinos, hashes SHA-256 e o formato 2. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/extensoes/manifesto - Seção: Extensões - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/extensions/manifest ## Estrutura do pacote Um `.catplug` é um arquivo ZIP com `manifest.json` na raiz e os arquivos listados em `hashes`. ```text auditor.catplug ├── manifest.json ├── main.js ├── fixtures.json ├── README.pt-BR.md └── README.en.md ``` ## Exemplo completo ```json { "formatVersion": 1, "apiVersion": 1, "id": "lab.auditor", "version": "1.0.0", "author": "NetCatTest", "entry": "main.js", "name": {"pt-BR": "Auditor de respostas", "en": "Response auditor"}, "description": {"pt-BR": "Audita cabeçalhos de cache.", "en": "Audits cache headers."}, "permissions": ["traffic.read", "traffic.modify", "findings", "commands", "ui.tab"], "targets": ["api.aurora.test"], "externalHosts": [], "settings": {"laboratory": true}, "hashes": { "main.js": "84f7f8620e4ccde480b3a929483f51a0d051c2fe89443ecd4409faea663e071b" } } ``` ## Campos | Campo | Tipo | Regra | |---|---|---| | `formatVersion` | número | `1` ou `2` | | `apiVersion` | número | `1` | | `id` | texto | `[a-z][a-z0-9.-]{2,63}`, estável entre versões | | `version` | texto | `MAIOR.MENOR.CORREÇÃO`, por exemplo `1.0.0` | | `author` | texto | obrigatório | | `entry` | texto | arquivo `.js` do próprio pacote, até 128 KiB | | `name` | objeto | `pt-BR` e `en` obrigatórios | | `description` | objeto | `pt-BR` e `en` obrigatórios | | `permissions` | lista | capacidades conhecidas, sem repetição | | `targets` | lista | destinos de `cat.http.send`, até 100 | | `externalHosts` | lista | destinos de `cat.external.call`, até 100 | | `settings` | objeto | valores iniciais lidos por `cat.settings.get` | | `settingsSchema` | objeto | opcional, até 32 campos | | `hashes` | objeto | SHA-256 de cada arquivo, exceto o manifesto | > [!IMPORTANTE] > Nomes, descrições e textos de interface precisam ter `pt-BR` e `en`. IDs e comandos são estáveis nos dois idiomas. Sem as duas traduções o pacote é recusado com `E_TRANSLATION`. ## Permissões | Capacidade | Libera | |---|---| | `traffic.read` | `cat.events.on` e conteúdo HTTP em menus | | `traffic.modify` | `cat.proxy.onRequest` e `cat.proxy.onResponse` | | `http.send` | `cat.http.send` e `cat.http.cancel` | | `external.call` | `cat.external.call` | | `ui.menu` | `cat.ui.menu.register` | | `ui.tab` | `cat.ui.tab.register` e `cat.ui.update` | | `storage` | `cat.storage` | | `findings` | `cat.findings.add` | | `repeater` | `cat.tools.repeater.open` | | `commands` | `cat.commands.register` e `cat.commands.execute` | | `pipeline.step` | `cat.pipeline.registerStep` | | `parsers` | `cat.parsers.register` | | `connector.run` | `cat.connectors` dentro de fluxos aprovados | > [!NOTA] > Menus que recebem conteúdo HTTP exigem `traffic.read`, além de `ui.menu` e `commands`. O Repetir só recebe destinos aprovados. ## Destinos `targets` e `externalHosts` aceitam domínio em IDNA, IPv4 decimal, IPv6 entre colchetes e porta explícita, com esquema e caminho opcionais. | Exemplo | Alcance | |---|---| | `api.exemplo.test` | domínio exato, HTTP ou HTTPS, qualquer porta | | `https://api.exemplo.test` | somente HTTPS na porta 443 | | `https://api.exemplo.test:8443` | somente HTTPS na porta 8443 | | `https://api.exemplo.test/v1` | somente HTTPS em `/v1` e abaixo | | `*.exemplo.test` | subdomínios de `exemplo.test`, sem incluir o próprio domínio | São recusados credenciais na URL, `?`, `#`, `%`, espaços, curinga global, curinga em IP, caminhos com `..` e barras codificadas. Caminhos exigem esquema. Redes privadas e loopback precisam de escopo explícito, e DNS e redirecionamentos são revalidados: um domínio público não pode passar a apontar para um endereço privado. ## Hashes Cada arquivo do pacote, exceto o manifesto, precisa de uma entrada em `hashes` com o SHA-256 dos seus bytes em hexadecimal minúsculo. A quantidade de hashes deve ser igual à quantidade de arquivos. A [IDE web](https://netcattest.com/catsuite/docs/extensoes/ide) calcula tudo automaticamente na exportação, e no [CatSuite Studio](https://netcattest.com/catsuite/docs/extensoes/vscode) o comando **CatSuite: Atualizar hashes do manifesto** faz o mesmo no VS Code. ## Configurações com settingsSchema ```json { "settingsSchema": { "laboratory": {"title": {"pt-BR": "Modo laboratório", "en": "Laboratory mode"}, "type": "boolean"}, "limite": {"title": {"pt-BR": "Limite", "en": "Limit"}, "type": "integer", "minimum": 1, "maximum": 50}, "chave": {"title": {"pt-BR": "Credencial", "en": "Credential"}, "type": "credential"} } } ``` Tipos aceitos: `string`, `boolean`, `integer`, `number` e `credential`. O alias `secret` significa referência a credencial, não o seu conteúdo. `enum` aceita de 1 a 50 valores e as chaves seguem `[a-zA-Z0-9_.-]{1,64}`. ## Formato 2 `formatVersion: 2` acrescenta `revisionId` e `lineageId` em UUID, `parentHash`, `requiresSdk` (de `1.0.0` a `1.4.0`), assinatura Ed25519 opcional sobre JSON canônico e proteção opcional com senha. Editar no aplicativo remove a assinatura antiga e cria uma nova revisão; exportar assina com a identidade local. Veja [Segurança, cofre e proteção de dados](https://netcattest.com/catsuite/docs/seguranca). ## Limites do pacote | Item | Limite | |---|---| | Arquivo `.catplug` | 10 MiB | | Conteúdo expandido | 40 MiB | | Arquivos | 500 | | `manifest.json` | 64 KiB | | Cada arquivo | 4 MiB | | Caminhos | relativos, até 200 caracteres, sem `/` inicial, `\`, `:` ou `..` | Links simbólicos e arquivos duplicados são recusados com `E_PATH`. --- # SDK de extensões 1.4.0 > O SDK de extensões 1.4.0 do CatSuite: onde baixar, o que vem no pacote, o objeto global cat, os exemplos, os modelos de fluxo e as capacidades do CatBridge. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/extensoes/sdk - Seção: Extensões - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/extensions/sdk O **SDK de extensões do CatSuite** reúne tudo para criar plugins do aplicativo: o contrato completo da API em TypeScript, o runtime de referência, os esquemas dos arquivos, **quinze exemplos editáveis** e **seis modelos de fluxo**. Esta é a versão **1.4.0 · API v1**, compatível com todas as versões anteriores da API. Esta página mostra onde baixar, o que vem no pacote e como a API está organizada. | Recurso | Endereço | |---|---| | Baixar o SDK (ZIP) | [catsuite-sdk-1.4.0.zip](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/catsuite-sdk-1.4.0.zip) | | Somas de verificação | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/SHA256SUMS.txt) | | Código no GitHub | [Pasta sdk](https://github.com/netcattest/catsuite/tree/main/sdk) | | Escrever no VS Code | [CatSuite Studio](https://netcattest.com/catsuite/docs/extensoes/vscode) | | Escrever no navegador | [IDE web](https://netcattest.com/catsuite/ide) | > [!NOTA] > Não é preciso instalar o SDK no aparelho: o motor **QuickJS** roda dentro do aplicativo e o objeto global `cat` já está disponível. O pacote do SDK serve para escrever e validar no computador, com os tipos, os exemplos e os esquemas. ## O que vem no pacote O ZIP extrai a pasta `catsuite-sdk` com: | Arquivo ou pasta | Uso | |---|---| | `catsuite.d.ts` | Contrato completo da API e tipos para o editor. | | `sdk.js` | Runtime de referência carregado pelo host QuickJS do CatSuite. | | `sdk.json` | Versão e estrutura do SDK. | | `esquemas` | Esquemas de `manifest.json`, projeto, `.catflow` e `.catdata`. | | `capability-contracts.json` | Contratos tipados das capacidades do CatBridge. | | `exemplos` | Quinze projetos editáveis, com manifestos e fixtures. | | `fluxos` | Seis modelos de fluxo e entradas fictícias. | > [!IMPORTANTE] > Não inclua `sdk.js` no script da extensão: o aplicativo já fornece o objeto global `cat`. Não há Node.js, DOM, `fetch`, shell ou acesso geral aos arquivos do aparelho. ## Começar 1. Instale o [CatSuite Studio](https://netcattest.com/catsuite/docs/extensoes/vscode) no VS Code e extraia o SDK. 2. Abra uma pasta de `exemplos` como projeto, por exemplo `exemplos/painel`. 3. Edite o arquivo indicado por `entry` no `manifest.json`. Digite `cat.` para explorar a API. 4. Rode **CatSuite: Validar projeto** e a prévia local do Studio. 5. Gere o `.catplug` assinado e importe-o em uma versão do CatSuite com extensões compatíveis. Revise as permissões antes de ativar. Se preferir não instalar nada, use a [IDE web](https://netcattest.com/catsuite/ide): ela traz os mesmos tipos no autocompletar. ## O objeto global `cat` Todo o SDK é exposto no objeto global `cat`. A seguir, os grupos da API v1. ### Identidade - `cat.apiVersion` — sempre `1`. - `cat.sdkVersion` — a versão do SDK, `"1.4.0"` nesta entrega. ### Eventos e alteração de tráfego - `cat.events.on(name, handler)` — observa `http.request`, `http.response` e `http.complete`. - `cat.proxy.onRequest(handler)` e `cat.proxy.onResponse(handler)` — alteram a mensagem antes do encaminhamento. Devolver uma `CatMessage` substitui a original; não devolver nada a mantém. Os handlers de alteração são **síncronos** e têm prazo de **100 ms**. Cada mensagem informa a `source` (origem), como `proxy`, `network_proxy`, `repetir`, `intruso`, `descobridor`, `extension` e `laboratory`. ### Envios HTTP e APIs externas - `cat.http.send(request)` — envia uma request para um destino declarado e aprovado. - `cat.http.cancel(id)` — cancela um envio pelo `id`. - `cat.http.parseUrl(url)` — separa `scheme`, `hostname`, `port`, `pathname` e `query`. - `cat.laboratory.capture(request)` — captura uma request no laboratório, sem rede real. - `cat.external.call(options)` — consulta uma API externa com uma credencial protegida (`credentialId`). ### Interface - `cat.ui.menu.register(options)` — adiciona itens ao menu de uma mensagem, nos contextos `request` ou `response`. - `cat.ui.tab.register(options)` — cria uma aba nativa com uma lista de componentes. - `cat.ui.update(id, components)` — atualiza os componentes de uma aba. Os componentes são renderizados de forma nativa, sem HTML nem JavaScript visual. Veja a lista completa em [Interface, dados e achados](https://netcattest.com/catsuite/docs/extensoes/interface-e-dados). ### Dados, configurações e recursos - `cat.storage.get(key)`, `cat.storage.set(key, value)` e `cat.storage.delete(key)` — armazenamento por extensão, com até 10 MiB e 128 KiB por valor. - `cat.settings.get(key)` — lê uma configuração declarada no manifesto. - `cat.resources.get(path, mode)` — lê um recurso do pacote como texto ou bytes. ### Achados, comandos e utilidades - `cat.findings.add(finding)` — registra um achado com severidade, confiança, URL e evidência. - `cat.commands.register(id, title, handler)` e `cat.commands.execute(id, args)` — registram e executam comandos. - `cat.tools.repeater.open(request)` — abre uma request no módulo Repetir. - `cat.i18n.locale` e `cat.i18n.text(value)` — idioma atual e resolução de um texto bilíngue `CatText`. - `cat.bytes.fromText(text)` e `cat.bytes.toText(bytes)` — conversão entre texto UTF-8 e bytes. - `cat.log(message, level)` — registra uma mensagem no console da extensão. ## Tipos principais - `CatText` — um texto bilíngue no formato `{"pt-BR": "...", en: "..."}`. - `CatMessage` — uma mensagem HTTP, com `headers`, `body`, `url`, `method`, `status`, origem e, quando vem de outra extensão, `pluginOrigin` e `extensionTrail`. - `CatBody` — o corpo da mensagem, com `bytes`, `complete`, `truncated`, `available`, `mutable` e, quando aplicável, `representation` (`wire` ou `decoded`), `sha256` e `reference`. - `CatRequest` — uma request para `cat.http.send` ou `cat.external.call`. - `CatFinding` — um achado, com `severity` (`info`, `low`, `medium`, `high`, `critical`), `confidence` (`observed`, `confirmed`, `hypothesis`) e `status` (`open`, `resolved`, `false_positive`). - `CatComponent` — um componente de interface. Veja a tabela a seguir. ### Componentes de interface | Componente | Campos | Desde | |---|---|---| | `text` | `text` | v1 | | `button` | `label`, `command`, `args` | v1 | | `field` e `filter` | `id`, `label`, `value` | v1 | | `list` | `items` | v1 | | `table` | `columns`, `rows` | v1 | | `http` | `message` | v1 | | `progress` | `value` | v1 | | `json` | `label`, `value` | SDK 1.2 | | `diff` | `label`, `before`, `after` | SDK 1.2 | | `timeline` | `label`, `items` com `title`, `detail` e `time` | SDK 1.2 | | `chart` | `label`, `values` com `label` e `value` | SDK 1.2 | | `graph` | `label`, `nodes` e `edges` com `from` e `to` | SDK 1.2 | ## Fluxos visuais O SDK 1.2 adicionou as etapas e os parsers de fluxo: - `cat.pipeline.registerStep(options, handler)` — registra uma etapa que recebe artefatos de entrada e emite artefatos de saída. - `cat.parsers.register(options, handler)` — registra um parser para tipos MIME específicos. O `handler` recebe um `CatStepContext` com `inputs`, `config`, `runId`, `nodeId`, `revisionId`, `protection`, `restored`, `signal`, e os métodos `checkpoint(state)`, `emit(kind, data)` e `progress(value)`. A etapa deve observar `ctx.signal.aborted` e pode retomar do estado salvo em `ctx.restored`. O `checkpoint` aceita um JSON de até 32 KiB. ```js cat.pipeline.registerStep({ id: 'exemplo.retomar', title: {'pt-BR': 'Retomar', en: 'Resume'}, inputs: ['record'], outputs: ['record'] }, async ctx => { let feitos = ctx.restored?.feitos || 0; for (; feitos < ctx.inputs.length; feitos++) { if (ctx.signal.aborted) return; ctx.emit('record', ctx.inputs[feitos].data); await ctx.checkpoint({feitos: feitos + 1}); } }); ``` Veja os formatos de artefato, os nós e os modelos em [Fluxos visuais com .catflow](https://netcattest.com/catsuite/docs/fluxos). ## Capacidades do CatBridge O SDK 1.3 adicionou as capacidades tipadas do [CatBridge](https://netcattest.com/catsuite/docs/catbridge): - `cat.connectors.capabilities(connectorId)` — lê o catálogo de capacidades do conector. - `cat.connectors.run(options)` — executa uma capacidade tipada (por exemplo `http.probe`) com os parâmetros aprovados. - `cat.connectors.cancel(id)` — cancela uma tarefa pelo `id`. Declare `connector.run` e `requiresSdk: "1.3.0"` ou superior no manifesto. O SDK 1.4 amplia o catálogo com os adaptadores do ecossistema (descoberta de ativos, DNS, portas, fuzzing tipado, TLS, JWT e análise de código), que exigem `.catflow` 5 e contrato 2. Veja [Capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas). ## Exemplos incluídos Os quinze exemplos são projetos editáveis, com manifestos e fixtures: - **Essenciais:** painel e comandos, análise de tráfego, headers, etapa de fluxo e parser JSON. - **Aurora:** captura, alteração, envio, análise, menu, aba, persistência, API simulada e achados. - **Identidade:** JWT, candidatos a segredos, hipóteses de autorização e relatório. - **APIs:** análise estática de JavaScript, endpoints e comparação com OpenAPI. - **CatBridge:** sondagem HTTP e proveniência dos resultados. A execução real exige conexão, ferramenta disponível e aprovação; a prévia do Studio usa simulação. Os seis modelos de fluxo acompanham entradas fictícias. Importar um modelo não amplia o escopo nem autoriza envios; as fixtures usam dados fictícios. > [!AVISO] > As fixtures e os laboratórios usam dados fictícios e não acessam a rede. A análise de JWT não verifica assinaturas, e indícios de autorização não demonstram acesso indevido. Trate cada sinal como evidência para revisão. ## Continue - [Referência da API JavaScript](https://netcattest.com/catsuite/docs/extensoes/api) - [Interface, dados e achados](https://netcattest.com/catsuite/docs/extensoes/interface-e-dados) - [Manifesto do pacote .catplug](https://netcattest.com/catsuite/docs/extensoes/manifesto) - [CatSuite Studio para VS Code](https://netcattest.com/catsuite/docs/extensoes/vscode) --- # Referência da API JavaScript > O objeto global cat do SDK 1.4: mensagens HTTP, eventos, hooks de alteração, envios, APIs externas, laboratório, recursos e utilidades. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/extensoes/api - Seção: Extensões - Atualizado: 2026-10-05 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/extensions/api Toda extensão recebe o objeto global e congelado `cat`. `cat.apiVersion` vale `1` e `cat.sdkVersion` vale `"1.4.0"`. A API v1 permanece compatível em todas as versões do SDK. ## Mensagens HTTP Requests e responses chegam como `CatMessage`: | Campo | Descrição | |---|---| | `id` | identificador da mensagem | | `source` | origem: `proxy`, `network_proxy`, `repetir`, `intruso`, `descobridor`, `extension` ou `laboratory` | | `session` | sessão do Proxy de Rede, ou `null` | | `stage` | `request` ou `response` | | `url`, `method` | destino e método | | `headers` | lista ordenada de `{name, value}` | | `body` | `bytes`, `size`, `complete`, `truncated`, `available`, `mutable`, `representation` e `sha256` | | `status`, `reason` | somente em responses | | `time` | carimbo de tempo | | `request` | request original, presente em responses | `body.representation` indica bytes de transporte (`wire`) ou descomprimidos pelo cliente (`decoded`). O preview editável tem até 32 KiB. ## Eventos Observadores podem ser assíncronos e exigem `traffic.read`. ```js cat.events.on('http.request', async message => { await cat.storage.set('ultimaUrl', message.url); }); cat.events.on('http.response', async message => { if (message.status >= 500) { cat.log({'pt-BR': 'Falha no servidor observada.', en: 'Server failure observed.'}, 'warning'); } }); ``` Eventos disponíveis: `http.request`, `http.response` e `http.complete`. ## Hooks de alteração ```js cat.proxy.onRequest(message => { if (cat.http.parseUrl(message.url).hostname !== 'api.aurora.test') return; message.headers = message.headers.filter(h => h.name.toLowerCase() !== 'x-cat-lab'); message.headers.push({name: 'X-Cat-Lab', value: 'auditor'}); return message; }); cat.proxy.onResponse(message => { message.headers.push({name: 'X-Cat-Auditor', value: '1'}); return message; }); ``` Regras dos hooks, que exigem `traffic.modify`: - São síncronos e têm até 100 ms por execução. Retornar uma Promise gera `E_HOOK_ASYNC`. - Não enviam requests, não persistem dados e não atualizam a interface. - Retornar `undefined` mantém a mensagem; retornar a mensagem aplica a alteração. - Não altere identidade, origem ou flags de integridade. Headers não aceitam quebra de linha. - Headers de compressão não podem ser alterados, e só corpos com `mutable: true` aceitam edição. - A mensagem efetiva é validada antes do envio. Escopos e bloqueios do aplicativo continuam valendo. ## Envios HTTP ```js const resposta = await cat.http.send({ id: 'consulta-1', url: 'https://api.aurora.test/api/pedidos', method: 'GET', headers: [{name: 'Accept', value: 'application/json'}] }); cat.http.cancel('consulta-1'); ``` `cat.http.send` exige `http.send` e usa os `targets` do manifesto. Os destinos são verificados antes do envio e depois das alterações, redirects automáticos ficam desativados e o TLS é validado. Há duas chamadas simultâneas por extensão, prazo total de 120 segundos e respostas de até 8 MiB. Envios ao próprio proxy do CatSuite são recusados com `E_PROXY_LOOP`. ## APIs externas ```js const resposta = await cat.external.call({ url: 'https://advisories.aurora.test/advisories?code=CACHE-001', method: 'GET', credentialId: 'minha-chave' }); ``` `cat.external.call` exige `external.call` e usa `externalHosts`. A credencial é configurada na tela da extensão, protegida pelo Android Keystore e adicionada pelo host como `Bearer`. O código nunca recebe o valor secreto. ## Laboratório ```js const capturada = await cat.laboratory.capture({ url: 'https://api.aurora.test/api/perfil', method: 'GET', headers: [{name: 'Accept', value: 'application/json'}] }); ``` Com `settings.laboratory` igual a `true`, o host simula tráfego capturado de `api.aurora.test`, executa os hooks de captura e alteração e também simula `advisories.aurora.test`. O laboratório não realiza conexões externas. Sem o modo laboratório, a chamada falha com `E_LABORATORY`. ## Repetir ```js cat.tools.repeater.open({url: 'https://api.aurora.test/api/perfil', method: 'GET', headers: []}); ``` Abre a mensagem no Repetir. Exige `repeater` e só aceita destinos aprovados. ## Recursos do pacote ```js const fixtures = JSON.parse(await cat.resources.get('fixtures.json')); const bytes = await cat.resources.get('assinatura.bin', 'bytes'); ``` Lê arquivos do próprio pacote. Textos têm até 128 KiB e recursos binários até 32 KiB. Não há acesso aos arquivos do aparelho. ## Utilidades | Função | Descrição | |---|---| | `cat.http.parseUrl(url)` | retorna `{scheme, hostname, port, pathname, query}` e recusa credenciais na URL | | `cat.bytes.fromText(texto)` | converte texto UTF-8 em lista de bytes | | `cat.bytes.toText(bytes)` | converte lista de bytes em texto UTF-8 | | `cat.i18n.locale` | `pt-BR` ou `en` | | `cat.i18n.text(valor)` | escolhe o texto do idioma atual em um objeto bilíngue | | `cat.log(mensagem, nivel)` | registra `info`, `warning` ou `error`, com texto simples ou bilíngue | ## Erros Falhas usam códigos `E_*` estáveis com descrição traduzida, como `E_PERMISSION`, `E_HOST`, `E_TIMEOUT` e `E_BODY`. Consulte a [lista completa de códigos](https://netcattest.com/catsuite/docs/referencia/erros). ```js try { await cat.http.send({url: 'https://fora-do-escopo.test/'}); } catch (erro) { cat.log(String(erro.code || erro.message), 'error'); } ``` --- # Interface, dados e achados > Comandos, menus de mensagem, abas nativas e componentes; armazenamento, configurações, credenciais e achados com evidência. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/extensoes/interface-e-dados - Seção: Extensões - Atualizado: 2026-10-05 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/extensions/ui-and-data ## Comandos ```js cat.commands.register('lab.analisar', {'pt-BR': 'Analisar', en: 'Analyze'}, async args => { await cat.storage.set('ultimaAnalise', args); return {ok: true}; }); const execucao = await cat.commands.execute('lab.analisar', {origem: 'aba'}); ``` IDs seguem `[a-z][a-z0-9_.-]{1,79}` e não se repetem. `cat.commands.execute` inicia outro comando da mesma extensão e devolve o identificador da execução. Exige `commands`. ## Menus de mensagem ```js cat.ui.menu.register({ id: 'lab.menu', title: {'pt-BR': 'Analisar com o laboratório', en: 'Analyze with the lab'}, command: 'lab.analisar', contexts: ['request', 'response'] }); ``` Ações de menu recebem a request e a response brutas, a `url` e o `source`. Exige `ui.menu`, `commands` e, para conteúdo HTTP, `traffic.read`. ## Abas nativas ```js cat.ui.tab.register({ id: 'lab.painel', title: {'pt-BR': 'Laboratório', en: 'Laboratory'}, components: [ {type: 'text', text: {'pt-BR': 'Pronto para analisar.', en: 'Ready to analyze.'}}, {type: 'field', id: 'nota', label: {'pt-BR': 'Nota', en: 'Note'}}, {type: 'button', label: {'pt-BR': 'Salvar nota', en: 'Save note'}, command: 'lab.salvar'} ] }); cat.commands.register('lab.salvar', {'pt-BR': 'Salvar nota', en: 'Save note'}, async args => { await cat.storage.set('nota', args.nota || ''); cat.ui.update('lab.painel', [{type: 'text', text: {'pt-BR': 'Nota salva.', en: 'Note saved.'}}]); }); ``` Os valores dos campos são enviados como argumentos do comando do botão. Exige `ui.tab`. ## Componentes Os componentes são renderizados de forma nativa, sem HTML ou JavaScript visual. | Tipo | Campos | Desde | |---|---|---| | `text` | `text` | v1 | | `button` | `label`, `command`, `args` | v1 | | `field` e `filter` | `id`, `label`, `value` | v1 | | `list` | `items` | v1 | | `table` | `columns`, `rows` | v1 | | `http` | `message` | v1 | | `progress` | `value` | v1 | | `json` | `label`, `value` | SDK 1.2 | | `diff` | `label`, `before`, `after` | SDK 1.2 | | `timeline` | `label`, `items` com `title`, `detail` e `time` | SDK 1.2 | | `chart` | `label`, `values` com `label` e `value` | SDK 1.2 | | `graph` | `label`, `nodes` e `edges` com `from` e `to` | SDK 1.2 | Textos humanos precisam de `pt-BR` e `en`. Campos técnicos e identificadores permanecem como estão. ## Armazenamento ```js await cat.storage.set('contador', 1); const contador = await cat.storage.get('contador'); await cat.storage.delete('contador'); ``` Os dados JSON ficam separados por extensão, com quota de 10 MiB e até 128 KiB por valor. O aplicativo usa um banco versionado com transações, e os dados sobrevivem às atualizações. Exige `storage`. ## Configurações ```js const laboratorio = cat.settings.get('laboratory'); ``` `cat.settings.get` lê os valores de `settings`, validados pelo `settingsSchema` do [manifesto](https://netcattest.com/catsuite/docs/extensoes/manifesto). ## Credenciais Cadastre credenciais na tela da extensão e informe apenas o identificador no código ou no formulário. Elas ficam protegidas pelo Android Keystore, são adicionadas pelo host como `Bearer` e nunca entram nas exportações. ## Achados ```js cat.events.on('http.response', async message => { const cache = message.headers.find(h => h.name.toLowerCase() === 'cache-control'); if (!cache || !cache.value.includes('public')) return; await cat.findings.add({ fingerprint: 'cache-publico:' + cat.http.parseUrl(message.url).pathname, title: {'pt-BR': 'Resposta com cache público', en: 'Response with public cache'}, description: {'pt-BR': 'A resposta declara Cache-Control público.', en: 'The response declares public Cache-Control.'}, severity: 'low', confidence: 'observed', url: message.url, evidence: {request: message.request, response: message} }); }); ``` | Campo | Valores | |---|---| | `severity` | `info`, `low`, `medium`, `high`, `critical` | | `confidence` | `observed`, `confirmed`, `hypothesis` | | `status` | `open`, `resolved`, `false_positive` | O `fingerprint` consolida achados repetidos e preserva o estado escolhido pelo usuário. Exige `findings` e, neste exemplo, `traffic.read`. ## Exportar com .catdata Um `.catdata` contém dados e achados selecionados. Evidências são opcionais; headers sensíveis, corpos e parâmetros de URL são ocultados na exportação, e credenciais nunca são exportadas. A importação valida o formato e exige que a extensão correspondente já esteja instalada. --- # IDE web de extensões > Como usar a IDE do CatSuite no navegador para criar extensões do zero ou a partir de exemplos, validar, simular, inspecionar e exportar pacotes .catplug. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/extensoes/ide - Seção: Extensões - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/extensions/ide A [IDE de extensões](https://netcattest.com/catsuite/ide) é um ambiente completo para escrever, testar e empacotar extensões `.catplug` direto no navegador. Tudo acontece no seu dispositivo: o código não é enviado para servidores, o simulador não faz conexões de rede e o projeto fica salvo apenas neste navegador. ## Começar um projeto Ao abrir a IDE, nada é carregado automaticamente. A tela inicial pergunta como você quer começar: | Opção | O que acontece | |---|---| | **Continuar de onde parei** | Reabre o projeto salvo neste navegador, com nome, ID, versão, quantidade de arquivos e horário do último salvamento. Só aparece quando existe um projeto salvo. | | **Criar do zero** | Gera um projeto em branco com `manifest.json` e um `main.js` vazio. Você informa o nome, o nome no outro idioma, o ID e o autor. | | **Começar de um exemplo** | Abre um dos modelos prontos, todos testados no simulador com dados fictícios. | | **Importar .catplug** | Abre um pacote exportado pelo aplicativo ou pela própria IDE. | O botão **Novo** da barra da IDE volta para essa tela a qualquer momento, com a opção de retornar ao projeto aberto. > [!AVISO] > A IDE guarda um projeto por navegador. Criar, abrir um exemplo ou importar substitui o projeto salvo, e por isso a IDE sempre pede confirmação antes. Exporte o `.catplug` para manter uma cópia. ### Criar do zero O ID é gerado a partir do nome: acentos são removidos, espaços viram hífens e o prefixo `lab.` é adicionado. Você pode editar o ID livremente, desde que siga o padrão do manifesto: de 3 a 64 caracteres, começando por letra, usando apenas minúsculas, números, ponto e hífen. O manifesto inicial já passa na validação: ```json { "formatVersion": 1, "apiVersion": 1, "id": "lab.minha-extensao", "version": "1.0.0", "author": "Equipe de QA", "entry": "main.js", "name": { "pt-BR": "Minha extensão", "en": "My extension" }, "description": { "pt-BR": "Descreva aqui o que a extensão faz.", "en": "Describe what the extension does." }, "permissions": [], "targets": [], "externalHosts": [], "settings": {}, "hashes": {} } ``` ### Exemplos disponíveis | Exemplo | Demonstra | Permissões | |---|---|---| | Modelo básico | comando, aba nativa, campo e armazenamento | `commands`, `ui.tab`, `storage` | | Marcador de requests | hooks `onRequest` e `onResponse` no laboratório | `traffic.read`, `traffic.modify`, `ui.tab`, `storage`, `commands` | | Auditor de cache | envios, API externa simulada, menu e achado com evidência | `traffic.read`, `http.send`, `external.call`, `findings`, `storage`, `ui.menu`, `ui.tab`, `commands` | | Etapa de fluxo | etapa com checkpoint e parser JSON | `pipeline.step`, `parsers`, `traffic.read` | | Painel de componentes | todos os componentes nativos de interface | `ui.tab`, `commands`, `storage` | ## Áreas da IDE | Área | Função | |---|---| | Arquivos | lista do pacote, criação, renomeação e exclusão de arquivos | | Permissões | caixas de seleção que atualizam `permissions` no `manifest.json` | | Referência do SDK | APIs do `cat` com filtro e trechos prontos para inserir no código | | Modelos | troca o projeto atual por um exemplo | | Editor | realce de sintaxe, números de linha e marcação de problemas | | Problemas | erros, avisos e dicas da validação, com atalho para a linha | | Console | registros de `cat.log`, envios simulados e falhas de execução | | Laboratório | captura de requests fictícias para testar hooks de proxy | | Prévia | abas registradas pela extensão, renderizadas como no aplicativo | | Inspetor | hooks, comandos, menus, etapas, parsers e dados salvos | | Achados | achados registrados, com severidade, confiança, estado e evidência | Em telas pequenas, as áreas ficam organizadas em quatro guias: **Arquivos**, **Código**, **Prévia** e **Console**. ## Editor e atalhos | Atalho | Ação | |---|---| | `Tab` e `Shift` + `Tab` | indentar e remover indentação | | `Enter` | nova linha mantendo a indentação | | `Ctrl` + `S` | salvar no navegador | | `Ctrl` + `Enter` | validar e executar no simulador | | `Esc` e depois `Tab` | sair do editor pelo teclado | No macOS, use `Cmd` no lugar de `Ctrl`. O projeto também é salvo automaticamente alguns instantes depois de cada alteração. ## Validação A validação roda a cada alteração e usa as mesmas regras de importação do aplicativo: - campos obrigatórios do manifesto, textos em `pt-BR` e `en`, versão e ID; - destinos de `targets` e `externalHosts`, incluindo curingas, portas e endereços privados; - permissões declaradas comparadas com as APIs usadas no código; - etapas e parsers com entradas `http` exigem `traffic.read`; - APIs que não existem no QuickJS, como `fetch`, `require` e `document`; - `import` e `export`, que não são suportados porque o código roda como script; - erros de sintaxe do arquivo de entrada, verificados sem executar o código. Erros bloqueiam a execução e a exportação. Avisos e dicas não bloqueiam. ## Simulador **Executar** carrega o arquivo de entrada em um Web Worker isolado que reproduz a API v1 do SDK. O simulador usa o idioma escolhido no seletor de idioma do site: em português, `cat.i18n.text` e os textos bilíngues aparecem em `pt-BR`; em inglês, em `en`. O simulador aplica as mesmas regras do aplicativo: - cada API exige a permissão correspondente e responde `E_PERMISSION` quando ela falta; - envios e APIs externas respeitam `targets` e `externalHosts`; - hooks de alteração precisam ser síncronos e são encerrados se travarem; - armazenamento limitado a 128 KiB por valor e 10 MiB por extensão; - achados são consolidados pelo `fingerprint`. Conectores do [CatBridge](https://netcattest.com/catsuite/docs/catbridge) não estão disponíveis no navegador e respondem `E_CONNECTOR`. ### Dados fictícios com fixtures.json Envios, APIs externas e o laboratório usam as rotas do arquivo `fixtures.json`. Rotas que não existem respondem com um 404 simulado. ```json { "scenario": "fictional", "routes": [ { "url": "https://api.aurora.test/api/perfil", "status": 200, "cacheControl": "public, max-age=600", "body": { "id": "cliente-ficticio-001", "scenario": "fictional" } }, { "url": "https://api.aurora.test/timeout", "error": "E_TIMEOUT" } ] } ``` Para usar `cat.laboratory.capture`, ative `settings.laboratory` no manifesto. ## Exportar o pacote **Exportar .catplug** valida o projeto e gera o pacote: 1. remove a assinatura anterior, porque o conteúdo foi editado; 2. recalcula o SHA-256 de cada arquivo em `hashes`; 3. no formato 2, cria um novo `revisionId` e registra `parentHash` quando o projeto veio de uma importação; 4. compacta tudo em um arquivo `id-versão.catplug`. Depois, importe o arquivo no aplicativo em **Configurações → Extensões**. O aplicativo assina o pacote novamente e mostra as permissões antes de ativar a extensão. ## Segurança da IDE - A página bloqueia qualquer conexão de rede pela política de segurança de conteúdo. - O código da extensão roda isolado, sem acesso à página, aos cookies ou ao armazenamento do navegador. - `fetch`, `XMLHttpRequest`, `WebSocket`, `importScripts`, `WebAssembly` e o canal de mensagens do worker ficam bloqueados para o código da extensão. - Pacotes importados passam pelos limites do formato: até 10 MiB compactados, 40 MiB expandidos, 4 MiB por arquivo e 500 arquivos, sem caminhos absolutos, `..`, links simbólicos ou entradas criptografadas. - Hashes divergentes geram aviso no console e são recalculados na exportação. - Pacotes protegidos por senha (`CATSEAL2`) não abrem na IDE web: abra-os no aplicativo ou inspecione-os no [CatSuite Studio](https://netcattest.com/catsuite/docs/extensoes/vscode). > [!DICA] > Comece pelo modelo básico, rode no simulador e só então adicione permissões. A validação aponta cada permissão declarada que o código não usa. ## Prefere o VS Code? A mesma experiência existe como extensão instalável: o **CatSuite Studio** traz sugestões do SDK, validação, prévia local com fixtures e geração de pacotes `.catplug` assinados dentro do Visual Studio Code. Projetos criados na IDE web podem continuar no editor. - [Instalar o CatSuite Studio pelo Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) - [Código-fonte na pasta catsuite-vscode do GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) - [Guia completo do CatSuite Studio](https://netcattest.com/catsuite/docs/extensoes/vscode) ## Próximos passos - [CatSuite Studio para VS Code](https://netcattest.com/catsuite/docs/extensoes/vscode) - [Manifesto e pacote .catplug](https://netcattest.com/catsuite/docs/extensoes/manifesto) - [Referência da API JavaScript](https://netcattest.com/catsuite/docs/extensoes/api) - [Interface, dados e achados](https://netcattest.com/catsuite/docs/extensoes/interface-e-dados) --- # CatSuite Studio para VS Code > CatSuite Studio para VS Code: como instalar e usar a extensão para criar, validar, testar e assinar plugins .catplug com sugestões do SDK do CatSuite. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/extensoes/vscode - Seção: Extensões - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/extensions/vscode O **CatSuite Studio** é a extensão oficial do CatSuite para o **Visual Studio Code**. Com ela você escreve plugins JavaScript, comandos e fluxos para o aplicativo CatSuite sem sair do editor: sugestões do **SDK** ao digitar `cat.`, modelos prontos, **validação** do projeto, **prévia local** com fixtures e geração de pacotes **`.catplug` assinados**. Esta página explica como instalar, configurar e usar cada recurso da extensão. | Recurso | Endereço | |---|---| | Instalar a extensão | [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) | | Código-fonte | [Pasta catsuite-vscode no GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) | | Licença | MIT | | Requisito | Visual Studio Code 1.100.0 ou superior | ## O que é o CatSuite Studio e para que serve O CatSuite Studio é uma bancada de desenvolvimento para as [extensões do CatSuite](https://netcattest.com/catsuite/docs/extensoes). Ele reúne, no VS Code, o ciclo completo de um plugin: escrever o código com ajuda do SDK, conferir manifesto e permissões, observar o comportamento em uma prévia isolada e gerar o pacote assinado que você importa no aplicativo. É a alternativa instalável à [IDE web de extensões](https://netcattest.com/catsuite/docs/extensoes/ide). As duas falam o mesmo contrato da API v1 e produzem pacotes `.catplug`; a escolha depende de onde você prefere trabalhar. > [!NOTA] > O CatSuite Studio acompanha o SDK de extensões: o arquivo de tipos `catsuite.d.ts` vem dentro da extensão e alimenta as sugestões do editor. Não é preciso baixar o SDK separadamente. ## Instalação ### Pelo Marketplace 1. Abra a página do [CatSuite Studio no Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio). 2. Clique em **Install** e permita que o navegador abra o VS Code. 3. Confirme a instalação no editor. ### Pela visão Extensões do VS Code 1. Abra a visão **Extensões** na barra lateral do VS Code. 2. Busque por **CatSuite Studio**. 3. Confira se o publicador é a **NetCatTest** e clique em **Instalar**. ### Pela linha de comando ```bash code --install-extension NetCatTest.catsuite-studio ``` ### Requisitos - **Visual Studio Code 1.100.0 ou superior**. - Um **workspace confiável**: criar projetos, executar a prévia, assinar e exportar exigem que a pasta aberta esteja marcada como confiável no VS Code. - Um aplicativo CatSuite compatível com extensões para instalar e executar os pacotes exportados. > [!AVISO] > Instale o CatSuite Studio apenas pelo Marketplace oficial ou a partir do [código no GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode). Desconfie de arquivos `.vsix` distribuídos em outros sites. ## Primeiros passos 1. Abra uma pasta no Visual Studio Code. 2. Abra a paleta de comandos e execute **CatSuite: Criar extensão**. 3. Escolha um modelo e abra o script JavaScript de entrada. 4. Digite `cat.` para explorar o SDK e depois execute **CatSuite: Validar projeto**. 5. Execute **CatSuite: Testar com fixture local** para conferir a prévia. 6. Com o projeto pronto, execute **CatSuite: Gerar .catplug assinado** e importe o pacote em uma versão do CatSuite que suporte extensões. Para um script rápido, sem projeto, execute **CatSuite: Novo script CatPlug**, ou crie um arquivo `.catjs` ou um `.catplug` textual vazio e digite `catplug`. ## A interface do CatSuite Studio Depois da instalação, um ícone do **CatSuite** aparece na barra de atividades do VS Code. Ele abre duas visões: - **Projetos** — os projetos CatSuite do workspace aberto. - **Recursos do SDK** — os recursos do SDK disponíveis para inserir no código. O comando **CatSuite: Ateliê CatSuite** abre o painel principal da extensão, o ponto de partida para criar, validar, testar e empacotar. ## Escrever com o SDK - **Sugestões ao digitar `cat.`.** O editor lista as APIs do SDK com ajuda contextual, a partir dos tipos `catsuite.d.ts`. Por padrão as sugestões aparecem em qualquer linguagem; você pode limitá-las a projetos CatSuite nas configurações. - **Modelo `catplug`.** Digite `catplug` para inserir um modelo de script pronto. - **Inserir recurso do SDK.** O comando **CatSuite: Inserir recurso do SDK** adiciona trechos dos recursos do SDK no ponto do cursor. - **Arquivos textuais.** Os arquivos `.catplug` e `.catjs` textuais têm edição JavaScript, realce de sintaxe, trechos e diagnósticos. Pacotes compilados abrem em um inspetor separado. Consulte o contrato completo na [Referência da API JavaScript](https://netcattest.com/catsuite/docs/extensoes/api). ## Criar projetos e fluxos O comando **CatSuite: Criar extensão** abre um assistente com modelos para: - painéis e comandos; - análise de tráfego; - alteração de headers; - etapas de fluxo; - parsers. O comando **CatSuite: Criar fluxo de exemplo** gera um arquivo `.catflow` de exemplo para os [fluxos visuais](https://netcattest.com/catsuite/docs/fluxos). ## Validar o projeto O CatSuite Studio confere o projeto enquanto você trabalha: - **manifesto** — identidade, script de entrada, permissões, destinos e hashes (veja [Manifesto do pacote .catplug](https://netcattest.com/catsuite/docs/extensoes/manifesto)); - **permissões e uso do SDK** — se o código usa capacidades que o manifesto declara; - **hashes dos arquivos** — se os hashes do manifesto batem com os arquivos; - **conexões do fluxo** — se as etapas de um `.catflow` estão ligadas corretamente. Com a opção **validação contínua** ligada (padrão), os problemas aparecem no editor enquanto você digita. Para rodar a verificação completa, use **CatSuite: Validar projeto**. Depois de alterar arquivos, **CatSuite: Atualizar hashes do manifesto** recalcula os hashes. Os arquivos `manifest.json`, `catsuite.projeto.json`, `.catflow` e `.catdata` também recebem validação por esquema JSON, com sugestões de campos. ## Prévia local com fixtures O comando **CatSuite: Testar com fixture local** executa o script em uma prévia **QuickJS isolada**, com fixtures locais e APIs do host simuladas. Na prévia você inspeciona: - as abas registradas; - os achados gerados; - as alterações em requests; - os artefatos emitidos. > [!IMPORTANTE] > A prévia não envia requisições HTTP reais e não executa ferramentas externas. Valide o comportamento real separadamente, no seu ambiente CatSuite autorizado. ## Empacotar e assinar O comando **CatSuite: Gerar .catplug assinado** cria o pacote final do plugin com a sua **identidade de assinatura**. O script de origem passa pelo empacotamento do projeto antes de ir para o aplicativo, e o CatSuite instalado precisa suportar o formato do pacote e a versão do SDK pedida pelo plugin. A identidade de assinatura é gerenciada por três comandos: | Comando | O que faz | |---|---| | **CatSuite: Ver identidade de assinatura** | Mostra a identidade usada para assinar os seus pacotes. | | **CatSuite: Exportar backup protegido da identidade** | Gera um backup criptografado da identidade, para guardar ou levar a outra máquina. | | **CatSuite: Restaurar identidade de backup** | Restaura a identidade a partir de um backup protegido. | > [!DICA] > Guarde o backup da identidade em local seguro. Ele permite continuar assinando pacotes com o mesmo autor depois de trocar de computador. ## Inspecionar pacotes e reconhecer autores O comando **CatSuite: Inspecionar arquivo CatSuite** abre pacotes compilados e mostra a integridade do pacote e a impressão digital do autor. A inspeção distingue duas coisas: - **assinatura válida** — o pacote não foi alterado depois de assinado; - **autor reconhecido** — você já confirmou que aquela impressão digital pertence a um autor confiável. Use **CatSuite: Reconhecer autor deste pacote** depois de conferir a impressão digital com o autor por um canal confiável, e **CatSuite: Remover autor reconhecido** para desfazer. O inspetor também abre pacotes protegidos por senha. Para editar um plugin existente sem mexer no original, use **CatSuite: Criar cópia editável do pacote**: a extensão transforma o pacote em uma cópia de projeto e preserva o pacote original e as informações de origem. > [!AVISO] > Uma assinatura válida não significa que o autor é confiável. Confira a impressão digital antes de reconhecer um autor desconhecido. ## Arquivos que o CatSuite Studio entende | Arquivo | Para que serve | |---|---| | `.catjs` ou `.catplug` textual | Código JavaScript para desenvolvimento | | `manifest.json` | Identidade do plugin, script de entrada, permissões, destinos e hashes | | `catsuite.projeto.json` | Configuração do projeto no CatSuite Studio | | `.catplug` compilado | Pacote do plugin para inspeção e importação no aplicativo | | `.catflow` | Definição de fluxo, com validação e inspeção | | `.catdata` | Dados exportados do CatSuite, para inspeção | ## Todos os comandos Abra a paleta de comandos (`Ctrl+Shift+P` no Windows e no Linux, `Cmd+Shift+P` no macOS) e digite **CatSuite** para ver a lista. | Comando | O que faz | |---|---| | **Ateliê CatSuite** | Abre o painel principal da extensão. | | **Criar extensão** | Assistente de novo projeto a partir de um modelo. | | **Novo script CatPlug** | Cria um script avulso, sem projeto. | | **Abrir script no editor** | Abre o script de entrada do projeto. | | **Validar projeto** | Confere manifesto, permissões, uso do SDK, hashes e fluxos. | | **Atualizar hashes do manifesto** | Recalcula os hashes dos arquivos no manifesto. | | **Inserir recurso do SDK** | Insere um trecho de recurso do SDK no cursor. | | **Criar fluxo de exemplo** | Gera um `.catflow` de exemplo. | | **Testar com fixture local** | Executa a prévia isolada com fixtures. | | **Gerar .catplug assinado** | Empacota e assina o plugin. | | **Inspecionar arquivo CatSuite** | Abre um pacote ou arquivo CatSuite no inspetor. | | **Criar cópia editável do pacote** | Converte um pacote em projeto editável, preservando o original. | | **Ver identidade de assinatura** | Mostra a identidade de assinatura. | | **Exportar backup protegido da identidade** | Exporta a identidade criptografada. | | **Restaurar identidade de backup** | Restaura a identidade de um backup. | | **Reconhecer autor deste pacote** | Marca a impressão digital do autor como reconhecida. | | **Remover autor reconhecido** | Remove um autor da lista de reconhecidos. | | **Aplicar estilo CatSuite** | Aplica o visual CatSuite ao editor. | | **Restaurar estilo anterior** | Volta ao tema que você usava antes. | | **Aplicar ícones CatSuite** | Ativa os ícones de arquivo do CatSuite. | | **Escolher idioma** | Troca o idioma dos painéis da extensão. | | **Abrir opções do CatSuite Studio** | Abre as configurações da extensão. | | **Atualizar** | Recarrega as visões da extensão. | ## Configurações Abra **CatSuite: Abrir opções do CatSuite Studio** ou procure por `catsuite` nas configurações do VS Code. | Opção | Valores | Padrão | O que faz | |---|---|---|---| | `catsuite.idioma` | `sistema`, `pt-BR`, `en` | `sistema` | Idioma dos painéis, prompts e ajuda. Os comandos do VS Code seguem o idioma do editor. | | `catsuite.validacaoContinua` | `true`, `false` | `true` | Valida manifesto, JavaScript e fluxo enquanto você edita. | | `catsuite.estiloPainel` | `catsuite`, `editor` | `catsuite` | Estilo dos painéis do CatSuite Studio. Não muda o tema global. | | `catsuite.autor` | texto | vazio | Autor sugerido para novos plugins. | | `catsuite.sugestoesGlobais` | `true`, `false` | `true` | Mostra as sugestões de `cat.` e os modelos `catplug` em qualquer arquivo, inclusive fora de projetos. | ```json { "catsuite.idioma": "pt-BR", "catsuite.validacaoContinua": true, "catsuite.estiloPainel": "catsuite", "catsuite.autor": "Equipe do Laboratório", "catsuite.sugestoesGlobais": false } ``` ## Temas, ícones e idioma O CatSuite Studio traz dois temas de cores e um tema de ícones: - **CatSuite Cyber** — o visual preto e amarelo do aplicativo; - **CatSuite Conforto** — uma alternativa de cores para quem prefere menos contraste; - **ícones CatSuite** — ícones dedicados para os arquivos do ecossistema. Use **CatSuite: Aplicar estilo CatSuite** e **CatSuite: Aplicar ícones CatSuite** para ativá-los, e **CatSuite: Restaurar estilo anterior** para voltar ao seu tema. Os painéis funcionam em **português do Brasil** e **inglês**: escolha em **CatSuite: Escolher idioma** ou deixe seguir o idioma do editor. ## CatSuite Studio ou IDE web? | Situação | Melhor opção | |---|---| | Testar uma ideia rápida, sem instalar nada | [IDE web](https://netcattest.com/catsuite/docs/extensoes/ide) | | Trabalhar em um computador sem permissão para instalar extensões | [IDE web](https://netcattest.com/catsuite/docs/extensoes/ide) | | Projetos maiores, versionados com Git | CatSuite Studio | | Gerar pacotes assinados com a sua identidade de autor | CatSuite Studio | | Inspecionar pacotes recebidos e reconhecer autores | CatSuite Studio | ## Problemas comuns **As sugestões de `cat.` não aparecem.** Confira se a opção `catsuite.sugestoesGlobais` está ligada ou se o arquivo está dentro de um projeto CatSuite. **Não consigo criar o projeto, testar ou assinar.** Essas ações exigem um workspace confiável. Marque a pasta como confiável no VS Code e tente de novo. **O aplicativo recusou o pacote.** Verifique se a sua versão do CatSuite suporta extensões e a versão do SDK pedida pelo plugin, rode **CatSuite: Validar projeto** e gere o pacote de novo. **A validação acusa hashes diferentes.** Execute **CatSuite: Atualizar hashes do manifesto** depois de alterar os arquivos do projeto. **Troquei de computador e perdi a identidade.** Restaure com **CatSuite: Restaurar identidade de backup**, usando o backup protegido exportado antes. ## Continue - [IDE web de extensões](https://netcattest.com/catsuite/docs/extensoes/ide) - [Referência da API JavaScript](https://netcattest.com/catsuite/docs/extensoes/api) - [Manifesto do pacote .catplug](https://netcattest.com/catsuite/docs/extensoes/manifesto) - [Downloads e SDK](https://netcattest.com/catsuite/docs/downloads) --- # Fluxos visuais com .catflow > Monte análises em grafo com etapas, parsers, condições e reuniões; aprovações por revisão, artefatos rastreáveis, checkpoints e limites. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/fluxos - Seção: Fluxos visuais - Atualizado: 2026-10-05 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/workflows Fluxos visuais transformam rotinas de análise em grafos reproduzíveis. Cada bloco recebe artefatos tipados, produz novos artefatos e registra duração, entradas, saídas, hashes e versões. ## Começar 1. Abra **Configurações → Extensões → Fluxos**. 2. Instale os modelos do laboratório e abra um fluxo. 3. Revise a aprovação e execute a fixture. 4. Toque na saída de uma etapa e depois na entrada da seguinte; apenas tipos compatíveis são aceitos. A condição oferece rotas `true` e `false`, e a reunião espera as entradas selecionadas. Arraste, amplie, organize ou duplique blocos. O painel de propriedades fica na lateral em telas maiores e embaixo no celular. ## Tipos de bloco | Bloco | Função | |---|---| | `capture` | entrada de tráfego capturado | | `filter` | seleciona artefatos | | `condition` | divide o fluxo em `true` e `false` | | `join` | reúne ramos | | `parser` | interpreta conteúdo por tipo MIME | | `request` | envia requests aprovadas | | `crawler` | percorre páginas com GET e HEAD | | `storage` | persiste resultados | | `report` | consolida relatório | | `connector` | executa uma capacidade do [CatBridge](https://netcattest.com/catsuite/docs/catbridge) | | `extension` | executa uma etapa registrada por extensão | ## Artefatos | Tipo | Conteúdo típico | |---|---| | `http` | mensagem HTTP completa | | `endpoint` | URL observada, com origem | | `jwt` | claims decodificadas, sem verificação de assinatura | | `secret` | candidato a segredo, mascarado | | `analysis` | análise estruturada | | `finding` | achado com severidade e confiança | | `record` | registro genérico | | `javascript` | fonte JavaScript estática | | `openapi` | especificação OpenAPI | O host gera identidade, SHA-256, origem, versões, fontes e proteção de cada artefato. Copiar uma entrada cria uma nova evidência ligada à anterior, e metadados fornecidos pelo script não substituem os do host. ## Registrar etapas e parsers ```js cat.pipeline.registerStep({ id: 'lab.inspecionar', title: {'pt-BR': 'Inspecionar', en: 'Inspect'}, inputs: ['http'], outputs: ['http', 'analysis'] }, async ctx => { for (const entrada of ctx.inputs) { if (ctx.signal.aborted) return; ctx.emit('http', entrada.data); ctx.emit('analysis', {url: entrada.data.url, confidence: 'observed'}); } ctx.progress(1); }); cat.parsers.register({ id: 'lab.json', title: {'pt-BR': 'Ler JSON', en: 'Parse JSON'}, inputs: ['http'], outputs: ['record'], mimeTypes: ['application/json'] }, ctx => { for (const entrada of ctx.inputs) { if (!entrada.data.body.complete) throw new Error('E_BODY'); ctx.emit('record', JSON.parse(cat.bytes.toText(entrada.data.body.bytes))); } }); ``` Declare `pipeline.step` ou `parsers` no manifesto e, para receber HTTP, também `traffic.read`. Apenas tipos declarados podem ser emitidos. ## Contexto da etapa | Campo | Descrição | |---|---| | `ctx.inputs` | artefatos de entrada | | `ctx.config` | configuração própria da etapa | | `ctx.runId`, `ctx.nodeId` | identidade da execução e do bloco | | `ctx.revisionId` | revisão aprovada em execução | | `ctx.protection` | `PUBLIC`, `PROTECTED` ou `SECRET` | | `ctx.restored` | estado do último checkpoint | | `ctx.checkpoint(estado)` | grava até 32 KiB de JSON | | `ctx.emit(tipo, dados)` | emite um artefato | | `ctx.progress(valor)` | progresso de 0 a 1 | | `ctx.signal.aborted` | indica cancelamento | ## Checkpoints e retomada ```js cat.pipeline.registerStep({ id: 'lab.retomar', title: {'pt-BR': 'Retomar', en: 'Resume'}, inputs: ['record'], outputs: ['record'] }, async ctx => { let feitos = ctx.restored?.feitos || 0; for (; feitos < ctx.inputs.length; feitos++) { if (ctx.signal.aborted) return; ctx.emit('record', ctx.inputs[feitos].data); await ctx.checkpoint({feitos: feitos + 1}); } }); ``` Resultados, operações e checkpoints são gravados de forma incremental. A retomada reutiliza etapas concluídas. Uma operação de resultado desconhecido nunca é reenviada automaticamente; repeti-la exige autorização explícita depois de revisar possíveis efeitos duplicados. Checkpoints não tornam transações externas idempotentes por si só. ## Aprovação e revisões O Flow ID é permanente. A revisão é o SHA-256 da definição executável, das dependências e da política efetiva; nome e posição visual não entram nesse hash. Salvar ou exportar sem mudanças executáveis preserva a ativação. Alterar código, configurações, escopo, métodos, proteção, capacidades ou limites exige nova aprovação, e revisões anteriores ficam arquivadas. Envios precisam de `network=true`, execução com envios, destino permitido e capacidade própria. O tráfego gerado tem `source=workflow`, `flowOrigin` e `pluginOrigin`, e não reinicia o fluxo. ## Falhas e histórico - Uma falha bloqueia seus dependentes; ramificações independentes podem terminar. - Um ramo não escolhido fica ignorado. - O histórico mostra duração, progresso, entradas, saídas, erros, hashes e versões. - A comparação identifica resultados adicionados ou removidos e mudanças de versões. - Reproduzir cria uma execução nova, inicialmente sem rede. ## Limites | Recurso | Padrão | Teto | |---|---|---| | Fluxos simultâneos | 2 | 4 | | Blocos por fluxo | 32 | 128 | | Conexões | 64 | 256 | | Fila | 128 | 512 | | Artefatos por execução | 1.000 | 5.000 | Análises usam dois ambientes de 32 MiB, separados dos quatro ambientes do proxy. Uma execução tem até 15 minutos e tarefas de conector até 10 minutos. Saturação é registrada e não suspende o encaminhamento do proxy. ## Modelos incluídos | Modelo | Etapas | |---|---| | Auditoria de identidade | Captura → JWT → Segredos → Autorização → Relatório | | Mapa de API | Crawler → JavaScript → Endpoints → OpenAPI → Relatório | | Ramificações | Condição sobre Authorization, ramos de JWT e segredos, reunião e relatório | | Auditoria de API | Captura → httpx → Katana → reunião → comparação OpenAPI → Schemathesis → relatório | > [!NOTA] > Os modelos começam no modo laboratório, sem envios. Identificadores numéricos encontrados pela auditoria de identidade são hipóteses de IDOR/BOLA e não demonstram acesso indevido. --- # Segurança, cofre e proteção de dados > Isolamento das extensões, níveis PUBLIC, PROTECTED e SECRET, cofre biométrico, assinaturas Ed25519, envelope CATSEAL2, backups e recuperação. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/seguranca - Seção: Segurança - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/security ## Isolamento Extensões rodam no QuickJS dentro de um serviço Android separado, com processo e UID próprios. Cada extensão tem ambiente, memória e tempo limitados, além de dados SQLite exclusivos. Análises de fluxos usam outro serviço isolado. Falhas do motor suspendem extensões e preservam as decisões atuais do proxy. ## Níveis de proteção Na distribuição 1.5.0+102, os fluxos executam com o aplicativo em primeiro plano. Ao sair, a execução pausa; a retomada é explícita e não repete automaticamente operações com resultado desconhecido. | Nível | Ao sair do primeiro plano | |---|---| | `PUBLIC` | pausa e preserva o progresso confirmado para retomada explícita | | `PROTECTED` | pausa, salva o progresso criptografado e libera os ambientes de análise | | `SECRET` | também descarrega os ambientes e elimina chaves e buffers controlados | PROTECTED e SECRET exigem biometria e retomada explícita. A proteção é herdada pelos resultados derivados e não pode ser reduzida por uma extensão. Referências a credenciais e cabeçalhos operacionais de autenticação exigem SECRET, e conteúdo privado sai da interface ao bloquear. ## Cofre biométrico O cofre exige biometria forte compatível, Android Keystore e `CryptoObject`. A chave mestra autenticada envolve uma chave aleatória por extensão ou fluxo. Código, configuração, SQLite, registros, achados e resultados derivados ficam criptografados. Ativar a proteção migra os dados existentes com transação e diário de recuperação. ## Integridade e assinaturas - `hashes` cobre todos os recursos do pacote com SHA-256. - A assinatura Ed25519 cobre JSON canônico: chaves ordenadas, arrays preservados e números decimais normalizados; a própria assinatura fica fora da entrada assinada. - O manifesto guarda `signature.algorithm`, `publicKey` e `value` em Base64. - Assinatura válida comprova integridade e a identidade da chave, não confiança no autor. Reconhecer o autor é uma decisão separada. - Assinatura inválida é recusada. Arquivos antigos sem assinatura ficam em revisão; aprová-los cria uma revisão assinada localmente que preserva a origem não verificada. ## Arquivos protegidos com senha Ao exportar com senha, o envelope `CATSEAL2` usa Argon2id com 64 MiB, três operações e uma lane, libsodium 1.0.22 e AES-256-GCM. | Parte | Detalhe | |---|---| | Cabeçalho | 48 bytes: magic, versão e parâmetros, salt de 16 bytes e nonce de 12 bytes | | Autenticação | cabeçalho autenticado como AAD e tag de 16 bytes | | Conteúdo | tudo criptografado, inclusive nomes e metadados | | Senha | pelo menos 12 caracteres, até 1.024 bytes UTF-8, nunca salva | Parâmetros diferentes são recusados antes da derivação. Arquivos portáteis de dados e backups suportam até 64 MiB. ## Backups e recuperação Crie um backup depois de autenticar. Ele inclui pacote, configuração, armazenamento, achados completos, registros, auditoria de tráfego e fluxos relacionados com seus históricos e artefatos. Credenciais cadastradas e certificados de pareamento ficam de fora. Restaurar é uma substituição confirmada e transacional: extensões e fluxos voltam desativados, com a classificação e a criptografia preservadas e chaves locais novas. Um backup com senha permite recuperar o conteúdo quando a chave biométrica anterior foi invalidada. Sem backup, a chave perdida não pode ser reconstruída. > [!AVISO] > Se um fluxo reúne várias extensões protegidas e a chave biométrica foi invalidada, recupere o backup de cada extensão antes do fluxo. ## Auditoria de tráfego **Registros → Alterações de tráfego** mostra a mensagem original, a saída da extensão e a mensagem após a edição manual. A auditoria guarda os últimos 50 registros por extensão, com previews de até 4 KiB e hashes. ## Uso responsável O CatSuite foi desenhado para ambientes próprios, estudos, CTFs e testes explicitamente autorizados. Nada é enviado sem uma ação sua, e cada capacidade nova passa pela sua aprovação. --- # CatBridge, o conector opcional > O que é o CatBridge, como baixar para Windows e Linux, como parear com o código numérico, a arquitetura isolada e o Protocol 2 com mensagens assinadas. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/catbridge - Seção: CatBridge - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/catbridge O **CatBridge** é um conector opcional e portátil, escrito em Go, que roda no **seu** computador ou servidor e executa ferramentas de linha de comando revisadas a pedido de um [fluxo visual](https://netcattest.com/catsuite/docs/fluxos) aprovado. O aplicativo funciona sem ele; não há conta, loja nem servidor administrado pelo CatSuite. > [!IMPORTANTE] > A extensão nunca escolhe binários, argumentos, caminhos ou imagens. Ela pede uma **capacidade tipada** (por exemplo `http.probe`) e recebe resultados normalizados. O supervisor do CatBridge monta o comando, valida o escopo e devolve apenas JSON verificado. ## Quando usar - Você quer reforçar um fluxo com ferramentas consagradas sem sair do CatSuite. - O alvo é seu ou você tem autorização explícita, e os destinos cabem num escopo fechado. - Você consegue rodar um processo no computador e deixá-lo acessível ao celular na mesma rede. Se precisa apenas observar e alterar tráfego, criar abas, salvar dados ou registrar achados, nada disso exige o CatBridge: use a [API do SDK](https://netcattest.com/catsuite/docs/extensoes/api) diretamente. ## Como obter O CatBridge é distribuído pronto para uso no repositório oficial do CatSuite, sem exigir Go: | Sistema | Download | |---|---| | Windows 64 bits | [catbridge-windows-amd64.zip](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-windows-amd64.zip) | | Linux 64 bits | [catbridge-linux-amd64.tar.gz](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-linux-amd64.tar.gz) | | Somas de verificação | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/SHA256SUMS.txt) | | Código-fonte | [Pasta catbridge no GitHub](https://github.com/netcattest/catsuite/tree/main/catbridge) | O passo a passo para baixar, iniciar e parear está em [Instalar e parear o CatBridge](https://netcattest.com/catsuite/docs/catbridge/instalar). ## Pareamento por código numérico O pareamento não usa QR Code. Ao iniciar, o CatBridge mostra no terminal o endereço e um **código de 24 números em seis grupos**. No CatSuite, abra **Extensões → Conexões → Parear CatBridge**, informe o endereço e cole ou digite o código. - O código vale **dois minutos** e autoriza **um único aparelho**. - O aplicativo verifica a identidade do Bridge **antes** de enviar o código, pelo canal HTTPS autenticado. - O código não fica salvo, e um código errado não instala a conexão. - Cada aparelho recebe um certificado próprio, e o TLS do conector é fixado pela impressão digital. ## Arquitetura em camadas | Camada | Papel | |---|---| | Extensão (QuickJS) | Pede uma capacidade tipada dentro de uma etapa de fluxo aprovada. Não recebe socket, shell nem rede. | | Aplicativo CatSuite | Aprova a revisão, assina a autorização, interseca escopos e valida cada resposta antes de qualquer efeito. | | Supervisor do CatBridge | Monta o comando tipado, reserva orçamento e controla os executores. Único componente com acesso ao Docker. | | Intermediário confiável | Único acesso de rede das ferramentas: valida método, caminho, escopo, DNS, redirecionamentos, taxa e TLS. | | Executor (container) | Roda a ferramenta sem privilégios, com filesystem somente leitura, rede desativada e IPC restrito. | Redirecionamentos e descobertas **não** ampliam o escopo. O certificado interno da tarefa nunca é apresentado como o certificado do alvo, e o intermediário valida separadamente o TLS do servidor original. ## Catálogo de capacidades O Bridge publica um catálogo assinado com as capacidades, os executores fixados por versão e hash e o estado de cada uma no seu computador: | Estado | Significado | |---|---| | `available` | Pronta para executar. | | `not-installed` | O executor ainda não foi preparado neste host. | | `incompatible` | O executor presente não corresponde ao contrato esperado. | | `not-authorized` | A capacidade não está autorizada para esta conexão. | | `unavailable` | Indisponível no momento. | | `planned` | Prevista, mas não disponível neste Bridge. | Somente `available` permite execução. O catálogo completo está em [Capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas). ## Protocol 2 Todas as mensagens, inclusive erros, usam o perfil restrito de **HTTP Message Signatures** ([RFC 9421](https://www.rfc-editor.org/rfc/rfc9421.html)) com ECDSA P-256 e SHA-256, mais `Content-Digest` ([RFC 9530](https://www.rfc-editor.org/rfc/rfc9530.html)). - A assinatura cobre método, destino, corpo, identidade, mensagem e o vínculo entre request e response. - Nonce aleatório e validade de até 60 segundos bloqueiam repetição; o diário do Bridge persiste entre reinícios. - A assinatura e o digest são verificados **antes** do JSON e de qualquer efeito. - O Protocol 1 é recusado. Conexões existentes do Protocol 2 continuam funcionando. - A autorização assinada vincula aparelho, tarefa, Flow ID, revisão, etapa, capacidade, destinos, dados e orçamento. Mudar qualquer item revoga a aprovação. A chave do aparelho fica no Android Keystore; a chave do servidor, na pasta de identidade do computador. O estado local do Bridge é criptografado com AES-256-GCM. ## Usar em uma etapa ```js cat.pipeline.registerStep({ id: 'lab.sondar', title: {'pt-BR': 'Sondar serviços', en: 'Probe services'}, inputs: ['endpoint'], outputs: ['analysis'] }, async ctx => { const catalogo = await cat.connectors.capabilities(ctx.config.connector); const capacidade = catalogo.catalog.find(item => item.id === 'http.probe'); if (!capacidade || capacidade.state !== 'available') throw new Error('E_CAPABILITY_UNAVAILABLE'); const resultado = await cat.connectors.run({ connector: ctx.config.connector, capability: 'http.probe', tool: 'httpx', id: 'sonda-1', targets: ctx.inputs.map(item => item.data.url).filter(Boolean), parameters: ctx.config.parameters }); ctx.emit('analysis', resultado); }); ``` Declare `connector.run` e `requiresSdk: "1.3.0"` ou superior no manifesto. A configuração do bloco precisa declarar o mesmo conector, capacidade, ferramenta e parâmetros da chamada. Para interromper uma tarefa, use `cat.connectors.cancel(id)` com o mesmo identificador passado em `run`. IDs idempotentes não repetem tarefas após uma reconexão. ## Continuidade - Tarefas privadas dependem de uma autorização renovada periodicamente; se ela deixa de ser renovada, a tarefa pausa. - Ao sair do aplicativo, o CatSuite pausa os fluxos e solicita a pausa das tarefas remotas. - Depois de um reinício do servidor, uma tarefa de resultado desconhecido fica interrompida e só é repetida com escolha explícita. ## Resultados Os resultados chegam em páginas assinadas de até 50 registros ou 512 KiB, com recibos verificáveis, versões e hashes do executável. Valores de credenciais e parâmetros reconhecidos como secretos são ocultados. > [!NOTA] > Um sinal de ferramenta é evidência para revisão, não prova de exploração. O CatBridge não concede acesso a comandos arbitrários e não atualiza ferramentas automaticamente. ## Próximo passo - [Instalar e parear o CatBridge](https://netcattest.com/catsuite/docs/catbridge/instalar) - [Capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas) - [Fluxos visuais](https://netcattest.com/catsuite/docs/fluxos) --- # Instalar e parear o CatBridge > Como baixar o CatBridge para Windows ou Linux, iniciar o serviço, parear o celular com o código numérico de 24 dígitos e revogar aparelhos com segurança. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/catbridge/instalar - Seção: CatBridge - Atualizado: 2026-10-06 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/catbridge/install O **CatBridge** é um programa portátil que roda no **seu** computador ou servidor e conecta o CatSuite às ferramentas de linha de comando que você autorizar. O aplicativo funciona sem ele; não há conta, loja nem servidor administrado pelo CatSuite. Você baixa o conector, escolhe o escopo e pareia cada celular com um **código numérico de 24 dígitos**, sem QR Code. Veja a visão geral em [CatBridge, o conector opcional](https://netcattest.com/catsuite/docs/catbridge). > [!IMPORTANTE] > Use o CatBridge apenas em alvos que você possui ou está autorizado a testar. O conector não altera o firewall, não instala ferramentas e não concede acesso a comandos arbitrários. ## Antes de começar - Uma versão do CatSuite com o **pareamento numérico** (CatSuite 1.3.7+100 ou posterior), com o módulo de extensões ativado. - Um computador alcançável pelo celular na **mesma rede** ou em uma rede privada configurada por você. - Para usar a distribuição pronta, **não é preciso Go**. O Go 1.26 ou superior só é necessário para compilar a partir do código. - Ferramentas externas são opcionais: o CatBridge **inicia sem nenhuma ferramenta**. Nesse estado, o pareamento e a consulta de capacidades funcionam, e os executores ausentes aparecem como indisponíveis. ## 1. Baixe o CatBridge O CatBridge é distribuído pronto para uso, como pacote portátil, no repositório oficial do CatSuite: | Sistema | Download | |---|---| | Windows 64 bits | [catbridge-windows-amd64.zip](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-windows-amd64.zip) | | Linux 64 bits | [catbridge-linux-amd64.tar.gz](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-linux-amd64.tar.gz) | | Somas de verificação | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/SHA256SUMS.txt) | | Código-fonte | [Pasta catbridge no GitHub](https://github.com/netcattest/catsuite/tree/main/catbridge) | O pacote inclui o executável, instruções nos dois idiomas, as licenças, o catálogo de contratos das capacidades, exemplos de templates e os scripts de preparação dos executores. ### Confira a integridade Antes de executar, compare o SHA-256 do arquivo baixado com o valor publicado em `SHA256SUMS.txt`. ```powershell Get-FileHash .\catbridge-windows-amd64.zip -Algorithm SHA256 ``` ```bash sha256sum -c --ignore-missing SHA256SUMS.txt ``` > [!AVISO] > Baixe somente do endereço oficial `github.com/netcattest/catsuite`. Se o hash não bater, apague o arquivo e baixe de novo: um executável alterado pode comprometer o seu computador e o seu laboratório. ### Extraia e abra a pasta No Windows, o pacote extrai a pasta `CatBridge` com o executável `catbridge.exe`. No Linux, a pasta `catbridge` com o executável `catbridge`. ```powershell Expand-Archive .\catbridge-windows-amd64.zip -DestinationPath . Set-Location .\CatBridge ``` ```bash tar -xzf catbridge-linux-amd64.tar.gz cd catbridge ``` ### Compilar a partir do código (opcional) Se preferir compilar, clone o repositório e gere o executável dentro da pasta `catbridge`. Requer Go 1.26 ou superior. ```powershell git clone https://github.com/netcattest/catsuite.git Set-Location .\catsuite\catbridge go build -buildvcs=false -trimpath -ldflags="-s -w" -o catbridge.exe . ``` ```bash git clone https://github.com/netcattest/catsuite.git cd catsuite/catbridge go build -buildvcs=false -trimpath -ldflags="-s -w" -o catbridge . ``` ## 2. Inicie o serviço Escolha o endereço local do computador que o celular consegue alcançar e inicie o serviço com o comando `serve`: ```powershell .\catbridge.exe serve -state .\private-state -listen 0.0.0.0:8743 -public https://192.168.1.20:8743 ``` ```bash ./catbridge serve -state ./private-state -listen 0.0.0.0:8743 -public https://192.168.1.20:8743 ``` Troque `192.168.1.20` pelo IP do seu computador. Na primeira execução, a pasta de identidade e os certificados são criados localmente. Um bloqueio do sistema impede dois servidores de usarem a mesma pasta ao mesmo tempo. Ao iniciar, o terminal mostra o endereço e o código de pareamento em seis grupos de quatro números: ```text Endereço: https://192.168.1.20:8743 Código de pareamento: 4821 0937 5512 6604 1879 3346 Abra Extensões > Conexões > Parear CatBridge. O código expira em dois minutos e funciona uma vez. ``` ### Opções da linha de comando | Opção | Padrão | O que faz | |---|---|---| | `-state` | pasta `CatBridge` padrão do usuário | Pasta de identidade. Use a **mesma pasta** em todos os comandos. | | `-listen` | `127.0.0.1:8743` | Endereço e porta locais em que o serviço escuta. Use `0.0.0.0:8743` ou o IP da rede local para aceitar o celular. | | `-public` | `https://127.0.0.1:8743` | Endereço que o **celular** usa para chegar ao Bridge. Fica gravado na identidade. | | `-scope` | vazio | Destinos permitidos, separados por vírgula. O escopo do aparelho e o do conector são **intersectados**. | | `-nuclei` | vazio | Caminho absoluto do executável do Nuclei. | | `-templates` | vazio | Manifesto dos templates revisados do Nuclei. | | `-tool-lock` | vazio | Manifesto assinado dos executores preparados. | | `-tool-key` | vazio | Impressão digital da chave que assinou o manifesto dos executores. | | `-docker-host` | vazio | Endpoint Docker definido pelo administrador. | | `-runtime-network` | `bridge` | Rede de saída do intermediário de rede dos executores. | | `-upstream-ca` | vazio | CA adicional confiável para o intermediário. | | `-device` | vazio | Identificador do aparelho, usado pelo comando `revoke`. | | `-lang` | `pt-BR` | Idioma das mensagens do terminal: `pt-BR` ou `en`. | > [!NOTA] > Com o padrão `-listen 127.0.0.1:8743`, o serviço só aceita conexões do próprio computador. Para parear um celular na rede, informe `0.0.0.0:8743` ou o IP local e libere a porta no seu firewall; o CatBridge não altera o firewall. ## 3. Pareie o celular 1. No CatSuite, ative o módulo de extensões em **Configurações → Extensões**. 2. Abra **Extensões → Conexões → Parear CatBridge**. 3. Informe o **endereço** exibido no terminal, por exemplo `https://192.168.1.20:8743`. 4. Cole ou digite o **código de 24 números**. Os espaços entre os grupos são aceitos. 5. Confirme. O aplicativo instala a conexão e emite o certificado do aparelho. Não é necessário QR Code, conta ou serviço de terceiros. ### Como o pareamento protege a conexão - O código é gerado de forma **criptograficamente aleatória**, vale por **dois minutos** e autoriza **um único aparelho**. - O aplicativo **verifica a identidade do Bridge antes** de enviar o código, pelo canal HTTPS autenticado. - O código **não fica salvo** na conexão instalada. - Uma tentativa com código errado **não instala** a conexão. - O Bridge limita as tentativas: **16 por endereço IP e 128 no total a cada janela de 60 segundos**. Acima disso, responde com o erro `E_PAIRING_RATE`. Depois do pareamento, cada operação usa mTLS: o aparelho apresenta o certificado emitido pela CA local, e o Android valida hostname, validade e o **pin** do certificado do servidor. ### Gerar um novo código O código expira em dois minutos. Para gerar outro sem parar o servidor, abra **outro terminal** na mesma pasta e use o comando `pair` com a mesma pasta de identidade e o mesmo endereço: ```powershell .\catbridge.exe pair -state .\private-state -public https://192.168.1.20:8743 ``` ```bash ./catbridge pair -state ./private-state -public https://192.168.1.20:8743 ``` ### Parear o emulador Android O emulador padrão do Android acessa o computador pelo endereço `10.0.2.2`. Use uma pasta de identidade separada para ele: ```powershell .\catbridge.exe serve -state .\private-emulator -listen 127.0.0.1:8743 -public https://10.0.2.2:8743 ``` ### Mudar o endereço do Bridge Mantenha `-public` igual ao endereço que o aparelho usa: a identidade do Bridge contém esse endereço. Se precisar mudar o hostname ou o IP público, use uma **nova pasta de identidade** e faça um novo pareamento. ## 4. Use em um fluxo Com o aparelho pareado, abra **Extensões → Conexões** para ver o estado da conexão e as capacidades disponíveis. As capacidades só executam dentro de uma [etapa de fluxo](https://netcattest.com/catsuite/docs/fluxos) aprovada, quando a extensão declara `connector.run`. O código de exemplo está em [CatBridge, o conector opcional](https://netcattest.com/catsuite/docs/catbridge) e o catálogo completo em [Capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas). ## Revogar um aparelho Remover a conexão no aplicativo revoga o certificado quando o Bridge está alcançável e sempre apaga a chave local. Para revogar um aparelho desconectado, use o comando `revoke` no computador: ```powershell .\catbridge.exe revoke -state .\private-state -public https://192.168.1.20:8743 -device IDENTIFICADOR_DO_APARELHO ``` ```bash ./catbridge revoke -state ./private-state -public https://192.168.1.20:8743 -device IDENTIFICADOR_DO_APARELHO ``` A revogação no servidor bloqueia aquele aparelho imediatamente nas próximas operações. ## Executores Linux (opcional) As ferramentas `http.probe`, `web.crawl` e `api.schema.test` e os adaptadores do ecossistema rodam em containers Linux, atrás de um intermediário de rede. Use **Docker Desktop com engine Linux** no Windows ou **Docker Engine** em um servidor Linux seu. Apenas o supervisor confiável acessa o Docker; os containers não recebem o socket do Docker, pastas gerais nem a rede do host. A preparação é uma operação administrativa do host, feita por você e nunca pelo aplicativo. Ela exige Docker com engine Linux, Python 3.12 ou superior e a biblioteca `cryptography`. O script já vem na pasta `runtime` do pacote: ```bash python runtime/prepare.py --output runtime/prepared --go go --docker docker ``` A preparação verifica os checksums oficiais das ferramentas, fixa a imagem base por digest, gera as dependências com hashes e faz a instalação offline. Depois, inicie o serviço com o manifesto assinado e a impressão digital gravada em `runtime/prepared/author.sha256`: ```powershell .\catbridge.exe serve -state .\private-state -listen 0.0.0.0:8743 -public https://192.168.1.20:8743 -scope https://api.exemplo.test -tool-lock .\runtime\prepared\tools.lock.json -tool-key IMPRESSAO_DIGITAL ``` As aprovações usam **digests**, não tags mutáveis. Qualquer mudança nas imagens, no binário ou no supervisor gera uma nova identidade e exige revisar as aprovações afetadas. Para o Nuclei local, adicione `-nuclei` com o caminho absoluto e `-templates` com o manifesto revisado (veja [Capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas)). ## Proteja a identidade - A chave do aparelho fica no **Android Keystore**; a chave do servidor, na **pasta de identidade** do computador. - O estado local do CatBridge é criptografado com **AES-256-GCM**. Dê acesso à pasta de identidade apenas ao usuário responsável. - Mantenha a pasta de estado, chaves, certificados, códigos e logs em local privado e restrinja o acesso ao servidor à rede necessária. - Credenciais de APIs e pareamentos **não** entram em backups portáteis. ## Compatibilidade | Item | Situação | |---|---| | Pareamento numérico | Requer CatSuite 1.3.7+100 ou posterior. O Bridge gera apenas códigos numéricos novos. | | Conexões existentes do Protocol 2 | Continuam funcionando, sem novo pareamento. | | Canal legado de dados de pareamento assinados | Permanece compatível. | | SDK | Capacidades do SDK 1.3 e adaptadores do ecossistema do SDK 1.4. | | Protocol 1 | Não é aceito. | ## Problemas comuns **O código expirou.** Cada código vale dois minutos. Gere outro com o comando `pair` em um segundo terminal, sem parar o servidor. **O aplicativo informa `E_PAIRING_RATE`.** Houve tentativas demais em pouco tempo. Aguarde um minuto e tente de novo com um código novo. **O celular não alcança o Bridge.** Confira se `-listen` não está em `127.0.0.1`, se os dois aparelhos estão na mesma rede e se a porta está liberada no firewall. **Mudei o IP do computador.** A identidade guarda o endereço de `-public`. Use uma nova pasta de identidade e pareie de novo. **As capacidades aparecem como indisponíveis.** O Bridge iniciou sem ferramentas. Prepare os executores ou informe o Nuclei e os templates revisados. ## Próximo passo - [Capacidades e ferramentas](https://netcattest.com/catsuite/docs/catbridge/ferramentas) - [Fluxos visuais](https://netcattest.com/catsuite/docs/fluxos) - [Downloads e SDK](https://netcattest.com/catsuite/docs/downloads) --- # Catálogo de capacidades e ferramentas > As capacidades tipadas do CatBridge, os executores fixados, os perfis read-only, external-approved e active-approved, os orçamentos, os templates revisados e os dados que cada ferramenta recebe. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/catbridge/ferramentas - Seção: CatBridge - Atualizado: 2026-10-05 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/catbridge/tools Uma extensão nunca escolhe binários, argumentos ou imagens. Ela pede uma **capacidade tipada** e o supervisor do [CatBridge](https://netcattest.com/catsuite/docs/catbridge) monta o comando, reserva o orçamento e devolve apenas JSON verificado. Cada capacidade tem um **executor fixado por versão e hash**; modificar o executável invalida as capacidades aprovadas. > [!NOTA] > O catálogo distingue **implementação** de **disponibilidade**. Uma capacidade pode existir no código e aparecer como `planned`, `not-installed` ou `unavailable` até que você prepare o executor correspondente no seu computador. ## Capacidades iniciais (SDK 1.3) | Capacidade | Executor fixado | Resultado | |---|---|---| | `http.probe` | httpx 1.12.0 | Serviços HTTP, status, título, headers selecionados e tecnologias observadas | | `web.crawl` | Katana 1.7.0 | Páginas, formulários, parâmetros e candidatos de JavaScript estático | | `api.schema.test` | Schemathesis 4.29.1 | Cobertura, checks, falhas observadas, seed e caso reduzido | | `nuclei.scan` | Instalação revisada do administrador | Resultados de templates HTTP aprovados | ## Capacidades do ecossistema (SDK 1.4) Os adaptadores das etapas 2 a 5 exigem contrato 2 e `.catflow` 5. A API v1 e o Protocol 2 assinado permanecem compatíveis. | Capacidade | Executor fixado | |---|---| | `assets.subdomains.discover` | subfinder 2.16.0, Amass 5.1.1 | | `dns.resolve` / `dns.enumerate` | dnsx 1.3.1 | | `dns.permute` | AlterX 0.1.0 | | `urls.history` | gau 2.2.4, waybackurls 0.1.0 | | `assets.search` | Uncover 1.2.1 | | `net.ports.discover` | naabu 2.6.1, Nmap 7.991 | | `net.services.fingerprint` | Nmap 7.991 | | `web.paths.fuzz` / `http.parameters.fuzz` / `web.vhosts.fuzz` | ffuf 2.3.0 | | `http.parameters.discover` | Arjun 2.2.7 | | `web.xss.analyze` | Dalfox 3.2.3 | | `api.sqli.validate` | SQLmap 1.10 | | `jwt.analyze` | JWT Tool 2.3.0 | | `tls.assess` | testssl.sh 3.2.4 | | `web.server.assess` | Nikto 2.6.1 | | `code.secrets.scan` | Gitleaks 8.30.1, Trufflehog 3.97.9 | | `code.sast.scan` | Semgrep 1.179.0 | Alguns perfis consultam fontes públicas selecionadas: subfinder usa crt.sh e CertSpotter; Uncover usa o Shodan InternetDB por IP, sem credenciais; gau e waybackurls usam o Wayback — URLs históricas **não** comprovam serviços ativos. DNS aceita A, AAAA, CNAME, MX, NS e TXT; TTL e DNSSEC não são considerados verificados. ## Perfis de execução - `read-only` — operações offline e consultas DNS. - `external-approved` — consulta a fontes externas aprovadas. - `active-approved` — testes ativos contra destinos aprovados. - `mutation-approved` — exclusivo do Schemathesis, só depois de selecionar explicitamente as operações e obter nova aprovação. No ecossistema o HTTP é limitado a **GET**. Descobertas e redirecionamentos **não** ampliam o escopo. ## Orçamentos e limites Os limites valem para a tarefa inteira e são reservados antes de cada lote: | Limite | Valor | |---|---| | Destinos por tarefa | até 25 (httpx aceita 50; Schemathesis usa um endereço base) | | Operações de rede | até 500 | | Taxa | 5 requests/s, 2 conexões | | Tempo | 120 s (httpx/Katana) · 300 s (Schemathesis) · 10 min (Nuclei) | | Resultados | 1.000 por tarefa | | Katana | `depth` até 2 e `pages` até 25, sem navegador ou execução de JavaScript | | Schemathesis | `operations`/`paths` até 20; `examples` até 25; `seed` inteiro | | Portas TCP | até 32 por tarefa, um destino por tarefa | | TLS | uma porta por etapa | O cancelamento **não** devolve uma reserva cujo consumo seja desconhecido. Lotes concluídos (até cinco destinos e cinco templates) são reutilizados; repetir um lote de resultado desconhecido exige escolha explícita. ## Templates revisados (Nuclei) O manifesto é uma lista com `id`, `path`, `sha256` e `name` em pt-BR/en. Atualize o hash **somente** depois de revisar o YAML. ```json { "templates": [ { "id": "aurora-cache", "path": "examples/aurora-cache.yaml", "sha256": "…", "name": {"pt-BR": "Cache do Aurora", "en": "Aurora cache"} } ] } ``` Apenas **HTTP GET/HEAD**, destinos baseados em `{{BaseURL}}`, matchers e extractors são aceitos. Código, JavaScript executável, headless, DNS, OAST, workflows externos, raw requests e redirecionamentos configurados **não** são aceitos. Headers que alteram host ou enquadramento são recusados. Os hashes são verificados antes de **cada** execução. ## Dados que a ferramenta recebe - O perfil padrão `endpoints-only` **não** encaminha cookies, tokens ou corpos. - `selected-headers` compartilha até **16 cabeçalhos / 16 KiB** escolhidos explicitamente na etapa e incluídos na aprovação. - `Cookie` e `Authorization` exigem seleção explícita e classificação **SECRET**; cabeçalhos de host/enquadramento são recusados. - Os valores selecionados ficam em um arquivo temporário privado, removido ao terminar. Corpos **nunca** são enviados ao Nuclei. ## Recursos enviados ao fluxo Alguns adaptadores usam recursos que você envia em partes assinadas de até 64 KiB, vinculados a aparelho, fluxo, revisão e classificação; o hash faz parte da aprovação imutável. | Recurso | Limite | |---|---| | Dicionário (wordlist) | 2 a 500 entradas únicas de até 128 caracteres | | Snapshot de arquivos | 100 arquivos, 256 KiB por arquivo, 1 MiB no total | | JWT | recurso SECRET de até 16 KiB | Caminhos absolutos, travessia de diretório e links simbólicos são recusados. ## Resultados e evidências Os resultados chegam em páginas assinadas de até **50 registros ou 512 KiB**, com recibos verificáveis, versões e hashes do executável e dos templates. Valores de credenciais e parâmetros reconhecidos como secretos são ocultados. > [!AVISO] > Um sinal de ferramenta é **evidência para revisão**, não prova de exploração. Falha de contrato no Schemathesis, por exemplo, é registrada como achado informativo e observado — não comprova uma vulnerabilidade. ## Próximo passo - [Instalar e parear o CatBridge](https://netcattest.com/catsuite/docs/catbridge/instalar) - [Fluxos visuais](https://netcattest.com/catsuite/docs/fluxos) - [Referência de erros](https://netcattest.com/catsuite/docs/referencia/erros) --- # Códigos de erro do SDK > Lista dos códigos E_* estáveis retornados por extensões, pacotes, fluxos e conectores do CatSuite, com o significado de cada um. - Idioma: pt-BR - URL canônica: https://netcattest.com/catsuite/docs/referencia/erros - Seção: Referência - Atualizado: 2026-10-05 - Outro idioma (en): https://netcattest.com/catsuite/en/docs/reference/errors Os erros do SDK usam códigos `E_*` estáveis, com descrição traduzida na interface. Use o código para tratar falhas no seu JavaScript e para pesquisar nos registros. ```js try { await cat.http.send({url: 'https://api.aurora.test/timeout'}); } catch (erro) { if (erro.code === 'E_TIMEOUT') { cat.log({'pt-BR': 'Tempo esgotado.', en: 'Timed out.'}, 'warning'); } } ``` ## Pacote e manifesto | Código | Significado | |---|---| | `E_PACKAGE` | pacote inválido | | `E_MANIFEST` | manifesto inválido | | `E_TRANSLATION` | o pacote deve incluir português brasileiro e inglês | | `E_VERSION` | versão do pacote ou do SDK incompatível | | `E_ENTRY` | arquivo JavaScript de entrada inválido | | `E_HASH` | a integridade do pacote não corresponde ao manifesto | | `E_PATH` | o pacote contém um caminho não permitido | | `E_SIZE` | o limite de tamanho foi excedido | | `E_SETTINGS` | `settingsSchema` inválido | | `E_SIGNATURE` | assinatura inválida | | `E_UNSIGNED` | arquivo antigo sem assinatura; revise e aprove para criar uma revisão assinada localmente | ## Execução | Código | Significado | |---|---| | `E_SERVICE` | motor de extensões indisponível | | `E_RUNTIME` | falha na execução da extensão | | `E_SYNTAX` | o código JavaScript contém um erro de sintaxe | | `E_EVENT` | evento ou handler inválido | | `E_HOOK_ASYNC` | handlers de alteração precisam ser síncronos | | `E_TIMEOUT` | o tempo de execução foi excedido | | `E_MEMORY` | o limite de memória foi excedido | | `E_QUEUE` | a fila de execução está cheia | | `E_LIMIT` | o limite de extensões ou recursos foi atingido | | `E_DISABLED` | a extensão está desativada | | `E_SUSPENDED` | a extensão foi suspensa após falhas consecutivas | | `E_COMMAND` | comando inválido ou indisponível | | `E_UI` | componente de interface inválido | ## Permissões e destinos | Código | Significado | |---|---| | `E_PERMISSION` | a extensão não tem permissão para esta operação | | `E_APPROVAL` | revise as permissões antes de ativar | | `E_HOST` | destino fora do escopo permitido | | `E_PRIVATE_DESTINATION` | o destino resolveu para um endereço privado sem escopo explícito | | `E_PROXY_LOOP` | o envio aponta para o próprio proxy do CatSuite | | `E_METHOD` | lista de métodos inválida | ## HTTP | Código | Significado | |---|---| | `E_HTTP` | mensagem HTTP inválida | | `E_HEADER` | cabeçalho HTTP inválido | | `E_BODY` | este corpo HTTP não pode ser modificado | | `E_CANCELLED` | envio cancelado | | `E_EXTERNAL` | a API simulada retornou um erro | | `E_LABORATORY` | ative o modo laboratório nas configurações da extensão | ## Dados e credenciais | Código | Significado | |---|---| | `E_STORAGE` | o limite de armazenamento foi excedido | | `E_FINDING` | achado inválido | | `E_CREDENTIAL` | credencial indisponível | | `E_CREDENTIAL_PROTECTION` | credenciais operacionais exigem proteção SECRET | | `E_RECOVERY` | não foi possível concluir a recuperação segura | ## Fluxos e conectores | Código | Significado | |---|---| | `E_STEP` | etapa inválida ou não registrada | | `E_PARSER` | parser inválido ou repetido | | `E_CHECKPOINT` | checkpoint inválido ou maior que 32 KiB | | `E_FLOW` | definição de fluxo inválida | | `E_JOB` | a tarefa remota não está disponível; revise o resultado antes de reenviar | | `E_CONNECTOR` | falha ao falar com o conector | | `E_PAIRING` | pareamento inválido | | `E_CAPABILITY_UNAVAILABLE` | a capacidade não está disponível no conector | | `E_SCHEMA_OPERATION` | seleção de operações do OpenAPI inválida | --- # Introduction to CatSuite > What CatSuite is, how the lab modules connect and what changed in version 1.5.0 with extensions, visual workflows and CatBridge. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/introduction - Section: Get started - Updated: 2026-10-05 - Other language (pt-BR): https://netcattest.com/catsuite/docs/introducao **CatSuite** is a free Android lab for web security, API testing and QA. It brings the tools that are usually scattered between computer and phone into a single workflow: traffic capture, request editing and resending, wordlist testing, path discovery, decoding and TLS analysis. > [!IMPORTANT] > Only use CatSuite on your own environments, for learning, CTFs and explicitly authorized testing. ## How the lab is organized | Module | What it is for | |---|---| | Interceptor | Pause, review and decide on requests and responses, with history, Site Map and export. | | Browser | Technical browser with network monitor, page source, inspection, DOM modifier and CatEyes. | | Network Proxy | HTTP and HTTPS traffic capture with its own CA certificate and replacement rules. | | Repeater | Raw request editing and resending, with response comparison. | | Intruder | Testing with `$CAT$` markers, wordlists, pause and resume. | | Discoverer | Path, parameter and endpoint discovery on authorized targets. | | Decoder | JWT, Base64, URL, Hex, HTML Entities, Binary and hashes. | | SSL/TLS Analyzer | Handshake, certificate chain and fingerprints. | | History and Notepad | Session timeline and local notes. | Whatever you capture in one module can move to another with a single tap: a request from History opens in Repeater, becomes the base for Intruder or goes into an extension. ## What is new in version 1.5.0 - **Extensions** — JavaScript `.catplug` packages run by QuickJS inside an isolated Android service. See [CatSuite extensions](https://netcattest.com/catsuite/en/docs/extensions). - **Visual workflows** — `.catflow` graphs with steps, conditions, joins and reproducible runs. See [Visual workflows](https://netcattest.com/catsuite/en/docs/workflows). - **CatBridge** — an optional connector that brings httpx, Katana, Schemathesis and Nuclei into workflows. See [CatBridge](https://netcattest.com/catsuite/en/docs/catbridge). - **Vault and protection** — PUBLIC, PROTECTED and SECRET levels with strong biometrics. See [Security](https://netcattest.com/catsuite/en/docs/security). > [!NOTE] Cat AI coming soon > Cat AI is out of this version while it is being rebuilt and will return in a future update. Every other module and the extensions work as usual. ## Lab principles 1. **Explicit action** — the app never generates traffic on its own; captures, sends and analyses depend on you. 2. **Data on the device** — history, notes, sessions and extension data stay on the phone. 3. **Least privilege** — extensions start disabled and only receive approved capabilities. 4. **Bilingual** — interface, extensions and this documentation in Portuguese and English. ## Next steps - [Getting started with CatSuite](https://netcattest.com/catsuite/en/docs/getting-started) - [Build your first extension](https://netcattest.com/catsuite/en/docs/extensions) - [Open the extension IDE in the browser](https://netcattest.com/catsuite/en/ide) --- # Getting started with CatSuite > Install CatSuite, learn the main navigation, capture your first request and export evidence as TXT, cURL, JSON or HAR. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/getting-started - Section: Get started - Updated: 2026-10-05 - Other language (pt-BR): https://netcattest.com/catsuite/docs/primeiros-passos ## 1. Install from Google Play CatSuite is free, with no subscription and no paywall. [Get it on Google Play](https://play.google.com/store/apps/details?id=br.com.netcattest.catsuite.app) and open the app. ## 2. First launch On the home screen, tap **START**. On first access, the app shows the terms of use and the module selection. You can enable History, Notepad, Discoverer, SSL/TLS Analyzer and Network Proxy now or later in **Settings**. ## 3. Main navigation The bottom bar has three entries: | Entry | What it opens | |---|---| | INTERCEPTOR | Intercept, History, Site Map and module options | | BROWSER | The lab’s technical browser | | MENU | Additional modules: Repeater, Intruder, Discoverer, History, Notepad, Decoder, SSL/TLS Analyzer, Network Proxy, Settings and Extensions | ## 4. Capture your first request 1. Open the **Browser** and visit an authorized target. 2. Go back to the **Interceptor** and open **History**. 3. Tap a request to see headers, body and response. 4. Use **Repeater** to resend with changes or **Intruder** to test variations. > [!TIP] > In Intruder, add `$CAT$` to the request to mark where the wordlist will be applied. ## 5. Export evidence History can be exported in the formats below. Exporting and sharing always depend on your action. | Format | Content | |---|---| | TXT | Complete history as organized text | | cURL .txt | Complete cURL commands, including `-X`, `-H` and `-d` | | JSON | Structured data for analysis and automation | | .HAR | File compatible with HTTP traffic analysis tools | ## 6. Protect the session In **Settings** you control biometrics at launch, inactivity lock and screenshot protection. ## Next step Once you master the modules, turn your routines into code: [CatSuite extensions](https://netcattest.com/catsuite/en/docs/extensions). --- # Downloads and SDK > Where to download CatSuite, CatBridge for Windows and Linux, the 1.4.0 extension SDK and CatSuite Studio for VS Code, with official links and SHA-256. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/downloads - Section: Get started - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/downloads Everything you need to use CatSuite and write extensions, in one place. The app is **free**, with no subscription and no paywall, and the developer tools live at official addresses: **GitHub** for downloads and source code and the **Visual Studio Code Marketplace** for the CatSuite Studio extension. | What | Official download | |---|---| | CatSuite app (Android) | [Google Play](https://play.google.com/store/apps/details?id=br.com.netcattest.catsuite.app) | | CatBridge for Windows 64-bit | [catbridge-windows-amd64.zip](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-windows-amd64.zip) | | CatBridge for Linux 64-bit | [catbridge-linux-amd64.tar.gz](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-linux-amd64.tar.gz) | | Extension SDK 1.4.0 | [catsuite-sdk-1.4.0.zip](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/catsuite-sdk-1.4.0.zip) | | CatSuite Studio 1.2.0 (VS Code) | [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) or [catsuite-studio-1.2.0.vsix](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catsuite-studio-1.2.0.vsix) | | Extension IDE in the browser | [Web IDE](https://netcattest.com/catsuite/en/ide) | ## CatSuite app CatSuite is an **Android** app. Download it from the official store: - [Google Play — CatSuite](https://play.google.com/store/apps/details?id=br.com.netcattest.catsuite.app) Every module — interceptor, browser, network proxy, Repeater, Intruder, Discoverer, Decoder, SSL/TLS Analyzer, extensions and workflows — ships inside the app. Data stays on the device. Start with [Getting started](https://netcattest.com/catsuite/en/docs/getting-started). > [!NOTE] > Current app version: **1.5.0**. Extension SDK: **1.4.0** · API v1. API v1 stays compatible across every SDK version. ## Official GitHub repository The [github.com/netcattest/catsuite](https://github.com/netcattest/catsuite) repository brings together the source code and the downloads of the developer tools: | Folder | What it contains | |---|---| | [catbridge](https://github.com/netcattest/catsuite/tree/main/catbridge) | The optional CatBridge connector, written in Go, with usage and pairing instructions. | | [sdk](https://github.com/netcattest/catsuite/tree/main/sdk) | The 1.4.0 extension SDK: types, reference runtime, schemas, examples and workflow templates. | | [catsuite-vscode](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) | The source code of the CatSuite Studio extension for VS Code. | The ready-made files live in the repository's published releases, each one with its own SHA-256 checksum file: | Release | Files | Verification | |---|---|---| | `sdk-1.4.0` | `catsuite-sdk-1.4.0.zip` | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/SHA256SUMS.txt) | | `tools-1.2.0` | `catbridge-windows-amd64.zip`, `catbridge-linux-amd64.tar.gz`, `catsuite-studio-1.2.0.vsix` | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/SHA256SUMS.txt) | ### Check the integrity Compare the SHA-256 of each downloaded file with the value published in the `SHA256SUMS.txt` of the same release. ```powershell Get-FileHash .\catsuite-sdk-1.4.0.zip -Algorithm SHA256 ``` ```bash sha256sum -c --ignore-missing SHA256SUMS.txt ``` > [!WARNING] > Download only from the official address `github.com/netcattest/catsuite` and install CatSuite Studio from the official Marketplace or from the VSIX published in the repository. If the hash does not match, delete the file and download it again. ## Extension SDK 1.4.0 The SDK brings together everything to build CatSuite plugins: the API types, the reference runtime, the schemas, **fifteen editable examples** and **six workflow templates**. - [Download SDK 1.4.0 (ZIP)](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/catsuite-sdk-1.4.0.zip) - [Explore the sdk folder on GitHub](https://github.com/netcattest/catsuite/tree/main/sdk) - [Full SDK guide](https://netcattest.com/catsuite/en/docs/extensions/sdk) The ZIP extracts a `catsuite-sdk` folder. You do not need to install anything on the device to run extensions: the **QuickJS** engine runs inside the app and the global `cat` object is already available to your code. To write them, pick where you prefer to work: - **In VS Code**, with [CatSuite Studio](https://netcattest.com/catsuite/en/docs/extensions/vscode): SDK suggestions, validation, a local preview and signed `.catplug` packages. - **In the browser**, with the [extension IDE](https://netcattest.com/catsuite/en/ide): editor with highlighting, autocomplete, validation, a simulator and `.catplug` export, with nothing to install. - **Read the contract** in the [JavaScript API reference](https://netcattest.com/catsuite/en/docs/extensions/api) and the [manifest and .catplug package](https://netcattest.com/catsuite/en/docs/extensions/manifest). ```ts declare const cat: { readonly apiVersion: 1; readonly sdkVersion: "1.4.0"; events: { on(name: "http.request" | "http.response" | "http.complete", handler: (message: CatMessage) => void | Promise): void }; proxy: { onRequest(handler: (m: CatMessage) => CatMessage | void): void; onResponse(handler: (m: CatMessage) => CatMessage | void): void }; http: { send(request: CatRequest): Promise }; ui: { tab: { register(options: { id: string; title: CatText; components: CatComponent[] }): void } }; findings: { add(finding: CatFinding): Promise }; }; ``` ## CatSuite Studio for VS Code **CatSuite Studio** is the official CatSuite extension for Visual Studio Code: SDK suggestions as you type `cat.`, ready-made templates, continuous validation, a local preview with fixtures and signed `.catplug` package builds. - [Install from the Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) - [Download the 1.2.0 VSIX](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catsuite-studio-1.2.0.vsix) - [Source code on GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) From the Marketplace, use the VS Code **Extensions** view and search for **CatSuite Studio**, or the command line: ```bash code --install-extension NetCatTest.catsuite-studio ``` With the VSIX downloaded, open **Extensions → ⋯ → Install from VSIX** in VS Code and select the file, or use the command line: ```bash code --install-extension catsuite-studio-1.2.0.vsix ``` CatSuite Studio requires **Visual Studio Code 1.100.0 or newer**. See the [full CatSuite Studio guide](https://netcattest.com/catsuite/en/docs/extensions/vscode). ## Extension IDE The [web IDE](https://netcattest.com/catsuite/en/ide) runs entirely in the browser: nothing is sent to servers and the simulator makes no network connections. You create from scratch or from an example, validate, run it in a simulator faithful to the app and export a `.catplug` ready to import into CatSuite. See the [full IDE guide](https://netcattest.com/catsuite/en/docs/extensions/ide). ## CatBridge connector [CatBridge](https://netcattest.com/catsuite/en/docs/catbridge) is **optional** and runs on **your** computer. The ready-made distribution does not require Go: download the package for your system, extract it and start the service. Pairing uses a **24-digit numeric code**, with no QR Code. The steps are in [Install and pair CatBridge](https://netcattest.com/catsuite/en/docs/catbridge/install), and the tool catalog in [Capabilities and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools). ## Machine-readable documentation Every page in this documentation has a **Markdown** version: append `.md` to its address. There is also a plain-text index for language models: - [CatSuite llms.txt](https://netcattest.com/catsuite/llms.txt) — bilingual index of the app and the documentation. - [llms-full.txt](https://netcattest.com/catsuite/llms-full.txt) — complete documentation in Portuguese and English in a single file. ## Next step - [Extension SDK 1.4.0](https://netcattest.com/catsuite/en/docs/extensions/sdk) - [CatSuite Studio for VS Code](https://netcattest.com/catsuite/en/docs/extensions/vscode) - [Install and pair CatBridge](https://netcattest.com/catsuite/en/docs/catbridge/install) --- # CatSuite modules > Explore the CatSuite modules: Interceptor, Network Proxy, Browser, Repeater, Intruder and Discoverer, with a glossary and how to use and configure each one. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos The **CatSuite modules** form a complete web security and API testing lab inside a single Android app. The **Interceptor** and the **Network Proxy** capture requests and responses, the **Browser** and **CatEyes** explore pages and identify technologies, the **Repeater** and the **Intruder** resend and automate variations, the **Discoverer** reveals paths and parameters, the **Decoder** translates tokens and hashes, **SSL/TLS** triages the secure connection, **Wordlists and payloads** feed the local attacks and **History** keeps the timeline and notes. This page introduces each module, explains the concepts they all share, shows how to use and configure the set as a whole and tells you which module to pick at each stage of the work. > [!IMPORTANT] > Use the active modules (Network Proxy, Repeater, Intruder and Discoverer) only in your own environments, studies, CTFs and systems you have written authorization to test. See [Security and responsible use](https://netcattest.com/catsuite/en/docs/security). ## The CatSuite modules and what they are for Every module runs in the same **local lab**: traffic is captured, analyzed and resent on the device itself, data stays on the device and you choose the authorized targets. The table summarizes each module, what it is for and where to open it in the app. | Module | What it is for | Where to open it | | --- | --- | --- | | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) | Pause, review and edit every request and response, with history, Site Map, A/B comparison and export | Bottom bar: **INTERCEPTOR** | | [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) | Bring HTTP and HTTPS traffic from other devices and apps into the lab, with its own CA and replacement rules | **MENU** | | [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) | A technical browser with network monitor, page source, inspect element, DOM modifier and User-Agent | Bottom bar: **BROWSER** | | [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes) | Technology fingerprinting of the open page, with confidence levels and CVE signals | Inside the Browser | | [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) | Edit the raw request, resend it as often as you like and compare responses | **MENU** | | [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) | Send payloads at marked positions, with wordlists, a generator, processors and filters | **MENU** | | [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) | Discover paths, parameters and endpoints with wordlists and controlled pacing | **MENU** | | [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) | Convert JWT, Base64, URL, Hex, HTML Entities and Binary and generate hashes | **MENU** | | [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) | Triage of the handshake, certificate chain and fingerprints | **MENU** (SSL/TLS Analyzer) | | [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists) | Manage default and imported wordlists and the payload generator | **Settings > Wordlist** | | [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) | Session timeline and a notepad with export | **MENU** (History and Notepad) | > [!TIP] > If you have never used CatSuite, start with [Getting started](https://netcattest.com/catsuite/en/docs/getting-started): it covers the first launch, the main navigation and your first captured request. Then come back to this page to choose the next module. ## Core concepts: the modules glossary The same terms show up on almost every CatSuite screen. The glossary below explains each one and points to the module where it matters most. | Term | What it means | Where to go deeper | | --- | --- | --- | | **Request** | The message the client sends to the server: request line (method, path and version), headers, a blank line and an optional body. | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) | | **Response** | The server's answer: status line, headers and body. The Interceptor can pause it for editing before it reaches the client. | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) | | **Proxy** | An intermediary: the client sends its requests to CatSuite, which forwards them to the destination and returns the response. | [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) | | **MITM** | *Man-in-the-middle*: the proxy sits in the middle of the conversation and can read, record and change every authorized message. | [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) | | **CA certificate** | The lab's own certificate authority. Once installed as trusted on the client, it lets you decrypt that device's HTTPS. | [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) | | **Wordlist** | A text file with one entry per line. Each line becomes a candidate tested against the target. | [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists) | | **Payload** | Each concrete value that comes out of a wordlist or a generator and goes into the request. | [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder), [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists) | | **`$CAT$` marker** | The exact spot where each wordlist word goes. In the Discoverer it sits in the base URL; in the Intruder positions are marked with buttons and appear between `§`. | [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer), [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) | | **Fingerprint** | In CatEyes, identifying technologies from evidence; in the Network Proxy and SSL/TLS, the unique identifier of a certificate. | [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes), [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) | | **CVE** | The public identifier of a known vulnerability. CatEyes cross-checks versioned technologies against a local database and shows CVE signals for review. | [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes) | | **HAR** | *HTTP Archive*: a JSON file compatible with HTTP traffic analysis tools and one of the history export formats. | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) | | **JWT** | *JSON Web Token*: a token made of three Base64URL segments (header, payload and signature), common in the `Authorization` header. | [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder), [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) | | **Scope** | A list of hosts that limits where pausing and history recording apply, with suffix matching. | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) | | **Probe** | The request sent without markers at the start of an intrusion; its response becomes the comparison baseline. | [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) | ### How the modules connect The modules share the same history and pass requests to each other with a single tap: - The **Network Proxy** and the **Browser** feed the **Interceptor** and **History** with captured traffic. - From a history capture you can send the request to the **Repeater** (fine tuning), the **Intruder** (payload automation), the **SSL/TLS Analyzer**, the **Decoder** or the notepad. - The **Discoverer** and the **Intruder** read the lists from **Wordlists and payloads** and send findings back to the **Repeater**. - **CatEyes** analyzes the page open in the **Browser**, and the **Decoder** interprets tokens and values coming from any module. - [Extensions](https://netcattest.com/catsuite/en/docs/extensions) and [visual workflows](https://netcattest.com/catsuite/en/docs/workflows) observe and extend these modules, with `source` marking the origin (`proxy`, `network_proxy`, `repetir`, `intruso`, `descobridor`). ## The screen: main navigation, MENU and module panels On the home screen, tap **START**. On first access, the app shows the terms of use and the **module selection**: History, Notepad, Discoverer, SSL/TLS Analyzer and Network Proxy can be enabled right then or later in **Settings**. ### Bottom bar | Entry | What it opens | | --- | --- | | **INTERCEPTOR** | Intercept, History, Site Map and module options | | **BROWSER** | The lab's technical browser, with CatEyes | | **MENU** | Repeater, Intruder, Discoverer, History, Notepad, Decoder, SSL/TLS Analyzer, Network Proxy, Settings and Extensions | ### Panels and tabs of each module Each module has its own layout. Use the table as a quick map before opening the detailed page. | Module | Screen layout | | --- | --- | | Interceptor | **INTERCEPT**, **HISTORY** and **OPTIONS** tabs; editor with Raw, Headers, Body and Search | | Network Proxy | Operational dashboard (operation, statistics, diagnostics) and a hub with **SERVICE**, **LOCAL NETWORK**, **HTTPS AND CERTIFICATES**, **TRUSTED CLIENTS** and **HISTORY AND PRIVACY** | | Browser | Address bar, **BROWSER TOOLS** panel and **BROWSER OPTIONS** menu | | CatEyes | Summary card with chips, eye badge on the Browser bar and analysis sections | | Repeater | **MANUAL EXECUTION** card, **REQUEST** panel, **A/B COMPARISON** panel and **RESPONSE** panel | | Intruder | Preparation page (**TARGET**, **REQUEST** and **PAYLOADS** tabs) and a flow page with the results | | Discoverer | Run, Settings and Headers screens; processed, results and failures counters | | Decoder | Home page with **FORMATS**, **JWT INSPECTOR**, **JWT AND SIGNATURES**, **JWE INSPECTOR**, **HASHES AND CRYPTO** and **SMART DECODE** | | Wordlists and payloads | **DEFAULT WORDLISTS** and **USER WORDLISTS** sections | > [!NOTE] > The site and request timeline depends on the [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) module being enabled in Settings. Without it, history recording is unavailable. ## Options and how to configure the modules Each module has its own settings page, covered in detail in its documentation. The table gathers the options that most influence the lab as a whole, with the app's real values and defaults. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Module selection (Settings) | History, Notepad, Discoverer, SSL/TLS Analyzer, Network Proxy | Chosen at first launch | Enables or disables the optional MENU modules | | Interception (Interceptor) | On, Off | Off | Turns the queue on; each new message is held for review | | Intercept response (Interceptor) | On, Off | Off | Also pauses the response after the request goes through | | Pause only in scope (Interceptor) | On, Off | Off | Pauses only the scope hosts; with no hosts, the pause is global | | History limit (Interceptor) | 100, 300, 500, 1000, 2000, 5000 | 300 | Keeps up to N requests and discards the oldest | | Full Capture (Interceptor) | On, Off | Off | Records all local proxy traffic in history, when the device supports it | | Proxy port (Network Proxy) | 1024 to 65535 | 8080 | Local port where the listener accepts connections | | Intercept HTTPS traffic (Network Proxy) | On, Off | On | Decrypts HTTPS with the CA; off keeps the destination in a tunnel | | Mask sensitive data (Network Proxy) | On, Off | On | Hides known credentials in the view and common exports | | History retention (Network Proxy) | Current session, 1 day, 7 days, 30 days, Manual | 7 days | How long the captures stay saved | | Enable SSL/TLS (Repeater) | On, Off | On | When off, forces HTTP even if the original target is on HTTPS | | Ignore certificate errors (Repeater and Intruder) | On, Off | Off | Accepts invalid or self-signed certificates in the lab | | Requests per second (Intruder) | 0, 1, 2, 3, 5, 10, 20 | 0 (free) | Rate cap for the intrusion; 0 honors only the delay | | Requests per second (Discoverer) | 1 to 6 | 2 | Base pace of the scan | | Extra delay (Discoverer) | 0, 100, 250, 500, 750, 1000 ms | 250 ms | A fixed extra pause between attempts | To **prepare the lab**, open **Settings** and enable the optional modules you plan to use. History comes first, because without it there is no timeline to review later. Enable the Network Proxy only when you need to capture traffic from another device or app. To **avoid freezing the whole device**, keep interception off while you are only observing, and turn on **Pause only in scope** with the target hosts listed under **Scope management**. That way the queue holds only the traffic you care about. To **control the pace of the active modules**, start with the Discoverer's safe defaults (2 requests per second and a 250 ms delay) and, in the Intruder, set a requests-per-second cap or a delay before running large lists. The Discoverer's automatic `429` backoff eases the load when the target asks for a pause. To **protect your evidence**, keep **Mask sensitive data** on in the Network Proxy and match retention to the size of the job. Ignoring certificate errors is a lab exception: leave it off on public targets. ## Buttons and actions that link the modules The actions below are the lab's "plumbing": they move a request from one module to another and take the evidence out of the app. | Button / Action | Where | What it does | | --- | --- | --- | | **START** | Home screen | Enters the app; on first access, opens the terms and the module selection | | **INTERCEPTOR** / **BROWSER** / **MENU** | Bottom bar | Switches between capture, browsing and the other modules | | Send to the Repeater / Intruder | Long press on a history capture | Opens the request in the target module for replay or automation | | Send to the SSL/TLS Analyzer, Decoder or notepad | Long press on a history capture | Takes the capture to TLS triage, decoding or note taking | | **Compare with another** | Long press on a history capture | Opens two captures side by side, with differing lines highlighted | | **A → REPEATER** / **B → REPEATER** | Interceptor A/B comparison | Sends one of the compared captures to the Repeater | | **DOWNLOAD AND SHARE** | Interceptor OPTIONS tab | Exports the filtered history as TXT, cURL .txt, JSON or .HAR | | **START NETWORK PROXY** | Network Proxy dashboard | Brings up the listener and shows the proxy address | | **EXPORT CA** | HTTPS AND CERTIFICATES | Shares the `.crt` certificate to install on the client | | **VERIFICAR** / **BAIXAR TXT** | CatEyes | Verifies the open page and downloads the text report | | **DECODE** / **NOTES** | Repeater editor context menu | Sends the selection to the Decoder or the Notepad | | **Send to the Repeater** | Discoverer result or long press on an Intruder result | Takes the finding to manual tuning | | **START INTRUSION** / **PAUSE** / **RESUME** | Intruder | Sends the probe, fires the attack and controls the run | | **ADD WORDLIST** | Settings > Wordlist | Imports a `.txt` list and starts validation | ## End-to-end lab workflow A typical test moves through several modules, from the first traffic to the report. The table shows the phases and what each one delivers. | Phase | Modules | Outcome | | --- | --- | --- | | 1. Prepare | Settings, [Security](https://netcattest.com/catsuite/en/docs/security) | Modules enabled, authorized target defined and scope configured | | 2. Capture | [Browser](https://netcattest.com/catsuite/en/docs/modules/browser), [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) | First requests and responses in history | | 3. Map | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes), [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) | Site Map by host, technologies identified and secure connection checked | | 4. Understand | [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) | Tokens, cookies and parameters translated into readable text | | 5. Manipulate | [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) | The effect of each change measured through compared responses | | 6. Automate | [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder), [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer), [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists) | Bulk variations filtered and hidden paths revealed | | 7. Record | [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) | Timeline reviewed and observations written down | | 8. Report | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes) | HAR, JSON, TXT and cURL exports, the CatEyes TXT report and exported notes | > [!WARNING] > When you finish, remove the lab CA from the test devices, revoke the paired clients in the Network Proxy and turn interception off. A CA left behind on a device still allows its HTTPS to be decrypted. ### Which module to use when | You want to... | Use | | --- | --- | | See a page's traffic without setting anything up | [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) | | Capture traffic from another device or a native app | [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) | | Hold a request or response and edit it before it moves on | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) | | Rewrite a header or cookie automatically across all traffic | [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) replacement rules | | Find out which frameworks, servers and versions a page uses | [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes) | | Change one field at a time and resend until you understand the effect | [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) | | Test hundreds of values at the same position in a request | [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) | | Find unpublished directories, endpoints and parameters | [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) | | Read a JWT or a Base64 value, or generate a hash | [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) | | Check the handshake, chain and certificate fingerprints | [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) | | Import your own word list | [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists) | | Review the session and write down evidence | [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) | ## Step by step: your first full cycle in CatSuite 1. On the home screen, tap **START**, accept the terms of use and enable at least **History** and **Notepad** in the module selection. 2. On the bottom bar, tap **BROWSER** and open an authorized target. The traffic it generates already enters the intercepted flow. 3. In the Browser, open **CatEyes** from the eye badge and tap **VERIFICAR** (verify) to identify the page's technologies. 4. Tap **INTERCEPTOR**, open the **HISTORY** tab and use the **site tree** to see the hosts and endpoints you visited. 5. Tap a capture to read headers, body and response. If there is a token, long-press and send the value to the **Decoder**. 6. Long-press again and choose **Send to the Repeater**. Change one field, tap **SEND** and compare the responses. 7. When you need to test many values, send the same capture to the **Intruder**, tap **AUTO-DETECT**, pick a wordlist on the **PAYLOADS** tab and tap **START INTRUSION**. 8. To look for hidden paths, open the **Discoverer** from the **MENU**, choose the wordlist under **CONFIGURAÇÕES** (settings) and tap **SALVAR** (save); then enter the URL with `$CAT$` and tap **INICIAR** (start). 9. Write your observations in the **Notepad** and review the timeline in **History**. 10. On the Interceptor's **OPTIONS** tab, open **DOWNLOAD AND SHARE**, choose the format and tap download to keep the evidence. > [!TIP] > To capture traffic from another device, add the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) setup between steps 1 and 2: start the proxy, export and install the CA and pair the device. ## Cross-module usage examples A request captured in the Interceptor history and sent to the Repeater: ```http GET /api/profile?id=42 HTTP/1.1 Host: target.example Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbmEiLCJyb2xlIjoidXNlciIsImV4cCI6MTc5OTk5OTk5OX0.c2lnbmF0dXJl Accept: application/json ``` The payload of the token above, after pasting it into the Decoder's JWT inspector: ```json { "sub": "ana", "role": "user", "exp": 1799999999 } ``` The same request in the Intruder, with the position marked by **AUTO-DETECT**: ```http GET /api/profile?id=§42§ HTTP/1.1 Host: target.example Accept: application/json ``` Discoverer URLs with the `$CAT$` marker, for paths and for parameters: ```text https://target.example/$CAT$ https://target.example/search?$CAT$=cat-suite ``` A simple wordlist ready to import under **Settings > Wordlist**: ```text admin api/v1 backup config uploads ``` Manual proxy settings on a second test device: ```text Server: 192.168.0.42 Port: 8080 ``` A command generated by the cURL export, ready to reproduce outside the app: ```bash curl -i -X GET "https://target.example/api/profile?id=42" \ -H "Accept: application/json" ``` ## Where to download CatBridge and the extensions SDK The CatSuite app is free and ships with every module on this page; you install it from Google Play. The developer tools live at official addresses: | Tool | Where | |---|---| | **CatBridge**, the optional connector that runs on your computer | [catbridge folder on GitHub](https://github.com/netcattest/catsuite/tree/main/catbridge) | | **CatSuite Studio**, the VS Code extension with the SDK and the `catsuite.d.ts` types | [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) | | CatSuite Studio source code | [catsuite-vscode folder on GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) | | Full official repository | [github.com/netcattest/catsuite](https://github.com/netcattest/catsuite) | The step-by-step guides are in [Downloads and SDK](https://netcattest.com/catsuite/en/docs/downloads), [Install and pair CatBridge](https://netcattest.com/catsuite/en/docs/catbridge/install) and [CatSuite Studio for VS Code](https://netcattest.com/catsuite/en/docs/extensions/vscode). > [!WARNING] > Download CatBridge and CatSuite Studio only from the official addresses above. Copies on other sites may have been tampered with and can compromise your computer and your lab. ## Common problems and FAQ **A module does not show up in the MENU.** History, Notepad, Discoverer, SSL/TLS Analyzer and Network Proxy are optional modules. Enable them in **Settings**. **History is empty.** Make sure History is enabled in Settings, that **Interceptor history** is on and that the capture conditions (Wi-Fi, Data, Charging) are not restricting recording. **I turned interception on and all traffic stopped.** That is the expected behavior: the queue holds everything until you act. Use **SEND** or **DROP** on each item, or turn on **Pause only in scope**. **Traffic from other apps does not appear.** The Browser captures only the traffic it generates itself. For other apps and devices, use the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) with the CA installed on the client. **HTTPS does not validate in the Network Proxy.** The CA was not installed as trusted on the client, or the host is on the **Bypassed hosts** list. Check the fingerprint with **COPY FINGERPRINT**. **What is the difference between the Repeater and the Intruder?** The Repeater does precise, manual replay of one request at a time; the Intruder automates many variations from marked positions and a wordlist or generator. **Where does the `$CAT$` marker go in the Intruder?** In the Intruder you do not type the marker: the **AUTO-DETECT** and **MARK SELECTION** buttons wrap the chosen span and the position shows up as `P1`, `P2` and so on. In the Discoverer, `$CAT$` goes literally into the base URL. **CatEyes says to open a site first.** It analyzes the page open in the Browser. Load an authorized target before tapping **VERIFICAR**. **Do CVE signals confirm a vulnerability?** No. They are leads from the local database for manual review; the detected version may be incomplete or already patched by the vendor. **My wordlist was not accepted.** The file must be a `.txt` with one entry per line and at least one useful line. See [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists). **The Network Proxy stopped on its own.** The listener works only while CatSuite is in the foreground and resumes automatically when you return to the app. ## Next step - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) - [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) - [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) - [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) - [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) - [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) - [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists) - [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) - [Downloads and SDK](https://netcattest.com/catsuite/en/docs/downloads) - [CatSuite extensions](https://netcattest.com/catsuite/en/docs/extensions) --- # Interceptor > CatSuite Interceptor: how to use and configure the queue, edit requests and responses, Site Map, history with filters and HAR, JSON, TXT and cURL export. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/interceptor - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/interceptador The **Interceptor** is CatSuite's live traffic control module: it pauses every **request** and every **response** in a queue, lets you review and edit **method, URL, headers, cookies and body** before forwarding, and keeps all **history** organized by domain, with a **Site Map** by host and endpoint, side-by-side **comparison** and **HAR, JSON, TXT and cURL export**. This page explains each concept, each option and how to use and configure the Interceptor step by step, always against an authorized target. > [!WARNING] > Intercepting, editing and resending traffic can affect apps, sessions and services on the device. Use the Interceptor only within a flow you started yourself and against systems you have written authorization to test. See [Security and responsible use](https://netcattest.com/catsuite/en/docs/security). ## What the Interceptor is and what it is for The Interceptor solves a core problem of web analysis: looking at and changing traffic **as it happens**. Instead of reading a log after the fact, you hold the message in transit, inspect the content and **decide what goes through** — forward as is, edit and forward, or drop. When interception is **on**, each message from the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) or the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) stops in a **queue**. When it is **off**, traffic passes straight through and is only recorded in **history**, if history is enabled. Typical use cases: - Stop a login or an API call to see exactly which headers and cookies the client sends. - Swap a body parameter or a URL before the request reaches the server. - Change the status, headers or body of a **response** to test how the client app reacts. - Build the map of a target's hosts and endpoints as you browse. - Compare two captures side by side and export the evidence in HAR, JSON, TXT or cURL. The Interceptor is a **local inspection point**: it operates on the device's own proxy, with no intermediate servers. Captures and preferences stay in the app's private storage. ## Essential Interceptor concepts Before touching the options, it helps to understand the terms on screen. Each concept below maps directly to a panel or button in the module. ### Request and response interception **Intercepting** means holding the message before it moves on. By default, the Interceptor pauses **requests** (what the client sends). With the **Intercept response** option on, it also pauses the **response** (what the server returns) after the request is forwarded, opening a second editing moment. That way you control both directions of the HTTP exchange. ### Interception queue The **interception queue** is the list of paused messages waiting for your decision. Each item shows **method, host and path**. While the queue exists, traffic is truly stopped — nothing moves on without your action. The queue header shows the state (**interception on or off**) and, during a send, displays **FINISHING SEND**. The queue layout toggles between **CARDS** (more detail) and **COMPACT** (more items on screen). ### Host scope and selective pausing The **scope** is a list of hosts that defines where the pause applies. With **Pause only in scope** on and hosts set in **Scope management**, the queue holds only those hosts' traffic and lets the rest through. The match is **by suffix**: `example.com` covers `api.example.com` and other subdomains, and the field accepts the `*.host` form. With no hosts in scope, the pause stays **global** so no traffic escapes. ### History, limit and Full Capture The **history** keeps the messages that passed through the Interceptor and the proxy, by domain, for later review. The **history limit** keeps up to a maximum number of visible requests and automatically discards the oldest. **Full Capture**, when the device supports it, records **all** proxy traffic in history — not only what you intercepted by hand. It depends on device support and may not be available on every device. ### Site Map (site tree) by host and endpoint The **Site Map** rearranges history as a **tree**: each **host** becomes a node that expands into the observed **paths** (endpoints). Each endpoint shows the **methods** and **statuses** seen plus a request counter. It is the quick way to understand the target surface. Tapping a host's filter icon applies the host (or host plus path) to the history filter. ### A/B request comparison **Comparison** opens two captures side by side — **A** and **B** — in a full screen. You switch between **REQUEST** and **RESPONSE**, and the **different lines** between the two sides are highlighted, which makes it easy to see what changed from one capture to another. ### HAR, JSON, TXT and cURL export **Export** takes the filtered history out of the app. There are four formats: **TXT** (organized text), **cURL .txt** (a file of full `cURL` commands, with `-X`, `-H` and `-d`), **JSON** (structured data for analysis and automation) and **.HAR** (a file compatible with HTTP traffic analysis tools). The same screen is used to **download** or **share**. ### Automatic rules and extensions When [extensions](https://netcattest.com/catsuite/en/docs/extensions) process the proxy, the applicable **replacement rules** run **before** the handlers and before the message reaches the queue. A request changed by an automatic rule gets an **AUTOMATIC RULE** mark in the queue. Manual editing in the Interceptor prevails over what was already applied. ## The Interceptor screen: tabs and panels The Interceptor has three tabs at the top: **INTERCEPT**, **HISTORY** and **OPTIONS**. The default accent color is yellow (purple in the Virtual App). ### Intercept tab This is where you work the live queue. At the top is the **interception switch** (on/off) and the **CARDS/COMPACT** layout toggle. Below, the **INTERCEPTION QUEUE** lists the paused messages with **METHOD**, **HOST** and **PATH**. With nothing in the queue, the area shows **WAITING FOR NEW REQUESTS**. Each item leads to the **REQUEST EDITOR** and, when applicable, to the **paused response** section. ### History tab Shows the **INTERCEPTOR HISTORY**. At the top there is the search field (**Search by site, domain, method, URL or status...**) and the buttons for **site tree** (Site Map), **interesting only**, **Network Proxy** (when applicable) and the **filters menu**. The list brings each capture; selecting one, the detail panel shows the **REQUEST** and **RESPONSE** tabs and the **GENERAL INFORMATION**. Touch and hold a capture to open the copy, share and send menu. ### Options tab Gathers two configuration blocks: **INTERCEPT SETTINGS** (queue behavior, scope, Full Capture and HTTP colors) and **HISTORY SETTINGS** (limit, capture conditions, response contents, history scope and the **DOWNLOAD AND SHARE** shortcut). ## The request editor: Raw, Headers, Body and Search When you open a request in the queue, the **REQUEST EDITOR** presents four sub-tabs: - **Raw** — the whole request as text (initial line with **method** and **URL/path**, **headers** and **body**). Editing here syncs with the structured tabs. - **Headers** — the list of **EDITABLE HEADERS** as key/value pairs. This is where you edit **cookies**, through the `Cookie` header, along with `Authorization`, `User-Agent` and others. - **Body** — the body editor, which adapts to the format: **BODY // FORM URLENCODED**, **BODY // FORMATTED JSON** or **BODY // TEXT**. - **Search** — finds a span inside the request itself. When done, use **APPLY AND SEND** to forward with the edits. If the raw text becomes invalid, the editor warns you (**Fix the raw request to edit the headers.**) and locks the structured tabs until you fix it. > [!TIP] > To change a single value, the **Headers** or **Body** tab is safer than **Raw**, because it keeps the structure. Use **Raw** when you need to rewrite the initial line (method and path) or paste a whole request. ## Interceptor options and how to configure them ### Intercept options The table gathers the **INTERCEPT SETTINGS** block of the Options tab. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Interception | On, Off | Off | Turns the queue on; each new message stops for review before moving on | | Intercept response | On, Off | Off | Also pauses the response after the request is forwarded | | Redirect to the Browser | On, Off | On | Opens the Browser when you send the request from the Interceptor | | Pause only in scope | On, Off | Off | Pauses only the scope hosts; with no hosts, the pause is global | | Scope management | host list | empty | Sets the covered hosts (suffix match, accepts `*.host`) | | Full Capture | On, Off | Off | Records all local proxy traffic in history (depends on the device) | | HTTP colors | On, Off | On | Highlights method, initial line, headers and values in the request and response areas | | Interceptor history | On, Off | On | Turns history recording of captures on or off | To **turn interception on**, you can use the Intercept tab switch or this options block. With it on, intercept only when you really mean to hold traffic — the queue blocks everything that comes in until you act item by item. To **limit the pause to a target**, turn on **Pause only in scope** and open **Scope management** to add the hosts. Remember the suffix match: `shop.example` covers `www.shop.example` and `api.shop.example`. With no hosts, even with the option on the pause stays global on purpose, so nothing escapes. To **follow the result**, keep **Redirect to the Browser** on: when you send the request, the app opens the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) so you can see the main navigation. Turn it off if you prefer to stay in the Interceptor after confirming the request. > [!NOTE] > **Full Capture** uses the local proxy to record all traffic in history. It depends on device support; when it is not available, the app warns that full interception could not be enabled on this device and interception keeps working normally, only without the broad capture. ### History options The table gathers the **HISTORY SETTINGS** block. | Option | Values | Default | What it does | | --- | --- | --- | --- | | History limit | 100, 300, 500, 1000, 2000, 5000 | 300 | Keeps up to N requests before discarding the oldest | | Capture only in conditions | All, Wi-Fi, Data, Charging | All | Restricts capture by network type or battery state | | View response contents | On, Off | Off | Shows the full body of images, scripts and CSS (uses more memory) | | Record history only in scope | On, Off | Off | Records only requests to scope hosts | | Download and share | — | — | Opens the export screen with filters by method, status, domain, type, day and time | To **save memory** on modest devices, choose the **100** limit (the lightest option, focused on the newest requests). The **300** default balances performance and retention; **1000** to **5000** keep long sessions at the cost of more memory. The **capture conditions** save data and battery: **Wi-Fi** captures only on wireless, **Data** only on mobile data and **Charging** only with the device charging and battery above 50%. **All** imposes no restriction. > [!IMPORTANT] > To unlock the timeline of sites, requests and what passed through the interceptor, the [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) module must be active in Settings. Without it, history recording is unavailable. ## Buttons and actions ### In the Intercept tab and the editor | Button / Action | Where | What it does | | --- | --- | --- | | Interception switch | Top of the tab | Turns the queue on or off | | CARDS / COMPACT | Top of the queue | Toggles the queue layout | | EDIT | Queue item | Opens the request editor | | SEND | Queue / editor | Forwards the message unchanged | | DROP | Queue / editor | Blocks and discards the message | | APPLY AND SEND | Editor | Applies the edits and forwards | | Raw / Headers / Body / Search | Request editor | Toggles the editor sub-tabs | ### In the paused response | Button / Action | What it does | | --- | --- | | EDIT AND SEND | Opens the response editor | | STATUS / HEADERS / BODY | Response editor sub-tabs | | QUICK ACTIONS → INJECT JS | Opens the field to inject JavaScript into the response | | QUICK ACTIONS → SWAP JSON/BODY | Replaces the response body/JSON | | INJECT AND SEND | Applies the JS injection and forwards | | FORMAT JSON | Reformats the JSON body for reading | | SEND / DROP | Forwards or discards the response | ### In the History tab | Button / Action | What it does | | --- | --- | | Search field | Filters by site, domain, method, URL or status | | Site tree | Opens or closes the Site Map | | Interesting only | Shows only captures marked as interesting | | Network Proxy | Shows only [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) traffic | | Filters menu | Opens **HISTORY OPTIONS** | | Long press on a capture | Opens the copy, share and send menu | The **HISTORY OPTIONS** menu brings **ADVANCED SEARCH** (Search by regex, Match case, Search in body, Clear filters, Clear history) and the filters **METHOD** (GET, POST, PUT, DELETE), **STATUS**, **DOMAIN** (Select Domains) and **TYPE** (HTML, JSON, Image, JS, CSS). The long-press menu on a capture offers: **Copy** (URL, Request headers, Request body, Full request, Response headers, Response body, Full response, Request and response, **cURL**, **fetch (JavaScript)**, **Python requests**, **HTTPie**); **Share**; **Compare with another**; **Mark as interesting**; **Explain here** (AI explanation); and sending to [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater), [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder), [SSL/TLS Analyzer](https://netcattest.com/catsuite/en/docs/modules/ssl-tls), [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) and the notepad. ### In export (Download and share) | Button / Action | What it does | | --- | --- | | EXPORT FORMAT | Chooses TXT, cURL .txt, JSON or .HAR | | DOWNLOAD | Saves the file with the current filters | | SHARE | Sends the file through the system share sheet | | CLEAR FILTERS | Removes the selected method, status, domain, type, day and time | ### In the A/B comparison | Button / Action | What it does | | --- | --- | | REQUEST / RESPONSE | Chooses which part to compare between A and B | | A → REPEATER / B → REPEATER | Sends capture A or B to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) | | A → INTERCEPT / B → INTERCEPT | Loads capture A or B into the queue for editing | ## Step by step ### 1. Turn interception on and hold the first request 1. Capture traffic with the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) or browse with the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser). 2. On the **INTERCEPT** tab, flip the **interception switch**. 3. Trigger an action on the target (a click, a form submit). The message appears in the **INTERCEPTION QUEUE**. 4. Tap the item to open the **REQUEST EDITOR** or decide right away: **SEND** or **DROP**. ### 2. Edit method, URL, headers, cookies and body 1. With the request open in the editor, go to the **Raw** tab to adjust the **initial line** (method and path) or paste a full request. 2. Go to **Headers** to change key/value pairs. Edit the `Cookie` header to swap cookies and `Authorization` for the token. 3. Go to **Body** to edit the body in the detected format (form urlencoded, JSON or text). 4. Check everything and tap **APPLY AND SEND**. ### 3. Intercept and edit the response 1. On the **OPTIONS** tab, turn on **Intercept response**. 2. Forward a request normally. When the reply arrives, the **PAUSED RESPONSE** section opens. 3. Adjust **STATUS**, **HEADERS** or **BODY**; use **FORMAT JSON** to read better; if needed, **INJECT JS** from **QUICK ACTIONS**. 4. Tap **EDIT AND SEND** (or **INJECT AND SEND**) to return the response to the client. ### 4. Explore the Site Map by host and endpoint 1. On the **HISTORY** tab, tap the **site tree** icon. 2. Expand a **host** to see its **paths**, with methods, statuses and counts. 3. Tap a host's filter icon (or a path) to apply that slice to history and close the Site Map. ### 5. Filter history and compare two captures 1. On the **HISTORY** tab, use the search field or open the **filters menu** and choose method, status, domain and type. 2. For precise text, turn on **Search by regex** and, if you want, **Search in body**. 3. On a capture, long press and choose **Compare with another**; then tap another capture. 4. On the comparison screen, switch **REQUEST/RESPONSE** and watch the **different lines** highlighted. ### 6. Export in HAR, JSON, TXT or cURL 1. On the **OPTIONS** tab, open **DOWNLOAD AND SHARE**. 2. Adjust the filters (method, status, domain, type, day and time) and watch the **TOTAL**, **SELECTED** and **FILTERS** counters. 3. Tap **EXPORT FORMAT** and choose **.HAR**, **JSON**, **TXT** or **cURL .txt**. 4. Tap **DOWNLOAD** or **SHARE**. ### 7. Send to the Repeater and the Intruder 1. In history (or in the editor), long press a capture. 2. Choose **Send to the Repeater** for manual, precise replay, or **Send to the Intruder** for automation with wordlists. 3. Dig deeper in the destination module. > [!TIP] > When you want to repeat variations of the same request, forward it to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) or the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) instead of editing it by hand several times in the queue. ## Examples Original request paused in the queue, before any edit: ```http POST /api/login HTTP/1.1 Host: target.example Content-Type: application/json Cookie: session=abc123 {"user":"ann","password":"123456"} ``` The same request after editing the cookie and body in the Headers/Body tabs: ```http POST /api/login HTTP/1.1 Host: target.example Content-Type: application/json Cookie: session=new_value {"user":"ann","password":"another-password"} ``` Command produced by **Copy cURL** from a history capture: ```bash curl -i -X POST "https://target.example/api/login" \ -H "Content-Type: application/json" \ -H "Cookie: session=abc123" \ -d '{"user":"ann","password":"123456"}' ``` Snippet of an exported **.HAR** file, in the format HTTP analysis tools accept: ```json { "log": { "version": "1.2", "creator": { "name": "CatSuite", "version": "1.3" }, "entries": [ { "request": { "method": "POST", "url": "https://target.example/api/login" }, "response": { "status": 200 } } ] } } ``` ## Common problems and FAQ **I turned interception on and the app froze all traffic.** That is the expected behavior: the queue holds everything until you act. Resolve the queue items with **SEND** or **DROP**, or turn interception off. **The queue does not hold only the target I want.** Turn on **Pause only in scope** and add the hosts in **Scope management**. With no hosts, the pause is global on purpose. **I turned on Intercept response and nothing shows up.** The response only pauses **after** the matching request is forwarded. Forward the request and wait for the reply. **History records nothing.** Check that **Interceptor history** is on and that the [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) module is active in settings. Also check the **capture conditions** (Wi-Fi, Data, Charging). **History search does not find what I expect.** If **Search by regex** is on and the expression is invalid, the panel warns you. Fix the regex or turn off regex mode. Turn on **Search in body** to look inside the contents. **The export came out empty.** Some filter is too strict. Tap **CLEAR FILTERS** and check the **TOTAL** and **SELECTED** counters before downloading. **Full Capture will not turn on.** It depends on device support. When unavailable, the app warns you and interception keeps working normally, only without the broad capture. > [!IMPORTANT] > When you copy, export or share content, the destination becomes your decision. Treat requests, cookies and bodies as sensitive data. ## Best practices and security > [!DANGER] > Changing requests and responses can end sessions, corrupt data and affect services. Do this only on authorized targets and with awareness of the effect of each edit. - Keep interception off when you only want to observe; turn it on only to hold traffic on purpose. - Use the **scope** so you do not stop traffic from other apps and services on the device. - Prefer editing in **Headers** and **Body** over rewriting the whole **Raw** request, so you do not break the structure. - Compare two captures before concluding that an edit had an effect. - Export in **.HAR** or **JSON** to keep evidence; use **cURL** to reproduce the request outside the app. ## Next step - [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) - [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) - [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) - [Modules overview](https://netcattest.com/catsuite/en/docs/modules) - [Security and responsible use](https://netcattest.com/catsuite/en/docs/security) --- # Network Proxy > CatSuite Network Proxy: how to configure the MITM proxy, the CA certificate, Full Capture of HTTP and HTTPS, the replacement rules and response pausing. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/proxy - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/proxy The **Network Proxy** is the module that turns your Android device into an **MITM proxy** for HTTP and HTTPS in the lab. It opens a listener on the local network, decrypts authorized traffic with its **own exportable certificate authority (CA)**, offers **Full Capture of HTTP and HTTPS**, lets you define **replacement rules** on requests, responses, headers and cookies, and supports **response pausing for editing**. The captured traffic feeds the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) and [History](https://netcattest.com/catsuite/en/docs/modules/history) in real time. This page explains each concept, each option and how to use and configure the Network Proxy step by step, always against authorized targets. > [!WARNING] > Install the lab CA only on test devices you control and remove it when you are done. Capture, decrypt and modify only traffic from targets you have written authorization to test. See [Security and responsible use](https://netcattest.com/catsuite/en/docs/security). ## What the Network Proxy is and what it is for A proxy is a middleman: the client device sends its requests to CatSuite, which forwards them to the destination and returns the response. Because the Network Proxy sits **in the middle** of the conversation (MITM, _man-in-the-middle_), it can **read, log and alter** every message before forwarding. That is how you observe, in the lab, exactly what an app or browser on another device sends and receives. The module solves a practical problem: not all traffic comes from the built-in [Browser](https://netcattest.com/catsuite/en/docs/modules/browser). Phones, tablets or other apps on the same local network can point their proxy to this device, and from then on all authorized traffic shows up in CatSuite. Typical use cases: - Capture the HTTP and HTTPS traffic of a second test device pointed at the proxy. - Inspect what a native app sends, not just the browser. - Automatically rewrite a header, a cookie or a body snippet with **replacement rules**. - Pause a response to edit it before the client receives it. - Forward interesting requests to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) and the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder). The listener runs **only while the CAT Suite is in the foreground**. When the app loses focus, the service is suspended and resumes automatically when it returns — it never stays hidden in the background. ## Essential Network Proxy concepts Before you configure anything, it helps to understand the terms on screen. Each concept below maps directly to a panel, button or option in the module. ### MITM proxy and the capture pipeline When the proxy is active, each authorized connection enters a **pipeline**: the connection is received, the request is read, the applicable **replacement rules** run, the message goes to the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) (which can pause it) and, finally, it is forwarded to the destination. The response travels the reverse path. All of this happens inside the device, with no intermediate servers. ### Certificate authority (CA) and why you install it To read the content of an **HTTPS** connection, the proxy must present the client a certificate it trusts. CatSuite generates its own **certificate authority (CA)** and, at connection time, mints an on-the-fly certificate for the visited host, signed by that CA. The client only accepts this certificate if the **CA is installed as trusted** on its system. That is why the CA is the central step for HTTPS: without installing it, the client refuses the certificate and the TLS handshake fails. The CA is **created when the proxy is first started**, can be **exported** as a `.crt` file, has a **fingerprint** for verification, and can be **regenerated** when needed. > [!IMPORTANT] > A CA installed as trusted allows intercepting that device's HTTPS. Treat the lab CA as a secret: install it only where you control and need it, and remove it as soon as you finish the work. ### Device pairing and credentials Before accepting traffic, each device must be **paired**. Pairing generates a credential with three parts: a **temporary code**, a **username** and a **password**. The code authorizes the device's **IP** during the session; the username and password remain as an alternative credential for compatible tools. The password is shown **only at pairing time**. There is also a **QR Code**, which fills in the pairing quickly without sending the password. Each device gets its own credential, which can be **revoked** at any time. ### Full Capture of HTTP and HTTPS **Full Capture** is the mode that makes **all** authorized HTTP and HTTPS traffic flow through the proxy and be recorded, rather than a one-off interception. Combined with the **Save to history** option, it keeps request, response and metadata in the shared [History](https://netcattest.com/catsuite/en/docs/modules/history). Full Capture is available **only on Android**. ### Replacement rules A **replacement rule** rewrites traffic automatically as it passes through the proxy. You create the rules in **Settings > Replacement rules** and choose **which part of the traffic** each rule changes: the **request**, the **response**, the **headers**, the **Cookie** header or the **first line** of the request. Each rule has a **Find** field and a **Replace** field and can be **literal** (swap the exact text) or a **regular expression**. When a rule is enabled, it enters the traffic flow automatically. Matching rules run **top to bottom**, and you set each one's position in the sequence. > [!NOTE] > When there are [extensions](https://netcattest.com/catsuite/en/docs/extensions) processing the proxy, the applicable replacement rules run before the handlers, and manual editing in the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) prevails over both. ### Response pausing for editing With response interception on, the **MITM proxy pauses every response at its headers**: the response is held so you can review and edit status, headers and body before delivering it to the client. Streaming bodies and large downloads are preserved without editing and shown as **read-only**. The editing happens in the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor). ### Bypassed hosts and CONNECT ports Not every destination should be decrypted. In **Bypassed hosts** you list the hosts that should pass **in a tunnel** (no MITM), one per line, accepting wildcards like `*.example.com`. The **CONNECT ports** define which ports are accepted for the HTTPS tunnel (the `CONNECT` method); the default covers the most common secure ports. ## The Network Proxy screen: dashboard, pages and tabs The module has an **operational dashboard** and a **settings hub** with five pages. You open the settings from the dashboard's gear icon and return with the back button on each page. ### Operational dashboard It is the first screen. From top to bottom it gathers: the **header** (service state in one line), the **operation card**, the **statistics grid**, the **diagnostics card** and the **quick access** (shortcuts to Trusted clients and to HTTPS and certificates). ### Operation card and proxy address Shows the current state — **SERVICE ACTIVE**, **SERVICE SUSPENDED** or **SERVICE INACTIVE** — and the **PROXY ADDRESS** (in `address:port` format) that clients should use. With the proxy active, the setup page URL appears, along with the **copy** address button and the **Open setup page** button. The main button toggles between **START NETWORK PROXY** and **STOP NETWORK PROXY**. ### Session statistics Five indicators track the service in real time: **Clients with active traffic**, **Active connections**, **Requests this session**, **Connections received** and **Traffic received / sent** (in human-readable bytes). ### Diagnostics card Summarizes forwarding health in one line (for example, _Waiting for a device_, _Setup page reachable_, _Device authorized_, _Proxy working_) and, with the proxy active, shows three badges: **HTTP**, **HTTPS** and **INTERNET**, each marked `OK` or `PENDING`. It is the quick way to know whether the client reached the listener, whether HTTPS was validated and whether the destination is reachable. ### Settings hub Opens five pages: **SERVICE**, **LOCAL NETWORK**, **HTTPS AND CERTIFICATES**, **TRUSTED CLIENTS** and **HISTORY AND PRIVACY**. Port, interface and HTTPS rules can only be changed with the **proxy stopped**; the pages warn when an option is locked. ## Network Proxy options and how to configure them The table gathers the options from the settings pages, with values, default and effect. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Start automatically | On, Off | Off | Starts the proxy when CAT Suite opens, if the module is active | | Proxy port | 1024 to 65535 | 8080 | Local port where the listener accepts connections | | Network interface | Automatic or a detected Wi-Fi/Ethernet interface | Automatic | Local address the proxy listens on | | Intercept HTTPS traffic | On, Off | On | Decrypts HTTPS with the CA; off keeps the destination in a tunnel | | Bypassed hosts | list of hosts, one per line (accepts `*.domain`) | empty | Hosts that pass in a tunnel, without decrypting | | CONNECT ports | comma-separated ports | 443, 8443, 9443 | Ports accepted for the HTTPS tunnel (`CONNECT` method) | | Save to history | On, Off | On | Keeps request, response and metadata in the shared History | | Mask sensitive data | On, Off | On | Hides known credentials in the view and common exports | | Stored body limit | 256 KiB, 1 MiB, 4 MiB, 8 MiB | 1 MiB | Maximum stored body size; above it the content is truncated | | Storage quota | 250 MiB, 500 MiB, 1 GiB, 2 GiB | 1 GiB | Total space reserved for captured bodies | | Maximum records | 1,000, 5,000, 10,000, 25,000, 50,000 | 10,000 | Maximum number of entries kept | | History retention | Current session, 1 day, 7 days, 30 days, Manual | 7 days | How long the captures stay saved | ### Service On the **SERVICE** page, turn on **Start automatically** if you want the proxy to come up with the app (only when the module is active). The action card shows **PROXY RUNNING** or **PROXY STOPPED** and offers **START NOW** / **STOP NOW**, mirroring the dashboard button. Remember that the listener only works while the app is open. ### Local network On **LOCAL NETWORK**, set the **Proxy port** (a value between 1024 and 65535; the default is 8080) and the **Network interface**. Leave it on **Automatic** to let CatSuite pick the appropriate local interface, or select a specific Wi-Fi/Ethernet one by name and address. Both options can only be changed with the proxy stopped; the listener binds to a single local interface, never to every network on the device. ### HTTPS and certificates On **HTTPS AND CERTIFICATES**, the **Intercept HTTPS traffic** switch turns decryption on or off: on, the proxy uses this installation's CA; off, it keeps destinations in a tunnel. Under **Bypassed hosts**, enter one host per line (wildcards like `*.example.com` are accepted) to keep sensitive destinations out of the MITM. Under **CONNECT ports**, list, comma-separated, the HTTPS ports accepted for the tunnel. At the bottom of the page is the **CERTIFICATE AUTHORITY** card, with the CA's name and **fingerprint** and the **COPY FINGERPRINT**, **EXPORT CA** and **REGENERATE CA** buttons. These HTTPS options require the proxy stopped. ### History and privacy The **HISTORY AND PRIVACY** page controls what stays saved, without changing forwarding. **Save to history** keeps the captures in the [History](https://netcattest.com/catsuite/en/docs/modules/history). **Mask sensitive data** hides known credentials in the view and common exports. The **Stored body limit**, **Storage quota**, **Maximum records** and **History retention** selectors set the maximum size of each body, the total space, the number of entries and how long everything is kept. Bodies above the limit are forwarded normally and stored as truncated content. ## Buttons and actions | Button | Where | What it does | | --- | --- | --- | | START / STOP NETWORK PROXY | Dashboard and Service page | Brings up or shuts down the listener | | Copy | Dashboard (proxy active) | Copies the proxy address | | Open setup page | Dashboard (proxy active) | Opens the proxy's web setup page | | EXPORT CA | HTTPS and certificates | Shares the CA certificate (`.crt`) to install on the client | | COPY FINGERPRINT | HTTPS and certificates | Copies the CA fingerprint for verification | | REGENERATE CA | HTTPS and certificates | Creates a new CA and invalidates current clients and certificates | | PAIR NEW DEVICE | Trusted clients | Generates code, username, password and QR Code for the device | | OPEN QR CODE | Credentials dialog | Shows the temporary pairing QR Code | | Revoke client | Trusted clients | Removes a paired device's authorization | ## Step by step ### 1. Start the proxy and read the address 1. Open the **Network Proxy** and tap **START NETWORK PROXY**. 2. Check the **SERVICE ACTIVE** state and copy the **PROXY ADDRESS** shown (`address:port`). 3. If the start fails, read the message: port in use, interface unavailable or local-network access denied tell you what to adjust. ### 2. Generate, export and install the CA 1. Once the proxy has started at least once, the CA is prepared automatically. 2. Go to **HTTPS AND CERTIFICATES** and tap **EXPORT CA** to share the `.crt` file. 3. On the client device, install the file as a **trusted CA** (see [Getting started](https://netcattest.com/catsuite/en/docs/getting-started)). 4. Confirm the **fingerprint** with **COPY FINGERPRINT** to be sure you installed the right CA. ### 3. Pair a device 1. On **TRUSTED CLIENTS**, tap **PAIR NEW DEVICE** and give it an easy-to-recognize name. 2. Note the **Temporary code**, the **Username** and the **Password** (the password appears only now). 3. Tap **OPEN QR CODE** to pair quickly, or type the code on the device's setup page. 4. On the client, set a manual proxy with the address and port copied from the dashboard. ### 4. Capture HTTP and HTTPS with Full Capture 1. Keep **Intercept HTTPS traffic** on and **Save to history** on. 2. Generate traffic on the client device pointed at the proxy. 3. Watch the **HTTP**, **HTTPS** and **INTERNET** badges on the diagnostics card until they read `OK`. 4. Analyze the captures in the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) and the [History](https://netcattest.com/catsuite/en/docs/modules/history). ### 5. Create a replacement rule 1. Go to **Settings > Replacement rules** and create a rule. 2. Choose the scope (request, response, headers, Cookie or first line). 3. Fill in **Find** and **Replace** and select literal or regular expression. 4. Enable the rule and adjust its position in the sequence; rules run top to bottom. ### 6. Pause and edit a response 1. In the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), turn on response interception. 2. Generate the request on the client; the response stops at its headers. 3. Edit status, headers and body and forward. Streaming or very large bodies stay read-only. ### 7. Regenerate or remove the CA 1. On **HTTPS AND CERTIFICATES**, tap **REGENERATE CA** to create a new CA. 2. Confirm in the warning: all current clients and certificates will no longer be trusted. 3. Install the new CA and pair the devices again. 4. When you finish the work, remove the lab CA from the test devices. ## Examples Proxy address and setup page URL shown on the dashboard while the service is active: ```text 192.168.0.42:8080 http://192.168.0.42:8080/ ``` Manual proxy configuration on the client device: ```text Server: 192.168.0.42 Port: 8080 ``` List of hosts kept in a tunnel, without decrypting: ```text *.google.com accounts.example.com 10.0.0.5 ``` Literal replacement rule that rewrites an origin header: ```text Scope: headers Find: X-Forwarded-For: 127.0.0.1 Replace: X-Forwarded-For: 203.0.113.9 ``` Response paused in the Interceptor, ready for editing before forwarding: ```http HTTP/1.1 200 OK Content-Type: application/json {"profile":"default"} ``` ## Common problems and FAQ **The proxy does not start.** Read the message: _port in use_ (pick another between 1024 and 65535), _no local Wi-Fi or Ethernet interface available_, _Android did not allow local-network access_ or _the capture pipeline is not ready yet_ (try again). **HTTPS does not validate (HTTPS badge `PENDING`).** The client reached the proxy, but CA trust or the TLS handshake failed. Confirm the CA was installed as trusted on the client and that the host is not in the bypass list. **The device does not show as authorized.** The client reached the listener but was not authorized in this session yet. Validate the **temporary code** on the device's setup page. **No traffic arrives at all.** Check that both devices are on the same local network and use exactly the IP and port shown on the dashboard. The **INTERNET** badge at `PENDING` means the destination was not reached over the chosen interface. **The service stopped by itself.** The Network Proxy is suspended when CAT Suite leaves the foreground and resumes when it returns. It never runs hidden in the background. **I need to change the port or interface and the fields are locked.** Stop the Network Proxy before changing port, interface or HTTPS rules. **I switched networks and pairing stopped working.** The interface or address changed. Start the proxy again and pair the devices once more. ## Best practices and security > [!DANGER] > Decrypting third-party HTTPS without authorization is illegal and unethical. Pair, decrypt and modify traffic only from devices and targets you are authorized to test. Misuse can cause blocks, instability or violation of applicable rules and contracts. - Install the lab CA only on test devices you control and remove it when you are done. - Keep the **Bypassed hosts** list for sensitive destinations that should not be decrypted. - Leave **Mask sensitive data** on when sharing screens or exporting captures. - Revoke credentials of devices no longer in use. - Tune retention, quota and maximum records to the size of the job so storage does not fill up. ## Next step - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) - [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) - [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) - [Security, vault and data protection](https://netcattest.com/catsuite/en/docs/security) - [Getting started](https://netcattest.com/catsuite/en/docs/getting-started) --- # Browser > Guide to the CatSuite Browser module: network monitor, page source, inspect element, DOM modifier, JWT/Base64, User-Agent, desktop mode and IP spoofing. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/browser - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/navegador The **Browser** is CatSuite's web exploration area: a technical browser that combines an address bar, search, controlled URL opening, a network monitor, page source, inspect element, a DOM modifier, JWT and Base64 detection in storage, User-Agent switching, desktop mode and IP spoofing headers. It puts the same inspection tools you would use on a computer in your pocket and automatically feeds the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) and [History](https://netcattest.com/catsuite/en/docs/modules/history). This page explains what each feature does, how to configure the module and how to use the Browser in real authorized testing flows. > [!NOTE] > The Browser captures the traffic it generates itself. To intercept traffic from other apps on the device, use the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) with Full Capture. ## What the Browser module is and what it is for The Browser opens pages in a WebView and, at the same time, exposes mobile DevTools over the loaded page. Beyond seeing the site, you follow every request, read the HTML and the JavaScript and CSS resources, select a visible element, edit the DOM tree, find tokens stored in the browser's storage and tune the headers of the next requests. It is the entry point to capture traffic without configuring the system proxy: everything you browse here already enters the intercepted flow. When you confirm a request in the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), the app can open the Browser automatically to follow the result of the main navigation. The timeline of pages and requests is available when the [History](https://netcattest.com/catsuite/en/docs/modules/history) module is enabled in settings. ## Core Browser concepts Before opening the screen, it helps to fix the terms that appear in the bar, the tools panel and the options menu. ### Address bar and navigation The **address bar** accepts either a URL or search text. If what you typed is not a URL, the Browser sends the text to the chosen **search engine** (Google by default). The field shows a green padlock when the address starts with `https://` and a search icon otherwise. Next to the field are the navigation controls — **back**, **forward**, **reload** and **home** — plus the CatEyes button and the three-dot menu. ### Network monitor The **Network monitor** recaptures the page and lists requests in the order they were made, with status, method, domain, type, transferred size and timings. Each entry opens a detail with the request line, request and response headers, cookies sent and received, security flags (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy) and a timeline with the start, middle and end of each resource. It is the equivalent of a desktop browser's Network tab. ### Page source **Page source** shows the HTML of the open page and a resource bar with the JavaScript scripts and CSS stylesheets the site loaded. You switch between the HTML and each resource, search text inside the code, page through windows when the file is very large and download the current source. From here you can also open Inspect element. ### Inspect element **Inspect element** turns on a selection mode on the page: you tap a visible element and CatSuite shows its attributes, generates a selector and lets you send the element to Page source or to the DOM modifier. It is the fast way to jump from what is on screen to the matching chunk in the code. ### DOM modifier The **DOM modifier** checks the page and organizes the useful elements into a searchable, filterable list instead of showing an endless tree. It classifies items by category — field, textarea, select, form, button, link and external script — and marks which are hidden and which are editable. You edit the content and attributes of a field and apply the change straight onto the open page. ### JWT and Base64 detection in storage When you open the storage explorer, CatSuite scans `localStorage`, `sessionStorage` and cookies for decodable values and highlights the ones that look like a **JWT** or **Base64**. A value marked as JWT opens the inspector with header, payload and signature; a Base64 value can be sent to the [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder). This way you find tokens and secrets the page stored without decoding anything by hand. ### JavaScript console and storage explorer The **JavaScript console** runs a snippet of code on the open page and shows the return value, the logs and the errors. The **Storage explorer** inspects and edits LocalStorage, SessionStorage, cookies (the ones that are not HttpOnly) and IndexedDB databases. Together they let you read and change the client state without leaving the app. ### User-Agent and desktop mode The **User-Agent** is the identifier the browser sends in each request. CatSuite ships a catalog of ready-made profiles, organized into categories (Apple / iOS and macOS, Android by version and by usage type, Desktop, Consoles, Bots / Crawlers and others), plus the system default. **Desktop mode** goes beyond the User-Agent: it uses a wide layout and a desktop User-Agent to open the page as on a computer. ### IP spoofing headers **IP spoofing** adds a source IP header to the next requests to simulate where the client appears to come from. You pick the header (X-Forwarded-For, X-Real-IP, CF-Connecting-IP, Client-IP or Forwarded) and a ready IP from the catalog (private and internal ranges, documentation and lab ranges, well-known public resolvers and IPv6 presets). Remember this is just a header: the server may or may not trust it. ### CatEyes **CatEyes** identifies the page's technologies and cross-references versions with CVE signals from a local database, scoring confidence across layers of clues (headers, DOM, runtime and light probes). It has its own button in the bar, with color and pulse according to the severity found, and a dedicated page — see [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes). | Term | What it is | Where it appears | | --- | --- | --- | | Address bar | URL and search field with an HTTPS padlock | Top bar | | Network monitor | Request list with status, timings and security | Tools | | Page source | Page HTML and JS/CSS resources | Tools | | Inspect element | Selection of a visible element on the page | Bar / Options | | DOM modifier | Filterable list of editable elements | Tools | | JWT / Base64 in storage | Token detection in storage and cookies | Storage explorer | | User-Agent / desktop mode | Identity switch and desktop layout | Options → Headers / General | | IP spoofing | Source IP header on the next requests | Options → Headers | ## The Browser screen: bar, tabs and panels ### Top bar The **top bar** holds navigation. When the address field is collapsed, you see back, forward, reload and home on the left, the address bar in the center, the CatEyes button and the options menu on the right. When you tap the field, it expands for editing and shows the clear button, the send button and an arrow to collapse it. ### Home panel and open page With no site loaded, the Browser shows the **home panel** with the illustration, the "Search the network or type a URL" field and the **SEARCH** button. When a page is open, it fills the WebView with a progress bar at the top while loading; if the address fails, the **PAGE UNAVAILABLE** screen appears with the error details and the **HOME** and **RELOAD** buttons. ### BROWSER TOOLS panel The **BROWSER TOOLS** panel ("Tools active on the browser's current page.") gathers the analysis shortcuts as cards: **CAT EYES** (layered analysis), **CONSOLE JS** (scripts, return and logs), **STORAGE** (local, cookies and IndexedDB), **NETWORK MONITOR** (requests, resources and order) and **DOM MODIFIER** (search, filters and editing). With no site loaded, it shows the "SITE NOT LOADED YET" notice. ### BROWSER OPTIONS menu The three-dot menu opens the **BROWSER OPTIONS** sheet, organized into blocks: general items (hide logo, desktop mode, clear cache and cookies), **NAVIGATION**, **TOOLS**, **REQUESTS** and, inside it, the **HEADERS** tab with the GENERAL, CUSTOMIZATION and CACHE AND NETWORK CONTROL groups. > [!TIP] > The tools only work with a real site loaded. If the cards appear disabled, search the network or type a URL before using the JavaScript Console, the Storage Explorer, the Network Monitor, the DOM Modifier, Page source and CatEyes. ## Browser options and how to configure them Open the three-dot menu to adjust the internal browser's behavior. The choices are persistent: CatSuite keeps your preference across sessions. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Hide logo | On / Off | Off | Removes the illustrated header to keep the browser cleaner. | | Desktop mode | On / Off | Off | Uses a wide layout and a desktop User-Agent to open pages as on a computer; requires a real site loaded. | | Clear cache | Action | — | Removes cache, storage and local databases of the current page. | | Clear cookies | Action | — | Deletes the cookies of the browser's current session. | | Allow HTTP + HTTPS | On / Off | On | When off, it uses HTTPS only: HTTP addresses try to migrate to HTTPS and Android blocks mixed content. | | Search engine | Google / DuckDuckGo / Bing / Brave Search / Ecosia | Google | Sets the provider used when the typed text is not a URL. | | User-Agent | Profile catalog | System default | Switches the identifier sent on navigations, fetch and compatible XHR. | | Accept-Language | Presets / original | Browser default | Sets the preferred language sent on the next requests. | | Accept | Presets / original | Browser default | Controls the content types the browser starts to prefer. | | Content-Type | Presets / original | Original | Overrides the content type sent. | | Referer | Contextual presets / original | Original | Sets the referrer of the next navigations; presets use the current tab or the destination origin. | | Origin | Presets / original | Original | Sets the origin sent on main navigations and compatible requests. | | Sec-Fetch-Site | same-origin / same-site / cross-site / original | Original | Adjusts the site context declared on the main navigation. | | IP spoofing | Header + IP from catalog | Off | Adds a source IP header to all new requests. | | Extra headers | Name/value pairs | Empty | Adds or edits arbitrary headers (for example `X-Api-Key`). | | No-Cache | On / Off | Off | Injects `Cache-Control: no-cache` and `Pragma: no-cache`. | | Bypass ETag | On / Off | Off | Removes `If-None-Match` and `If-Modified-Since` to force 200 responses. | | Identity Encoding | On / Off | Off | Uses `Accept-Encoding: identity` for uncompressed responses. | | Block trackers | On / Off | Off | Blocks the marked analytics hosts without turning off Full Capture. | To adjust each one: leave **Hide logo** to your visual taste. Turn on **Desktop mode** when the target serves a different mobile version and you want to see the desktop site — open the site first, because the option is only available with a page loaded. Use **Clear cache** and **Clear cookies** to repeat a login flow from scratch. Keep **Allow HTTP + HTTPS** on to open mixed targets in the lab; turn it off to force HTTPS only. Pick the **Search engine** you prefer in the bar. In the **Headers** block, switch the **User-Agent** to a catalog profile, adjust **Accept-Language**, **Accept**, **Content-Type**, **Referer**, **Origin** and **Sec-Fetch-Site** when you need to mimic a specific context, and use **Extra headers** for API keys and your own headers. Turn on **No-Cache**, **Bypass ETag** and **Identity Encoding** to avoid cache and compression and see the raw response. > [!WARNING] > Changing the Referer, the Origin, the Sec-Fetch-Site and the source IP changes how the target sees the request. Use these options only within an authorized scope; they are meant to reproduce test contexts, not to bypass third-party controls. ## Browser buttons and actions ### Top bar | Button | What it does | | --- | --- | | Back | Goes back one page in the WebView history. | | Forward | Goes forward one page in the WebView history. | | Reload | Reloads the current address. | | Home | Returns to the home search panel. | | Clear (in the field) | Empties the address field and keeps the keyboard open. | | Send (in the field) | Opens the typed URL or searches the text. | | CatEyes | Opens the technology and CVE analysis; the color indicates the severity. | | Menu (three dots) | Opens the BROWSER OPTIONS sheet. | ### Tools panel | Button | What it does | | --- | --- | | CAT EYES | Opens CatEyes to score the page's technologies and signatures. | | CONSOLE JS | Opens the console to run JavaScript and read outputs and logs. | | STORAGE | Opens the explorer for LocalStorage, SessionStorage, cookies and IndexedDB. | | NETWORK MONITOR | Opens the monitor and recaptures the page. | | DOM MODIFIER | Opens the filterable list of elements for editing. | ### Network monitor | Button | What it does | | --- | --- | | START MONITOR AND RELOAD | Arms the monitor and reloads the page to capture from the start. | | List entry | Opens the REQUEST DETAIL with headers, cookies, security and timings. | | Detail tabs | Switch between Request, Response, Headers, Cookies, Security and Timings. | ### DOM modifier | Button | What it does | | --- | --- | | CHECK / REFRESH CAPTURE | Reads the current DOM and builds the element list. | | Search | Filters by input, form, script, href, name and other terms. | | More filters | Opens the filters by DOM category. | | EDIT | Opens the element editor to change content and attributes. | | COPY DATA / COPY SELECTOR | Copies the element value or the generated selector. | ### Page source | Button | What it does | | --- | --- | | Resource bar | Switches between the page HTML and each JS script or CSS stylesheet. | | SEARCH | Searches text in the code, with previous and next result. | | Download current source | Downloads the open HTML or resource. | | Inspect element | Turns on element selection on the page. | ## Step by step: how to use the Browser ### Open a target and capture traffic 1. On the home panel, type the authorized target URL or some search text and tap **SEARCH**. 2. Wait for the page to load in the WebView. 3. Open the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) or [History](https://netcattest.com/catsuite/en/docs/modules/history) to see the requests the Browser generated. 4. Send what matters to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) or the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder). ### Monitor the network of a page 1. With a site loaded, open the **NETWORK MONITOR** from the tools panel or the menu. 2. Tap **START MONITOR AND RELOAD** to capture from the beginning of the load. 3. Read the STATUS, ITEMS, FAILURES and TOTAL counters and walk through the load SEQUENCE. 4. Tap an entry to open the REQUEST DETAIL and check headers, cookies, security flags and timings. ### Read and download the page source 1. Open **Page source** from the options menu. 2. Use the resource bar to switch between the HTML and the loaded JS scripts or CSS stylesheets. 3. Tap **SEARCH** and look for a term; use the arrows to move to the previous or next result. 4. Tap **Download current source** to save the open file. ### Inspect an element and edit the DOM 1. Turn on **Inspect element** from the bar or the menu and tap a visible element on the page. 2. Check the attributes and the generated selector and send the element to the **DOM modifier**. 3. In the DOM modifier, tap **CHECK** if the list is empty and filter by the element's category. 4. Tap **EDIT**, change the content or the attributes and confirm to apply the change on the page. ### Detect JWT and Base64 in storage 1. Open **STORAGE** (Storage explorer) from the tools panel. 2. Pick the area: LocalStorage, SessionStorage, Cookies or IndexedDB. 3. Look for the values highlighted as **JWT** or **Base64**. 4. Open a JWT to see header, payload and signature, or send a Base64 value to the [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder). ### Switch the User-Agent and turn on desktop mode 1. Open **Options → Headers** and tap **User-Agent**. 2. Choose a category and a ready profile (or the system default) and go back. 3. To see the site as on a computer, return to the main options screen and turn on **Desktop mode**. 4. Reload the page to apply the new identity. ### Apply IP spoofing by headers 1. Open **Options → Headers** and tap **IP spoofing**. 2. Choose the source header (for example X-Forwarded-For) and an IP from the catalog. 3. Tap **APPLY IP SPOOFING**. 4. Reload the page; to remove it, open again and tap **DISABLE IP SPOOFING**. ## Examples Source IP header added to the Browser's next requests. ```http GET / HTTP/1.1 Host: exemplo.com User-Agent: Cat Suite X-Forwarded-For: 203.0.113.10 ``` JWT value found in the page's `localStorage`. ```json { "key": "token", "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMifQ.c2lnbmF0dXJl" } ``` Snippet run in the JavaScript console to read the page storage. ```javascript return JSON.stringify(localStorage); ``` ## Common problems and frequently asked questions (FAQ) **The tool cards appear disabled.** No site has been loaded yet. Search the network or type a URL to open a real page before using the tools. **Desktop mode will not turn on.** It is only available with a site loaded. Open a real target and try again. **The Network monitor lists nothing.** Tap **START MONITOR AND RELOAD**: the monitor needs to reload the page to capture requests from the start. **A cookie does not show in the explorer.** HttpOnly cookies are not exposed here; the others can be inspected and edited. **The HTTP page will not open.** With HTTPS-only mode active, the browser tries to migrate to HTTPS and Android blocks mixed content. In an authorized lab, turn on **Allow HTTP + HTTPS**. **I changed the Referer/Origin and the site broke.** Some targets validate these headers. Go back to the original value in the Headers block or use **Restore Default**. **IP spoofing changed nothing.** The source IP is just a header; the server may ignore it. Confirm the header was applied and that the target trusts that header. > [!IMPORTANT] > The Browser generates real traffic against the target with every page opened and every request. Use it only within an authorized scope and with the care described on the [Security](https://netcattest.com/catsuite/en/docs/security) page. ## Next step - [CatEyes](https://netcattest.com/catsuite/en/docs/modules/cateyes) - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [History](https://netcattest.com/catsuite/en/docs/modules/history) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) - [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) - [Modules overview](https://netcattest.com/catsuite/en/docs/modules) --- # CatEyes > CatSuite CatEyes: how to use and configure page technology detection, the confidence level per detection and the local-database CVE signals to review. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/cateyes - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/cateyes **CatEyes** is CatSuite's *fingerprinting* module (technology fingerprinting): with one tap it reads the page open in the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) and identifies **frameworks, libraries, servers and services** from clues in the HTML, the headers, the loaded resources and *runtime* objects. Each technology appears with a **confidence level** and a **score**, and whenever CatEyes finds the **version**, it cross-checks that version against a **local vulnerability database** to highlight **CVE signals** you should review. This page explains every concept, every detection layer, every button and how to run and interpret CatEyes step by step. ## What CatEyes is and what it is for CatEyes performs passive reconnaissance of a site's technology stack. Instead of guessing what runs behind a page, it watches concrete evidence — a `Server` header, a telltale cookie, a CSS class, a JavaScript global object, a `/_next/static/` bundle — and adds that evidence up to decide, honestly, how sure it is of each detection. It is a **beginner-level** module: you do not have to configure anything. Open the site, tap **VERIFICAR** (verify) and read the layered result. The careful work is in the reading: understanding why one technology landed as **DETECTADO** (detected) and another as **POSSÍVEL** (possible), and treating CVE signals as leads, not verdicts. > [!WARNING] > CatEyes queries the open page itself and makes a few light route checks on the same host. Use it only against targets you are **authorized** to analyze. See the responsible-use rules in [Security](https://netcattest.com/catsuite/en/docs/security). ## Core concepts Before reading a report, it helps to understand the terms that appear on the CatEyes screen. - **Multi-layer fingerprint.** The module's core strategy: instead of trusting a single clue, CatEyes gathers signals from several different **layers** and only commits to a detection when the sum is convincing. - **Layer.** Each source of evidence has a layer: **SUPERFÍCIE** (surface: headers and cookies), **DOM** (meta, HTML and ids), **RUNTIME** (JavaScript global objects and selectors), **ASSETS** (scripts, CSS and resources), **PROBES** (light checks of known routes) and **PROTOCOLO** (network protocol and status). - **Signal / evidence.** A single clue found in a layer, with a description and a number of points. Example: "Server header declared Nginx." - **Score.** The sum of the points from all of a technology's evidence. The higher it is, the stronger the detection. - **Confidence level.** The label derived from the score and the number of layers: **DETECTADO** (detected), **PROVÁVEL** (probable) or **POSSÍVEL** (possible). - **Technology and category.** What was recognized (React, WordPress, Nginx...) and which group it falls into (Frontend, CMS, Backend, Infra, Analytics, Editor, Content, Protocol, Security). - **Version.** When CatEyes can extract a technology's version (from a header, a runtime object, a meta tag or an asset URL), it appears on the card and enables the risk cross-check. - **Light probe.** A controlled request to a known route on the same host (for example `/wp-login.php`, or a nonexistent route to read the error page), used to reinforce the detection of a CMS, backend and server. - **Local risk.** The cross-check of the technologies **that have a version** against the local vulnerability database bundled into CatSuite. This is where the CVE signals come from. - **CVE signal.** A record from the local database that matched a technology and its version. It is a **lead to review**, not proof that the target is vulnerable. ## The CatEyes screen: how to open it, panels and sections CatEyes lives inside the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) and always analyzes the **page open at that moment**. That is why it only works when a site is loaded; with no page, the panel shows "Abra um site primeiro" (open a site first). ### How to open CatEyes There are three paths, all leading to the same panel: - **The eye badge in the Browser bar.** The eye icon next to the address opens CatEyes and already hints at the risk through its color (see the table below). - **The Browser options menu.** The **CatEyes** item opens the panel; the item's subtitle summarizes the last result. - **The Tools tab.** In the Browser's tools panel, the **CAT EYES** tab (subtitle "Análise em camadas", layered analysis) sits next to **CONSOLE JS**, **ARMAZENAMENTO** (storage), **MONITOR DE REDE** (network monitor) and **MODIFICADOR DOM** (DOM modifier). ### The summary card and the chips At the top of the panel, a card shows the analyzed URL and a row of *chips* with the overview of the run: | Chip | What it shows | | --- | --- | | **FORTES** (strong) | How many technologies reached the **DETECTADO** level. | | **POSSÍVEIS** (possible) | How many stayed at **PROVÁVEL** or **POSSÍVEL** (below detected). | | **PROBES OK** | How many light *probes* answered without error. | | **VERSÕES** (versions) | How many technologies had a version identified. | | **RISCO** (risk) | Local-risk summary: `AGUARDANDO` (waiting), `SEM VERSÃO` (no version), the top severity with a count, or `VERDE` (green). | | **PROTOCOLO** (protocol) | The navigation `nextHopProtocol` in uppercase (for example `H2`, `H3`), or `N/A`. | ### The CatEyes badge in the bar and its colors The eye badge in the Browser bar changes color according to the last result, so you can feel the risk without opening the panel: | State | Color | Meaning | | --- | --- | --- | | No analysis | Neutral/dark | No analysis has been run yet. | | No version | Blue | There were detections, but no confident version, so the local database was not queried. | | Has flaws | Orange to red | The local database found CVE signals; the color follows the top severity. | | Clean | Green | The local database was queried and returned no known flaws. | > [!NOTE] > When the top severity is **CRÍTICA** (critical) or **ALTA** (high), the badge pulses to draw attention. This is still a signal to review, not a closed diagnosis. ### The analysis sections After **VERIFICAR**, the panel organizes itself into sections, top to bottom: - **Camadas** (layers) — horizontal cards, one per layer, with the signal count and how many technologies touched that layer. - **Tecnologias** (technologies) — the strong results first, each with score, version, aliases and evidence by layer. - **Risco Local** (local risk) — the cross-check of versioned technologies against the local database; this is where the CVE signals appear. - **Probes Leves** (light probes) — the result of each known-route check. - **Avisos** (warnings) — limitations and notes from the run (only shown when there is something to say). ## The six detection layers The layers are the heart of CatEyes. Each detection adds up evidence from one or more of them, and the **Camadas** panel shows how many signals and technologies each one gathered. | Layer | Title in the app | What it observes | | --- | --- | --- | | **SUPERFÍCIE** | Cabeçalhos e Cookies | Response headers (`Server`, `X-Powered-By`, `CF-RAY`...), telltale cookies and CSP domains. | | **DOM** | DOM, Meta e HTML | Meta tags (including `generator` and Open Graph), ids, comments and marks in the HTML. | | **RUNTIME** | Runtime JavaScript | Global objects (`window.jQuery`, `window.Vue`, `__NEXT_DATA__`...) and DOM selectors. | | **ASSETS** | Assets e Paths | Loaded scripts, stylesheets and resources, with version extraction from the URL. | | **PROBES** | Probes Leves | Reinforcement from known routes and error-page signatures. | | **PROTOCOLO** | Protocolo e Rede | The navigation transport protocol and the response status. | > [!TIP] > The more layers point at the same technology, the higher the confidence. A detection that shows up in **SUPERFÍCIE**, **RUNTIME** and **ASSETS** at once is far more solid than one that came from a single asset. ## Confidence levels and scoring CatEyes does not show "yes or no": it shows **how much** it trusts each detection. The score is the sum of the evidence (repeated signals in the same layer do not count twice), and the level comes from fixed thresholds that also take the number of layers into account. | Level | Color | How it is reached | | --- | --- | --- | | **DETECTADO** | Green | 70 points or more; or 52 points or more with at least 2 distinct layers. | | **PROVÁVEL** | Blue | 42 points or more. | | **POSSÍVEL** | Amber | 24 points or more. | | (hidden) | — | Below 24 points the technology is not shown. | **DETECTADO** detections count in the **FORTES** chip; the others (PROVÁVEL and POSSÍVEL) count in **POSSÍVEIS**. Within the list, results are ordered first by level and then by score, so whatever is at the top is the most reliable. If nothing clears the 24-point cutoff, the **Tecnologias** section shows "Sem detecções acima do corte" (no detections above the cutoff). ## Technologies CatEyes recognizes CatEyes has dedicated detectors, grouped by category. Each one looks for that technology's specific clues in the layers where they usually appear. | Category | Recognized technologies | | --- | --- | | **Infra** | Cloudflare, Cloudflare Insights, Varnish, F5 BIG-IP | | **Backend** | PHP, Apache, Nginx, IIS, ASP.NET, Express.js | | **CMS** | WordPress, Elementor, Drupal, Joomla | | **Frontend** | React, Next.js, Vue.js, Nuxt.js, Angular, jQuery, Bootstrap, Tailwind CSS, Lottie | | **Analytics** | Facebook Pixel, Google Tag Manager, Google Analytics, Stripe | | **Editor** | Monaco Editor, Quill, KaTeX | | **Content** | Open Graph | | **Protocol** | HTTP/3 | Each technology card carries the name (with the version when present), a chip with the level and points, the **CAT** chip with the category, the **VERSÃO** chip when the version was extracted, the **RISCO** chip when there are CVE signals, chips with the layers touched and **MATCH** chips with the aliases used in the search. Just below sit the pieces of evidence, one by one, in the format `[LAYER +points] description`. ## CVE signals and local risk The **Risco Local** section is where a detection becomes a security lead. It only runs when at least one technology exposed a **confident version**; with no version there is nothing to compare, and the panel shows "Base local ainda não consultada" (local database not queried yet). When there is a version, CatEyes queries a **local vulnerability database** shipped with the app (a compressed database, read-only, that never leaves the device). It searches by each technology's aliases and, for every record found, compares the **detected version** with the **fixed version** (`fixed in`): - If the detected version is **earlier** than the fixed version, the signal is marked as **version confirmed** (the record is compatible with what is on the page). - If the detected version is **equal to or later** than the fixed one, the record is **discarded** — likely already patched. - If the record **does not state** a fixed version, the signal appears for manual review, with no version confirmation. Each CVE signal carries the severity and the identifier, the package, the detected version, a summary and the fix line. The severities are normalized into four levels: | Severity | Reading | | --- | --- | | **CRÍTICA** (critical) | Top review priority. | | **ALTA** (high) | Priority review. | | **MÉDIA** (medium) | Review depending on context. | | **BAIXA** (low) | Lower urgency, but worth recording. | When the database is queried and nothing matches, the section shows "Sem falhas conhecidas" (no known flaws) and the risk chip turns **VERDE** (green). > [!IMPORTANT] > A CVE signal is a **lead to review**, not proof of a vulnerability. Version detection can be wrong, and a CVE may not apply to the target's specific configuration. Always confirm the real version and the context before any conclusion. ## Options and how to configure CatEyes has no settings screen: the analysis runs with one tap and the parameters below are **fixed**. "Configuring" here means understanding those limits and deciding **when and how** to run so you get the most out of each page. | Option | Values | Default | What it does | | --- | --- | --- | --- | | **Analysis target** | Page open in the Browser | Current page | Defines what will be read; CatEyes never leaves the open site. | | **Verification moment** | Manual | On demand (**VERIFICAR**) | The collection only runs when you tap the button. | | **Probe scope** | Same origin | Fixed | The route checks stay restricted to the current host. | | **Collection timeout** | 24 seconds | 24 s | Aborts the collection if the script takes too long on the page. | | **Display cutoff** | 24 points | Fixed | Hides technologies with a score below the cutoff. | | **Local-risk query** | Automatic when a version exists | On | Cross-checks the detected versions against the local database. | | **Export** | TXT | On demand (**BAIXAR TXT**) | Generates the full report of the last analysis. | How to adjust in practice: let the **page load fully** before verifying, so scripts and runtime objects are already available; **re-verify** after interacting with the page (login, internal navigation) to capture cookies and routes that only appear when authenticated; and run again if the first pass detected nothing — some signals depend on resources that were still loading. ## Buttons and actions | Button / action | What it does | | --- | --- | | **VERIFICAR** | Runs the collection on the current page and scores technologies, layers and local risk. Shows "VERIFICANDO..." (verifying) while it works. | | **BAIXAR TXT** | Exports the last analysis as a text report (`cateyes-.txt`). Stays disabled until an analysis exists. | | **Eye badge (bar)** | Opens CatEyes and signals the risk through color; pulses at critical or high severity. | | **CatEyes item (menu)** | Opens the panel from the Browser options menu. | | **CAT EYES tab (tools)** | Opens CatEyes inside the Browser's tools panel. | When a verification finishes, CatEyes confirms with the message "CatEyes atualizou as assinaturas da página." (CatEyes updated the page signatures). If the collection fails, "Falha ao verificar a página: ..." (failed to verify the page) appears with the reason. On export, the confirmation is "Relatório TXT salvo." (TXT report saved), or with the destination when available. ## Step by step ### Run CatEyes on a page 1. In the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser), open the **authorized** target and wait for the page to load fully. 2. Tap the **eye badge** in the bar, or open the **CAT EYES** tab in the tools. 3. Tap **VERIFICAR**. 4. Wait for the collection (the button shows "VERIFICANDO..."). 5. Read the summary card (**FORTES**, **POSSÍVEIS**, **PROBES OK**, **VERSÕES**, **RISCO**, **PROTOCOLO**) and then the sections below. ### Interpret the detections and the confidence 1. Start with the **Tecnologias** section: the **DETECTADO** (green) items at the top are the most reliable. 2. On each card, check the score and the **evidence by layer** — they explain why that technology was recognized. 3. Use the **Camadas** panel to see where the confidence came from: several layers pointing at the same place is a strong signal. 4. Treat **PROVÁVEL** and **POSSÍVEL** items as hypotheses; confirm with a new verification after the page has loaded everything. ### Review CVE signals responsibly 1. Open the **Risco Local** section. If it shows "Base local ainda não consultada", it is because no confident version was detected. 2. For each signal, note the technology, the **detected version**, the identifier and the **fix** line. 3. Confirm the target's real version by another route before concluding anything — the signal is a lead. 4. Weigh the context: a CVE may not apply to that server's specific configuration. ### Export the TXT report 1. With an analysis on screen, tap **BAIXAR TXT**. 2. CatEyes generates `cateyes-.txt` with summary, technologies, local risk, layers, headers, cookies, probes and warnings. 3. Keep the report alongside your authorized-test evidence. ## Examples Header of the TXT report (summary section): ```text CAT EYES URL: https://target.com/ Origem: https://target.com Titulo: Authorized target Status: 200 Lang: en Protocolo: h2 Banco local: consultado Severidade maxima: ALTA Tecnologias com versao: 3 Falhas conhecidas: 2 ``` A detected technology, as it appears in the report: ```text - WordPress 6.4 | DETECTADO | 123 pontos Categoria: CMS Aliases de busca: wordpress, wordpresscore Camadas: DOM, Probes * [DOM +68] Meta generator declarou WordPress. * [Probes +34] O endpoint /wp-json/ respondeu com status 200. ``` A CVE signal in the local-risk section: ```text - CVE-0000-00000 | ALTA | jquery Resumo: Short description of the known flaw. Fixed in: 3.5.0 Alias: jquery | Versao detectada: 3.4.1 ``` The result of a light probe: ```text - WordPress login (HEAD /wp-login.php) -> 200 URL final: https://target.com/wp-login.php ``` ## Common problems and frequently asked questions **"Abra um site primeiro" (open a site first).** — CatEyes needs a loaded page. Search the web or type a URL in the Browser before opening the module. **"Nada analisado ainda" (nothing analyzed yet).** — You opened the panel but have not run the collection. Tap **VERIFICAR**. **"Sem detecções acima do corte" (no detections above the cutoff).** — The page did not expose enough signals this round. Wait for loading to finish and verify again; very lean or protected pages may simply not reveal the stack. **"Base local ainda não consultada" (local database not queried yet).** — No technology exposed a confident version, so there was nothing to cross-check. This is common and expected on many sites. **The RISCO chip shows `SEM VERSÃO` (no version).** — There were detections, but no version. The CVE cross-check depends on an identified version. **"Falha ao verificar a página: ..." (failed to verify the page).** — The collection did not complete (the 24 s timeout, a page block or a script error). Reload the page and try again. **The numbers change between verifications.** — That is normal: resources, cookies and runtime objects vary with what has already loaded. Verify with the page fully ready. **CatEyes flags a CVE — is the target vulnerable?** — Not necessarily. The signal is a lead based on the detected version and the local database. Confirm the real version and the context. See also [Error reference](https://netcattest.com/catsuite/en/docs/reference/errors). ## Good practices and responsible use - Analyze **authorized targets only**; see [Security](https://netcattest.com/catsuite/en/docs/security). - Let the page **load fully** and, when it makes sense, **re-verify** after login or internal navigation. - Read the **score and the evidence**, not just the technology name — they show how much to trust. - Treat every **CVE signal as a lead**: confirm the version and context before concluding. - Export the **TXT report** to record the state of the analysis alongside your evidence. ## Next step - [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) - [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) - [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [Modules overview](https://netcattest.com/catsuite/en/docs/modules) --- # Repeater > Complete guide to the CatSuite Repeater module: how to use the highlighted HTTP editor, header autocomplete, resend, compare responses and configure SSL/TLS. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/repeater - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/repetir The **Repeater** is CatSuite's manual traffic module. It combines an HTTP editor with syntax highlighting, header autocomplete, unlimited resending of the same request, a side-by-side response comparison mode and per-send SSL/TLS control. It is the ideal workbench to change one field at a time, fire again and understand the exact effect of each adjustment on the target's behavior. This page explains what each feature does, how to configure the module and how to use the Repeater in real authorized testing flows. > [!NOTE] > The Repeater performs manual, precise replay of individual requests. To automate many variations at once, the right module is the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder). ## What the Repeater module is and what it is for The Repeater receives a raw request — from the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser), [History](https://netcattest.com/catsuite/en/docs/modules/history), the [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) or an [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) result — and lets you edit it freely in raw form (request line, headers and body). Each time you tap **SEND**, the module fires the request and keeps the full response, with status, time, size and content type. You can resend as many times as you want, step back and forward through the edit history and turn on comparison mode to measure the difference between two variations. The screen header makes the module's intent clear: the **MANUAL TRAFFIC** tag, the **REPEATER** title and the summary "Edit, review versions and compare responses." ## Core Repeater concepts Before opening the screen, it helps to fix the terms that appear in buttons, chips and settings. ### Raw request and the HTTP editor with syntax highlighting The **raw request** is the HTTP text exactly as it goes on the wire: the request line (`METHOD target HTTP/1.1`), the headers (one per line, in `Name: value` form), a blank line and finally the body. The Repeater editor applies **syntax highlighting** to that text: the method is shown in yellow, the `HTTP/…` version in gray, the target in blue, header names in cyan, the colons in light gray and the values in green. The Intruder payload markers, in the `§chunk§` form, appear highlighted on a cyan background, which lets you prepare positions without leaving the Repeater. ### Header autocomplete When you are on a header line that does not yet have a colon, the Repeater shows **HEADER SUGGESTIONS** chips with the most common headers (Authorization, Content-Type, User-Agent, Accept, Cookie, Origin, Referer and others). Tapping a chip inserts the header name and the `: ` on the current line, with the cursor ready for the value. The list is filtered by what you typed: start writing `Au` and only the headers that begin with that prefix appear. ### Manual resending and edit history Each send is a manual, independent fire. The editor keeps an **edit history** of the request: the back and forward arrows walk through the versions you have typed (the panel subtitle shows `history N/total`), working like request-specific undo and redo. This way you try a variation, fire it, go back to the previous text and try another, without losing the path you took. ### Response comparison mode (A/B) With comparison mode on, a separate **request B** appears. You keep request A intact, edit B as a variation and compare request and response in a table: method, host, target, header count (and how many differ), body size and changed lines; and, for the responses, status, time, size, content type and whether the body ended up the same or different. ### Per-send SSL/TLS control The Repeater lets you decide, per send, how to treat the transport layer. With **SSL/TLS** on, the HTTPS send negotiates TLS normally; off, the send forces HTTP even if the original target was on HTTPS. There is also the option to **ignore certificate errors**, useful in the lab when the target presents an invalid or self-signed certificate. For a dedicated inspection of certificate, chain and protocol, use the [SSL/TLS Analyzer](https://netcattest.com/catsuite/en/docs/modules/ssl-tls). ### View modes: Raw, Hex and Render Both the request and the response have a view switcher. **RAW** shows the editable text (on the request) or the full response with status, headers and body (on the response). **HEX** shows a read-only hexadecimal dump. **RENDER**, available only on the response, does a local render for HTML and shows a formatted tree for JSON. | Term | What it is | Where it appears | | --- | --- | --- | | Raw request | Raw HTTP text, editable line by line | REQUEST panel | | Syntax highlighting | Colors by method, header, value and marker | RAW editor | | Autocomplete | Common header chips on the current line | REQUEST panel | | A/B comparison | Separate request B and difference table | A/B COMPARISON panel | | Per-send SSL/TLS | TLS and certificate switches | Settings | ## The Repeater screen: panels, tabs and modes The screen is a scrollable column with four main blocks, from top to bottom. ### Manual execution card The first card, **MANUAL EXECUTION**, holds the fire controls: the **SEND** button, the **CLEAR** button and the settings icon that opens the configuration. During a send, SEND becomes CANCEL (and CANCELING while the interruption completes). ### REQUEST panel The **REQUEST** panel holds the editor of the main request. At the top there are summary chips (METHOD, HOST, TARGET and BODY size), the history arrows, the RAW/HEX switcher, the COPY button and, when it makes sense, the header suggestion chips. If the first line does not yet have method, target and `HTTP/1.1`, the panel shows a notice explaining what is missing instead of the technical summary. ### A/B comparison panel When comparison mode is on, the **A/B COMPARISON** panel appears between the request and the response. It shows a **B READY** or **B EMPTY** badge, the REQUEST and RESPONSE summary tables, the comparison action buttons, the request B chips and the **REQUEST B** editor. ### RESPONSE panel The **RESPONSE** panel shows the response of the last send. It brings STATUS, TIME, SIZE and TYPE chips, the RAW/HEX/RENDER switcher, the COPY button and, when CatSuite detects formats in the body (JWT, Base64, JSON and the like), a **DETECTED CONTENT** strip with chips that open the decode of that chunk. > [!TIP] > The RESPONSE panel also offers scroll shortcuts: when you scroll down a lot, a floating button lets you jump quickly back to the top of the page. ## Repeater options and how to configure them Tap the settings icon on the execution card to open the **REPEATER SETTINGS** sheet ("Configure the editor, SSL/TLS and the cURL export."). The switches are persistent: CatSuite keeps your choice across sessions. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Header autocomplete | On / Off | On | Suggests Authorization, Content-Type, User-Agent and other common headers while you type a header name. | | HTTP colors | On / Off | On | Turns the visual highlight of method, request line, headers and values on or off in the editor. | | Enable SSL/TLS | On / Off | On | When off, the send forces HTTP even if the original target is on HTTPS. | | Ignore certificate errors | On / Off | Off | Accepts invalid certificates during the HTTPS send; only available with SSL/TLS on. | | Keep default template on clear | On / Off | On | Sets whether CLEAR returns to the `GET exemplo.com` template or leaves the editor empty. | | Comparison mode | On / Off | Off | Shows a separate request B to compare variations without overwriting the main request. | To adjust each one: keep **Header autocomplete** on while building requests from scratch and turn it off if the chips get in the way of typing. **HTTP colors** is only visual comfort — turn it off if you prefer monochrome text. **Enable SSL/TLS** should stay on for real HTTPS targets; turn it off only to force HTTP in lab tests. **Ignore certificate errors** should be used only in your own authorized environment, because it disables a transport protection. **Keep default template on clear** is a productivity preference. And **Comparison mode** you turn on when you want to measure two variations in parallel. > [!WARNING] > Ignoring certificate errors disables TLS chain validation on the send. Use it only in a lab, staging or your own explicitly authorized network, never against third-party targets. At the bottom of the sheet there is the **EXPORT AS cURL** button, which generates the `curl` command equivalent to the current request (respecting the SSL/TLS choice) and copies it to the clipboard. ## Repeater buttons and actions ### Execution card buttons | Button | What it does | | --- | --- | | SEND | Fires request A. During the send it becomes CANCEL; while interrupting, it shows CANCELING. | | CLEAR | Empties the response and the editor, respecting the "Keep default template on clear" option. | | Settings icon | Opens the REPEATER SETTINGS sheet. | ### REQUEST panel buttons | Button | What it does | | --- | --- | | Back arrow | Goes back one version in the request edit history (undo). | | Forward arrow | Goes forward one version in the edit history (redo). | | RAW / HEX | Switches the editor between editable raw text and a read-only hexadecimal dump. | | COPY | Copies the current request to the clipboard. | | Header suggestion chip | Inserts the chosen header on the current line, ready for the value. | ### A/B comparison buttons | Button | What it does | | --- | --- | | USE A AS B | Copies request A into the request B field. | | SWAP A/B | Swaps requests A and B (and their fallback URLs). | | SEND B / CANCEL B | Fires request B; during the send it becomes CANCEL B. | | COPY B | Copies request B. | | CLEAR B | Resets request B and its response. | ### Editor context menu When you select text in the editor, a Repeater-specific action bar appears. | Action | What it does | | --- | --- | | COPY | Copies the selection. | | PASTE | Pastes the clipboard content (only in the editable editor). | | DECODE | Sends the selection to the [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder). | | NOTES | Sends the selection to the Notepad. | | ALL | Selects the whole text of the block. | | REQUEST / RESPONSE | Copies the entire block (request or response). | ## Step by step: how to use the Repeater ### Resend a request several times 1. Send a request to the Repeater from the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), [History](https://netcattest.com/catsuite/en/docs/modules/history) or another module. 2. Check the METHOD, HOST and TARGET chips and adjust the raw request in the editor. 3. Tap **SEND** and read the STATUS, TIME, SIZE and TYPE chips in the RESPONSE panel. 4. Change one field, fire again and use the history arrows to compare with the previous version. ### Compare two responses side by side 1. Open the settings and turn on **Comparison mode**. 2. In the A/B COMPARISON panel, tap **USE A AS B** to clone the current request or paste a second full request into the REQUEST B editor. 3. Edit request B with the variation you want to test. 4. Tap **SEND** (A) and **SEND B** and read the summary tables to see where A and B diverge in status, size, type and body lines. ### Adjust the SSL/TLS of a send 1. Open the Repeater settings. 2. For a real HTTPS target, keep **Enable SSL/TLS** on. 3. In a lab with an invalid certificate, turn on **Ignore certificate errors**. 4. To test the behavior without TLS, turn off **Enable SSL/TLS** and resend; the module then uses HTTP. ### Take the request to the Intruder 1. In the editor, mark the payload positions by wrapping the chunk with the `§` delimiter, in the `§value§` form. The markers are highlighted on a cyan background. 2. Check the result — the Repeater shows where each marker falls in the request. 3. Forward the request to the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) using the "Send to the Intruder" shortcut available in the Interceptor, or copy the request and paste it into the Intruder editor. 4. In the Intruder, use **AUTODETECT** or **MARK SELECTION** to confirm the positions and configure the attack. ## Request examples A simple GET request in raw form, same as the module's initial template. ```http GET / HTTP/1.1 Host: exemplo.com User-Agent: Cat Suite Accept: */* ``` A POST request with a JSON body. Note the blank line separating the headers from the body. ```http POST /api/login HTTP/1.1 Host: exemplo.com Content-Type: application/json Accept: application/json {"user":"alice","password":"change"} ``` A request with a position marked for the Intruder using the `§` delimiter. ```http GET /account/§id§ HTTP/1.1 Host: exemplo.com User-Agent: Cat Suite ``` The command generated by the EXPORT AS cURL action. ```bash curl --request GET 'https://exemplo.com/' --header 'User-Agent: Cat Suite' --header 'Accept: */*' ``` ## Common problems and frequently asked questions (FAQ) **The send says "Paste a valid request to send".** The editor is empty. Paste or type a complete raw request before tapping SEND. **The technical summary does not appear.** The first line needs method, target and `HTTP/1.1`, and the request needs a `Host` header (or a full URL on the first line). The panel shows exactly what is missing. **The send failed with a TLS error.** The target may have an invalid certificate or an incompatible protocol. In an authorized environment, turn on **Ignore certificate errors**; to diagnose the connection, use the [SSL/TLS Analyzer](https://netcattest.com/catsuite/en/docs/modules/ssl-tls). **I canceled the send by mistake.** The module shows "Send canceled." and keeps the request intact. Just tap SEND again. **I need to test many variations.** The Repeater is for manual replay. To walk through payload lists automatically, take the request to the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) with the [Wordlists](https://netcattest.com/catsuite/en/docs/modules/wordlists). **Request B disappeared when another module sent a new request.** Request B stays separate from the main one and remains intact: the imported request replaces only A. > [!IMPORTANT] > The Repeater generates real traffic against the target on every send. Use it only within an authorized scope and with the care described on the [Security](https://netcattest.com/catsuite/en/docs/security) page. ## Next step - [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [History](https://netcattest.com/catsuite/en/docs/modules/history) - [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) - [SSL/TLS Analyzer](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) - [Modules overview](https://netcattest.com/catsuite/en/docs/modules) --- # Intruder > CatSuite Intruder: how to use and configure payload markers, wordlists, generators, payload processors, attack pacing and result filtering by status and size. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/intruder - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/intruso The **Intruder** is CatSuite's request automation module: it takes a **base request**, replaces the **marked positions** with each **payload** from a wordlist or a generator, fires the sends at the pace you set and keeps every response for you to **trim and filter**. It is the right tool for value enumeration, parameter testing, controlled fuzzing and behavior checks whenever you need to repeat the same request dozens or thousands of times changing only one piece. This page explains each concept, each option and how to configure the Intruder step by step, always against an authorized target. > [!WARNING] > The Intruder generates real automated traffic. Use it only against systems you have written authorization to test and keep the pace responsible. See [Security and responsible use](https://netcattest.com/catsuite/en/docs/security). ## What the Intruder is and what it is for The Intruder solves a simple repetition problem: instead of editing and resending a request by hand in the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater), you mark **where** the value changes, choose **which** values to test and let the module walk the whole list. Each send becomes a row in the **attack log**, with status, size and time, ready for comparison. Typical use cases: - Enumerate sequential identifiers (for example `id=1` to `id=500`) to check access control. - Test a list of usernames, paths or parameters against an endpoint. - Vary the value of a header or form field and watch how the response changes. - Measure size and time differences between the normal response (the **probe**) and each variation. The Intruder is a **local HTTP client**: it builds and sends the requests from the device itself, with no intermediate servers. The session history is saved in the app storage, so you can **pause and resume** without losing progress. ## Essential Intruder concepts Before you configure anything, it helps to understand the terms on screen. Each concept below maps directly to a button or panel in the module. ### Payload markers: marking the positions A **payload marker** indicates the exact point in the request where each value from your list will go. In the Intruder you do **not** type the marker by hand: the **AUTO-DETECT** and **MARK SELECTION** buttons wrap the chosen span in a **pair of markers**, and each position then shows up as a `P1`, `P2`, `P3`… chip in the **CURRENT MARKERS** list. In the editor, the marked span is highlighted between the delimiter pair (`§value§`). > [!NOTE] > The payload marker is the same idea as the `$CAT$` token that the [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) uses literally in the URL. The difference is that in the Intruder the marker is inserted by the buttons around an existing span, instead of typed. To remove all markers, use **CLEAR** on the REQUEST tab. Auto-detection understands three field formats: - **Query string** in the URL (`?key=value&key2=value2`). - **Form** `application/x-www-form-urlencoded` in the body (`field=value`). - **JSON** in the body (it marks the values of each `"key": value` pair). ### Wordlists and payload generators The values that go into the positions come from one of two **sources**: - **Wordlist** — a list of lines, built in or imported by you. The built-in lists and the ones created in the app settings appear in the **INTRUDER WORDLIST** picker. Importing, the `.txt` format and validation are covered in [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists). - **Dynamic generator** — builds a numeric sequence on the fly, from a range and affixes. Useful when you do not have a file, only a range (for example `user-001` to `user-250`). ### Distribution modes When there is **more than one marked position**, the **distribution mode** decides how the lists are combined across the markers. There are four modes, each with a different total estimate, detailed in the **Distribution and combination modes** table below. ### Payload processors A **processor** is a transformation applied to each payload **before** the send. You build a **chain** of steps (URL encoding, Base64, hashing, case change, Unicode escaping, affixes) and the steps are applied **in the order** they appear. It is the same mechanism as the [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder), reused to prepare the values at attack time. ### Probe and baseline On start, the Intruder first sends the request **without markers** — the **probe**. The probe response becomes the **baseline** against which each variation is compared. From it the module computes, for each result: - **Size delta** — the difference, in bytes, between the response and the probe. - **Similarity** — a 0 to 100 index (by bigrams) between the response body and the probe body. - **Different from probe** — whether the body equals or differs from the baseline. ### Result trimming and filtering **Trimming** and **filtering** refine what the log shows, without resending anything. You can filter by **status**, **size**, **time**, search for **words** anywhere in the result and apply **GREP** (keep what matches a pattern) or **EXTRACT** (pull a span of the response via regex). ### Pacing and session **Pacing** combines two options: the **delay** (fixed wait between attempts) and the **requests per second** (rate cap). The Intruder honors the larger interval of the two. The **session** is persisted to disk, so pausing, leaving and coming back keeps request, markers, payloads and results. ## The Intruder screen: pages, tabs and panels The Intruder has two pages: **Preparation** (where you build the attack) and **Flow** (where you follow the results). You switch between them with **VIEW FLOW** and with the back button on the flow page. ### Preparation page Preparation is split into three tabs at the top: **TARGET**, **REQUEST** and **PAYLOADS**. The REQUEST tab shows a counter with the number of active markers. ### TARGET tab Defines the destination and the network. The **MAIN TARGET** field accepts a host (`target.example`) or a full URL — the Intruder keeps only **host, protocol and port**, discarding path, query and extra slashes. Below it are the **PROTOCOL** (HTTPS/HTTP), the **PORT**, the **DELAY**, the **REQUESTS PER SECOND** and the **TLS tolerance** switch. The chips at the top summarize the current setup (target, delay, pace and strict/flexible TLS). ### REQUEST tab Holds the base-request editor and the marking actions: **AUTO-DETECT**, **MARK SELECTION** and **CLEAR**. Right below, **CURRENT MARKERS** lists the `P1`, `P2`… chips and a **preview** with the positions highlighted. When the request arrives imported from the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) or the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater), the Intruder already tries to mark the fields automatically. ### PAYLOADS tab Gathers, in this order: the **distribution-mode tiles**; (when there are two or more markers in Aligned or Combinations mode) the **per-marker source chips**; the **PAYLOAD SOURCE** choice (WORDLIST or DYNAMIC GENERATOR); the configuration of the chosen source; and the **PROCESSORS**. ### Flow page (results) Shows three counters — **PROCESSED**, **RESPONSES** and **FAILURES** — and the **ATTACK LOG**. Each result is a card with the run `#`, status, size, time, the payload and a snippet of the response. The **FILTERS** button opens the trimming panel; **CLEAR** resets the active filters. Long-press a result to open the copy and send menu. ## Intruder options and how to configure them The table below gathers the target, network and pacing options on the TARGET tab. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Protocol | HTTPS, HTTP | HTTPS | Sets the send scheme and suggests the port (443 or 80) | | Port | 1 to 65535 | 443 (HTTPS) / 80 (HTTP) | Destination port; drops from the `Host` header when it is the protocol default | | Main target | host or URL | empty | Attack destination; keeps only host, protocol and port | | Delay | 0, 50, 100, 250, 500, 750, 1000 ms | 0 (no delay) | Fixed wait before starting the next attempt (accepts 0 to 60000) | | Requests per second | 0, 1, 2, 3, 5, 10, 20 | 0 (free) | Rate cap; 0 does not limit and honors only the delay (accepts 0 to 1000) | | Ignore certificate errors | On, Off | Off (strict TLS) | Accepts invalid or self-signed TLS certificates | To **configure the target**, paste the host or URL into the MAIN TARGET field; if you paste a URL with protocol and port, the Intruder adjusts the buttons and the field automatically. Choose **HTTPS** or **HTTP** — when you switch, the default port (443/80) is filled in when the field is empty or holds the other protocol's default port. Leave **Ignore certificate errors** off on public targets; turn it on only in test environments with your own certificate. To **adjust the pace**, think of two stacked brakes. The **delay** guarantees a minimum pause after each send; use larger values (250 to 1000 ms) on sensitive targets. The **requests per second** cap the peak: at `5 REQ/S`, the Intruder spaces the sends to at most five per second. At `0` (free), there is no rate cap and the only brake is the delay plus the natural response time. > [!TIP] > When both are active, the larger interval wins. `DELAY 500 MS` with `5 REQ/S` results in one send every 500 ms, because 500 ms is greater than the 200 ms required by 5 req/s. ### Payload source: wordlist and dynamic generator On the PAYLOADS tab, choose **WORDLIST** to use a ready list or **DYNAMIC GENERATOR** to build a sequence. With WORDLIST selected, tap **WORDLIST** to open the **INTRUDER WORDLIST** picker: the built-in lists appear first and yours, created in the settings, right below. The picker refreshes the lists every time it opens. The **dynamic generator** builds numbers over a range. The fields are: | Field | Values | Default | What it does | | --- | --- | --- | --- | | Start | integer | 1 | First number in the sequence | | End | integer greater than or equal to the start | 25 | Last number (inclusive) | | Step | integer greater than 0 | 1 | Increment from one number to the next | | Padding | integer | 0 | Left-pads with zeros up to this width (0 disables) | | Prefix | text | empty | Fixed text before the number | | Suffix | text | empty | Fixed text after the number | The **Current estimate** line shows how many payloads the configuration will generate. The total is `((end - start) / step) + 1`. With Start `1`, End `5`, Step `1` and Padding `3`, the sequence is `001, 002, 003, 004, 005`; with Prefix `user-`, it becomes `user-001`… `user-005`. ### Distribution and combination modes With two or more marked positions, the mode decides how the lists cross. The estimated total appears on the Combinations tile. | Mode | What it does | Estimated total | | --- | --- | --- | | Per marker | One list, one marker at a time (the others keep the original value) | Sum of the sizes | | All markers | The same item in all markers at once | Size of the first list | | Aligned | One list per marker, by the same index | Smallest size among the lists | | Combinations | Cartesian product of all lists | Product of the sizes | **All markers** is the default. **Combinations** has a cap of **10,000** combinations; above that the attack is blocked to avoid huge runs. In **Aligned** and **Combinations** modes with two or more markers, the **per-marker source chips** appear, letting you use a different list in each position; without an override, each marker uses the global source. ### Payload processors and the transformation chain In the **PROCESSORS** section, tap the add button and pick a step. Each chip can be reordered (up/down) or removed; the chain is applied **in order**. | Processor | Options | What it does | | --- | --- | --- | | URL | — | Encodes the payload in percent-encoding | | BASE64 | — | Encodes the payload in Base64 | | JSON | — | Escapes the payload as a JSON string | | HASH | MD5, SHA-1, SHA-256, SHA-512 | Replaces the payload with its hash | | AFFIXES | prefix, suffix | Adds text before and/or after the payload | | CASE | UPPERCASE, LOWERCASE, INVERT | Changes letter case | | UNICODE | — | Escapes non-ASCII characters as `\uXXXX` | > [!TIP] > Order matters. `AFFIXES` after `BASE64` adds the text to the already encoded value; before it, it encodes the text together with the affixes. Build the chain around the format the target expects. ## Buttons and actions | Button | Where | What it does | | --- | --- | --- | | AUTO-DETECT | REQUEST tab | Detects and marks query, form and JSON fields | | MARK SELECTION | REQUEST tab | Marks the selected span in the editor as a position | | CLEAR | REQUEST tab | Removes all markers from the request | | WORDLIST / DYNAMIC GENERATOR | PAYLOADS tab | Switches the payload source | | WORDLIST (picker) | PAYLOADS tab | Opens the list of built-in and user wordlists | | Add processor | PAYLOADS tab | Appends a transformation step to the chain | | VIEW FLOW | Preparation | Opens the results page | | START INTRUSION | Preparation | Sends the probe and fires the attack | | PAUSE / RESUME | During the run | Pauses and resumes without losing progress | | STOP INTRUSION | During the run | Ends the running session | | FILTERS | Flow | Opens the trimming and filtering panel | | CLEAR (filters) | Flow | Removes all active filters | | Long-press a result | Flow | Opens the copy and send-to-Repeater menu | The result menu (long-press) offers: **Send to the Repeater**, **Copy URL**, **Copy request**, **Copy headers**, **Copy body**, **Copy response**, **Copy payload** and **Copy cURL**. ## Step by step ### 1. Send a request and mark automatically 1. In the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) or the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater), use **Send to the Intruder**. 2. The Intruder opens with the request already pasted and tries to mark the fields. Check the `P1`, `P2`… chips in CURRENT MARKERS. 3. If something was missed, select the span in the editor and tap **MARK SELECTION**. To start over, tap **CLEAR** and then **AUTO-DETECT**. ### 2. Attack with a wordlist on one position 1. On the **TARGET** tab, confirm host, protocol and port. 2. On the **REQUEST** tab, mark the position (a single marker). 3. On the **PAYLOADS** tab, keep **WORDLIST**, tap the picker and choose the list. 4. Adjust the pace on the TARGET tab (for example `DELAY 250 MS` and `5 REQ/S`). 5. Tap **START INTRUSION** and watch the **ATTACK LOG** on the flow page. ### 3. Dynamic generator with processors 1. Mark the position that takes the number (for example `id=` in the body or query). 2. On the PAYLOADS tab, choose **DYNAMIC GENERATOR** and fill in Start, End, Step and Padding. 3. Check the **Current estimate**. 4. Under **PROCESSORS**, add the steps you need (for example `AFFIXES` and then `BASE64`). 5. Start the attack. ### 4. Two positions with Aligned or Combinations modes 1. Mark **two** positions (for example username and password). 2. On the PAYLOADS tab, choose the mode: **Aligned** to test pairs by index, **Combinations** to cross everything. 3. Use the **per-marker source chips** to give one list to each position. 4. Check the estimate (remember the 10,000 cap in Combinations) and start. ### 5. Trim and filter the results 1. On the flow page, tap **FILTERS**. 2. Under **TRIM**, turn on **DIFFERENT** to see only what changed from the probe, or **SIZE** and enter the `|delta| min.`. 3. For text, turn on **GREP** (keep what matches) or **EXTRACT** (pull a group) and type the regex. 4. Under **METHOD AND STATUS**, select codes like `200` or classes like client/server. 5. Tap **APPLY**; the button shows how many results remain. Use **CLEAR** to return to the full list. ## Examples Base request before marking, with an ID field in the query: ```http GET /api/orders?id=1024 HTTP/1.1 Host: target.example Accept: application/json ``` After **AUTO-DETECT**, the value of `id` is wrapped by the marker pair (the position shows up as `P1`): ```http GET /api/orders?id=§1024§ HTTP/1.1 Host: target.example Accept: application/json ``` Dynamic-generator sequence with Start 1, End 5, Step 1, Padding 3 and Prefix `user-`: ```text user-001 user-002 user-003 user-004 user-005 ``` Request actually sent in one of the runs, with the payload in place of the marker: ```http GET /api/orders?id=1031 HTTP/1.1 Host: target.example Accept: application/json ``` ## Common problems and FAQ **The attack does not start and I am sent back to the PAYLOADS tab.** There are no valid payloads: choose a wordlist with lines or check the generator (End must be greater than or equal to Start). Blank lines are ignored. **I typed the marker in the editor and it did not work.** In the Intruder the marker is not typed. Select the span and use **MARK SELECTION**, or **AUTO-DETECT**. The literal `$CAT$` token belongs to the [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer). **Combinations got blocked.** The product of the lists exceeded 10,000. Reduce the lists, switch to **Aligned** or use **Per marker**. **All results disappear when I filter.** Some filter is too strict (a regex that does not match, a high delta, a narrow status). Tap **CLEAR** in the filters panel and refine little by little. **I keep getting certificate errors.** In a test environment with your own certificate, turn on **Ignore certificate errors**. In production, keep TLS strict and investigate the certificate. **I closed the app mid-attack.** The session is saved to disk: when you reopen the Intruder, request, markers, payloads and results come back, and you can **RESUME**. > [!IMPORTANT] > Always start with a small list and a low pace to validate the markers and the probe response. Only then scale up the volume. This avoids firing thousands of requests over a marking mistake. ## Best practices and security > [!DANGER] > High-volume automation can take a service down. Fire the Intruder only against targets you are authorized to test and agree on the pace with the system owner. - Prefer the smallest volume that answers your question; do not test the whole range when a sample is enough. - Use delay and a requests-per-second cap on third-party targets. - Always compare against the **probe**: a size or status delta outside the pattern is more informative than the raw list. - Forward the interesting results to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) and dig into them one by one. ## Next step - [Wordlists and payloads](https://netcattest.com/catsuite/en/docs/modules/wordlists) - [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [Security and responsible use](https://netcattest.com/catsuite/en/docs/security) --- # Discoverer > CatSuite Discoverer: how to use and configure path, parameter and endpoint discovery with wordlists, HTTP methods, controlled pacing and automatic 429 backoff. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/discoverer - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/descobridor The **Discoverer** is CatSuite's content discovery module: it walks a **wordlist** of paths or parameters and applies each entry to a **base URL** that carries the `$CAT$` marker, testing combinations against an authorized target to reveal directories, endpoints and parameters that do not show up in normal browsing. The module controls pacing with **requests per second**, an extra **delay** and **automatic 429 backoff**, filters what it captures by **status** and **size**, and preserves the session so you can **pause and resume** where you left off. This page explains every concept, every option and how to configure the Discoverer step by step. ## What the Discoverer is and what it is for The Discoverer performs content *fuzzing* (also called content discovery or directory brute forcing). Instead of relying only on a site's visible links, it tests a list of likely names — `admin`, `backup`, `api/v1`, `.git`, `id`, `token` and thousands more — and watches how the server answers each one. Paths and parameters that exist but are not published usually give themselves away through the status code, the response size or a redirect. It is an **intermediate-level** module: you pick the wordlist, the HTTP method and the pace, then interpret the findings. The Discoverer is built to run continuously and safely on Android, reading large wordlists as a *stream* (line by line, without loading everything into memory) and respecting pacing limits so it overloads neither the target nor the device. > [!WARNING] > Discovery fires many requests in sequence. Use the Discoverer only against targets you are **authorized** to test. See the responsible-use rules in [Security](https://netcattest.com/catsuite/en/docs/security). ## Core concepts Before configuring, it helps to understand the terms that appear on screen and in the logs. - **Wordlist.** A text file with one entry per line. Each line is a candidate (a path or parameter name). The Discoverer ships built-in lists and also reads yours; see [Wordlists](https://netcattest.com/catsuite/en/docs/modules/wordlists). - **Base URL with `$CAT$`.** The target address with the `$CAT$` marker at the exact spot where the wordlist word should go. For each entry, the Discoverer replaces `$CAT$` with the word and sends the request. - **Candidate / keyword.** The wordlist entry being tested in that request. In the results it is shown as the **keyword**. - **Requests per second (RPS).** The base pace: how many requests the module tries to fire each second. - **Delay (extra delay).** An extra fixed pause between one attempt and the next, added on top of the RPS pace. - **Effective interval.** The real spacing between requests. The Discoverer always honors the **larger** of the interval required by the RPS and the extra delay, so you never run faster than you asked. - **429 backoff.** When the server answers `429 Too Many Requests`, the module automatically waits a few seconds before continuing, to ease the service. - **Automatic retry.** When a request fails with a *timeout*, the module tries again automatically, up to a retry limit. - **Initial check (pre-flight).** Before walking the wordlist, the Discoverer sends a test `GET` to the base URL to validate connectivity with the target. - **Capture filters.** **Status** and **size** rules that decide which responses become results (matches) and which are merely processed and discarded. - **Resumable session.** The run state is saved to disk. If the app goes to the background, closes or crashes, you can resume from the entry where you stopped. ## The Discoverer screen: panels, tabs and indicators The module has three screens, reached from the execution screen: - **Execution** — where you enter the URL, start the scan and watch the log and the results. - **Settings** — wordlist, method, pace, filters and display options (the **CONFIGURAÇÕES** button / settings icon). - **Headers** — request identity: User-Agent, Accept, Referer, Origin, IP spoofing and other headers. ### Execution screen At the top sit the **URL com `$CAT$`** field and the settings button. Just below, a row of chips summarizes the active configuration: wordlist name, method, RPS, delay, log state (`LOG ON`/`LOG OFF`), `RETRY AUTO`/`SEM RETRY`, `429 AUTO`/`429 OFF`, compact or full counting, a headers summary and the **effective step** in milliseconds. During a run you also see `EM EXECUÇÃO` (running), `PAUSADO` (paused) or `PAUSA AUTOMÁTICA` (auto-paused). Three indicators track progress: | Indicator | What it shows | | --- | --- | | **PROCESSADAS** (processed) | How many entries have been tested, as `current / total` of the wordlist. | | **RESULTADOS** (results) | How many responses matched the status and size filters. | | **FALHAS** (failures) | How many attempts failed (timeout or unexpected error). | Below the indicators are the **LOG DA EXECUÇÃO** (run log, when enabled) and **RESULTADOS DETALHADOS** (detailed results) panels. Both have a **full-screen** button, and the results panel has a **filters** button. ## Directory and parameter bases and wordlists The Discoverer ships with two built-in bases, and you can add your own in [Wordlists](https://netcattest.com/catsuite/en/docs/modules/wordlists). | Built-in wordlist | What it is for | Entries | | --- | --- | --- | | **Catsuite diretórios e API** (default) | Enumerating paths and endpoints (directories, routes and API resources). | 4,750 | | **Catsuite parâmetros** | Testing parameter names and query/field variations. | 6,453 | To choose a base, open **Settings → WORDLIST** and tap the list you want. The built-in bases appear first; your imported wordlists appear under **WORDLISTS DO USUÁRIO** (user wordlists) below them. If you have no custom list yet, the **ADICIONAR WORDLIST** button opens the import screen. > [!TIP] > Use **Catsuite diretórios e API** to map paths (`https://target.com/$CAT$`) and **Catsuite parâmetros** to discover parameters (`https://target.com/search?$CAT$=cat-suite`). Very large wordlists switch to **safe mode** and are read as a *stream*, without freezing the device. ## HTTP methods: GET, POST, PUT and DELETE The chosen **method** is applied to every attempt generated by the wordlist. Open **Settings → MÉTODO HTTP** to change it. | Method | When to use | | --- | --- | | **GET** (default) | Light reads to map paths and endpoints. The first choice for most discovery. | | **POST** | A bodyless send to test behaviors that depend on the method (routes that answer only to POST). | | **PUT** | Useful for variations of routes that respond to resource updates. | | **DELETE** | Tests responses that are conditional on the DELETE method. | > [!WARNING] > `PUT` and `DELETE` can **change or remove** data on the target. Use them only with explicit authorization and in environments where you understand the effect of each request. ## Discoverer options and how to configure them The table below gathers the options on the **Settings** tab. The next section explains how to adjust each one. | Option | Values | Default | What it does | | --- | --- | --- | --- | | **Wordlist** | Built-in bases or your lists | Catsuite diretórios e API | The list of entries the module will walk. | | **HTTP method** | GET, POST, PUT, DELETE | GET | The method applied to every attempt. | | **Requests per second** | 1 to 6 | 2 | The base pace for firing requests. | | **Extra delay** | 0, 100, 250, 500, 750, 1000 ms | 250 ms | A fixed extra pause between attempts. | | **Automatic 429 backoff** | On / off | On | An automatic wait when a `429` arrives. | | **Automatic retry** | On / off | On | Retries requests that fail on timeout (up to 3 attempts). | | **Filter by status** | Codes 100–599, comma-separated | `200,204,301,302,307,308,401,403` | Which status codes become results. | | **Filter by minimum size** | Bytes (≥ 0) | 0 (off) | The minimum response size to become a result. | | **Show log** | On / off | On | Shows the full run log. | | **Show compact count** | On / off | On | Abbreviates large numbers (thousand / million / billion). | | **Enable headers** | On / off | Off | Applies the custom headers from the Headers tab. | ### Pace: requests per second Open **REQUISIÇÕES POR SEGUNDO** and pick from **1 to 6 RPS**. Values up to 2 are lighter for long runs; 3 and 4 are balanced; 5 and 6 are more aggressive, yet still controlled for a phone. The default is **2 RPS**. This value sets the base interval between requests (1000 ms divided by the RPS, rounded up): | RPS | Base interval | | --- | --- | | 1 | 1000 ms | | 2 | 500 ms | | 3 | 334 ms | | 4 | 250 ms | | 5 | 200 ms | | 6 | 167 ms | ### Extra delay Open **DELAY EXTRA** and pick **SEM DELAY** (0 ms) or **100, 250, 500, 750 or 1000 ms**. The delay is a fixed pause added to the pace. The Discoverer always honors the **larger interval** between the one required by the RPS and the delay: with 2 RPS (500 ms) and a 250 ms delay, the effective step stays 500 ms; with 6 RPS (167 ms) and a 500 ms delay, the effective step becomes 500 ms. The **EXECUÇÃO SEGURA** (safe execution) panel on the settings screen shows the "`N` MS EFETIVOS" value computed from your choices. ### Automatic 429 backoff Keep **BACKOFF 429 AUTOMÁTICO** on (default) so the module slows down on its own when the server answers `429 Too Many Requests`. On the first `429` in a run, the Discoverer waits **5 seconds** before the next attempt; if the `429`s keep coming, the wait rises to **10 seconds**. When a response other than `429` arrives, the count resets. The log records each pause with the message "429 recebido. Backoff automático aplicado por `N`s antes da próxima tentativa." ### Automatic retry With **REPETIÇÃO AUTOMÁTICA** on (default), every request that fails on a *timeout* is retried automatically, for **up to 3 attempts** total. Off, each entry is tested **once**. Failures that are not timeouts (unexpected errors) count straight as a **FAILURE** and are not retried. ### Display options - **MOSTRAR LOG** controls the **LOG DA EXECUÇÃO** panel. With the log off, the screen shows only the results and gives them more room. - **MOSTRAR CONTAGEM COMPACTA** abbreviates large numbers (for example, `12 mil` instead of `12.000`). Off, the indicators show the full value with a thousands separator. ## Capture filters by status and size These two filters, on the **Settings** tab, decide what counts as a **result** during the scan. - **Filter by status.** A comma-separated list of HTTP codes. Only responses with one of these codes become results. The default `200,204,301,302,307,308,401,403` covers success (`200`, `204`), redirects (`301`, `302`, `307`, `308`) and telling access denials (`401`, `403`). Codes from **100 to 599** are accepted. Leave the field **empty** to capture every status. - **Filter by minimum size.** The minimum response size, in **bytes**. Responses smaller than this value are processed but do not become results. Useful for discarding short, templated error pages. The default **0** turns the size filter off. > [!NOTE] > These filters act at capture time. To refine afterwards, without rerunning the scan, use the **results filters** (see below). Responses that do not match are discarded from disk to save space. ## Buttons and actions | Button / action | What it does | | --- | --- | | **CONFIGURAÇÕES** / **CONFIG.** | Opens the Discoverer settings tab. | | **CONFIGURAR** | Appears instead of start when no configuration is saved yet; opens settings. | | **INICIAR** | Starts the scan (after the initial check). | | **PAUSAR** | Pauses the run, preserving the current wordlist position. | | **RETOMAR** | Continues from the entry where the session was paused. | | **PARAR** | Interrupts and ends the current run. | | **LIMPAR** | Clears the log, results and the temporary session. | | **SALVAR** | Saves the settings and returns to execution. | | **CANCELAR** | Discards the changes in settings. | | **Filter** icon | Opens the results filters. | | **Full-screen** icon | Expands the log or the results. | | **VER RESPONSE** | Opens the full saved response of a result. | | **LIMPAR FILTROS** | Removes the filters applied to the results. | ### Per-result actions Tap a result to see its details (**PALAVRA-CHAVE**/keyword, **URL**, **CONTENT-TYPE**, **LOCATION** when present, and **PRÉVIA**/preview). Long-press (or use the menu) to open the copy actions: | Action | What it does | | --- | --- | | **Enviar para o Repetir** | Opens the request in the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater). | | **Copiar URL** | Copies the final tested URL. | | **Copiar headers** | Copies the headers sent in the request. | | **Copiar body** | Copies the sent body (when present). | | **Copiar cURL** | Copies the request as a `curl` command. | ## Headers and request identity On the **Headers** tab, turn on **ATIVAR HEADERS** to apply custom headers to **every** Discoverer request, including the initial check and the wordlist loop. With headers on, you set **User-Agent**, **Accept-Language**, **Accept**, **Content-Type**, **Referer**, **Origin**, **Sec-Fetch-Site** and an **IP spoof** (header and value). With the option off (default), the Discoverer uses the system's default headers. The `HEADERS` chip on the execution screen shows `DESATIVADOS` (off), `PADRÃO` (default) or `PERSONALIZADO` (custom). ## Step by step ### Map a target's directories 1. Open the Discoverer and tap **CONFIGURAÇÕES**. 2. Under **WORDLIST**, choose **Catsuite diretórios e API**. 3. Leave **MÉTODO HTTP** on **GET**. 4. Set **REQUISIÇÕES POR SEGUNDO** to **2** and **DELAY EXTRA** to **250 MS** (safe defaults). 5. Check **Filter by status** (default) and leave **Filter by minimum size** at `0`. 6. Tap **SALVAR**. 7. In the **URL com `$CAT$`** field, type `https://target.com/$CAT$`. 8. Tap **INICIAR**. The module runs the initial check and starts the scan. 9. Watch **PROCESSADAS**, **RESULTADOS** and **FALHAS**, and open the findings under **RESULTADOS DETALHADOS**. ### Discover parameters 1. In **CONFIGURAÇÕES → WORDLIST**, choose **Catsuite parâmetros**. 2. Save and return to execution. 3. In **URL com `$CAT$`**, place the marker on the parameter name, for example `https://target.com/search?$CAT$=cat-suite`. 4. Tap **INICIAR** and watch for status and size variations that point to valid parameters. ### Send a finding to another module 1. Under **RESULTADOS DETALHADOS**, tap the result you care about. 2. Open the action menu and tap **Enviar para o Repetir**. 3. In the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater), adjust the request and resend it. To automate variations, take it to the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder). ## Examples Base URL for path enumeration: ```text https://target.com/$CAT$ ``` Base URL for parameter discovery: ```text https://target.com/search?$CAT$=cat-suite ``` A status filter that captures success, redirects and access denials: ```text 200,204,301,302,307,308,401,403 ``` A request copied from a result as a cURL command (**Copiar cURL** action): ```bash curl 'https://target.com/api/v1/users' ``` ```bash curl -X POST -H 'Content-Type: application/json' --data-raw '{}' 'https://target.com/api/login' ``` ## Pause, resume and session recovery The Discoverer periodically saves the run state to disk. This enables: - **Manual pause and resume.** Tap **PAUSAR** to stop at the current point and **RETOMAR** to continue from the same entry. - **Automatic pause.** When you send the app to the background during a scan, the module pauses on its own to preserve the wordlist position (the `PAUSA AUTOMÁTICA` chip). When you return, the run resumes. - **Recovery after shutdown.** If the app is closed or crashes, reopening the Discoverer shows a recovered-session message and lets you **RETOMAR** from the entry where you stopped, with the findings preserved. > [!IMPORTANT] > Session recovery depends on it being enabled in CatSuite's settings. Full responses are saved in the session's temporary files; the module keeps only the most recent sessions and clears old ones automatically. ## Common problems and FAQ **"Inclua `$CAT$` na URL..." (include `$CAT$` in the URL)** — The base URL must contain the `$CAT$` marker at the spot where the word goes. Without it, the module does not know where to apply the wordlist. **"A URL informada não é válida." (the URL is not valid)** — Review the address. If you leave out the scheme, the Discoverer assumes `https://` automatically and tells you. **The initial check failed on timeout.** — Check your connection, VPN and whether the target is up before starting. The initial check is a test `GET` to the base URL. **Lots of `429`s showing up.** — The target is rate-limiting you. Keep **automatic 429 backoff** on, lower the **RPS** and raise the **delay**. See also [Error reference](https://netcattest.com/catsuite/en/docs/reference/errors). **No results, only processed.** — The **status** or **size** filters may be too strict. Empty the status field to capture every code, or set the minimum size back to zero. **The configured wordlist is not available.** — Open settings and pick another wordlist, or reimport the custom list in [Wordlists](https://netcattest.com/catsuite/en/docs/modules/wordlists). **Many FAILURES.** — Frequent timeouts point to an unstable network or a slow target. Lower the RPS, keep automatic retry on and check the connection. ## Best practices and responsible use - Test **authorized targets only**. Discovery is intense by nature; see [Security](https://netcattest.com/catsuite/en/docs/security). - Start with a **low RPS** and a moderate **delay**; raise the pace only once you are sure the target can take it. - Keep **429 backoff** and **automatic retry** on for more polite behavior toward the service. - Use the **status and size filters** to separate signal from noise right at capture. - Forward relevant findings to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) and the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) instead of rerunning the whole scan. ## Next step - [Wordlists](https://netcattest.com/catsuite/en/docs/modules/wordlists) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [Modules overview](https://netcattest.com/catsuite/en/docs/modules) --- # Decoder > CatSuite Decoder: how to use and configure auto-detection of JWT, Base64, URL, Hex, HTML Entities and Binary, plus the JWT/JWE inspector and MD5 and SHA hashes. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/decoder - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/decodificar The **Decoder** is CatSuite's data transformation bench: you paste or send a value from traffic and the module **recognizes the format**, shows the readable content and also **generates and identifies hashes**. It brings together, on a single screen, the **auto-detection** of JWT, Base64, URL, Hex, HTML Entities and Binary, support for **Base64URL** and **Unicode**, dedicated inspectors for **JWT**, **JWT signatures** and **JWE**, and the generation of **MD5, SHA-1, SHA-256 and SHA-512**. This page explains each concept, each option and how to use and configure the Decoder step by step, in the simplest way for someone just getting started. > [!NOTE] > All Decoder processing happens **locally**, on the device itself. Nothing is sent to external servers. Tokens, secrets and pasted text stay inside the app. ## What the Decoder is and what it is for During a test, traffic is full of "scrambled" values: a percent-encoded parameter in the URL, a Base64 cookie, a JWT token in the `Authorization` header, a body with HTML entities, a hexadecimal dump. The Decoder is the tool that **translates** these values back into readable text, and also does the **reverse** (encoding) when you need to build a value to resend. Typical use cases: - Read the contents of a **JWT token** (header and payload) without relying on external sites. - Decode a **Base64** or **Base64URL** parameter or cookie to see what it carries. - Turn **%20**, `<`, **Hex** bytes or **binary** blocks back into text. - **Generate** the hash of a value (MD5, SHA-1, SHA-256, SHA-512) to compare with another. - **Identify** quickly which hash type a captured string is, by its length. - Inspect a **JWE** envelope and find out which encryption algorithms it uses. The Decoder is an **analysis helper**: it does not send requests or change the target. It is the natural companion of the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) and the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser), which send chunks of traffic to it. ## Essential Decoder concepts Before you touch the options, it helps to understand the terms on screen. Each concept below maps to a format, a panel or a button in the module. ### Encode and decode **Encoding** turns readable text into a transport format (for example, plain text to Base64). **Decoding** is the opposite: it starts from the transport format and recovers the readable text. In the **FORMATS** panel, a switch chooses between the two modes for the selected format. ### URL (percent-encoding) **URL** encoding replaces special characters with `%XX`. A space becomes `%20`, a `{` brace becomes `%7B`, and so on. It is the format of query parameters and `application/x-www-form-urlencoded` forms. When decoding, the Decoder turns `%20` back into a space and rebuilds the original text. ### Base64 **Base64** represents bytes using 64 printable characters (`A-Z`, `a-z`, `0-9`, `+`, `/`) with `=` padding. It is very common in APIs, cookies, blobs and headers. The Decoder treats the text as UTF-8 bytes when encoding and rebuilds the text when decoding. ### Base64URL **Base64URL** is the **URL-safe** variant: it swaps `+` and `/` for `-` and `_` and usually **drops the `=`** padding. It is the format of the three segments of a **JWT** and of many links and tokens. When encoding to Base64URL, the Decoder removes the `=` padding; when decoding, it restores the needed padding automatically. > [!TIP] > If a value has `-` and `_` instead of `+` and `/`, or does not end in `=`, it is probably **Base64URL**, not standard Base64. ### Hexadecimal **Hexadecimal** (Hex) shows each byte as two digits from `0` to `f`. The Decoder displays the bytes separated by a space, in the `48 65 78` pattern. When decoding, it ignores separators and characters outside `0-9a-f` and rebuilds the bytes two at a time. ### HTML Entities **HTML entities** escape characters with meaning in markup: `<` becomes `<`, `>` becomes `>`, `&` becomes `&`, `"` becomes `"` and `'` becomes `'`. The Decoder converts both ways and also resolves **numeric entities** such as `é` (decimal) and `é` (hexadecimal), which point to **Unicode** code points. ### ASCII / Binary The **ASCII / Binary** format shows each byte as an **8-bit** block (`01001000`), separated by a space. When decoding, the Decoder requires blocks of exactly 8 bits containing only `0` and `1`, and rebuilds the text from them. ### Unicode and UTF-8 The Decoder treats text as **UTF-8** in every conversion. This means accented characters, emoji and any Unicode code point **survive** encoding and decoding Base64, Hex and Binary. There is no separate "Unicode" button: Unicode support is **intrinsic** to the module and, in the case of HTML Entities, it also shows up as the numeric entities `&#...;` and `&#x...;`, which are resolved to the matching Unicode character. ### JWT (JSON Web Token) A **JWT** has three parts separated by a dot: **header**, **payload** and **signature**, each in Base64URL. The **header** states the algorithm (`alg`) and type (`typ`); the **payload** carries the claims (such as `sub`, `exp`, `iat`); the **signature** guarantees integrity. The **JWT Inspector** splits, decodes and formats the first two parts as JSON, converts `exp` into a readable date and lets you **rebuild** the token after editing the payload. > [!IMPORTANT] > The Decoder reads the JWT **locally** and **does not validate the signature** — that would require the key or secret. When you edit the payload and rebuild, the original signature is kept, so the reconstructed token will most likely be **invalid** for the server. ### JWT signatures (algorithm families) The **JWT and signatures** panel reads the `alg` field in the header and classifies the signature into a **family** and a **type**: - **HMAC (HS256/384/512)** — **symmetric** signature: the same shared secret signs and validates. - **RSA (RS256/384/512)** — **asymmetric** signature with PKCS#1 v1.5: the private key signs, the public key validates. - **RSA-PSS (PS256/384/512)** — modern RSA variant with PSS padding, also asymmetric. - **ECDSA (ES256/384/512)** — elliptic curves with a key pair, asymmetric. - **EdDSA** — modern family (usually Ed25519/Ed448), asymmetric. - **none** — header with `alg=none`: the token is **not signed**. ### JWE (JSON Web Encryption) A **compact JWE** has **five** segments: **protected header**, **encrypted key**, **initialization vector (IV)**, **ciphertext** and **authentication tag**. The **JWE Inspector** reads only the **protected header** (the envelope's public metadata) and identifies `alg` (key management), `enc` (content encryption), `zip`, `cty`, `typ` and `kid`. > [!WARNING] > The JWE Inspector **does not decrypt** the payload. Without the right key, the content stays encrypted; the module only shows the envelope. ### Hashes A **hash** is a fixed-size fingerprint of a piece of content. The Decoder **generates** MD5, SHA-1, SHA-256 and SHA-512 from the text (as UTF-8 bytes) and also **identifies** a captured hash by its length in hexadecimal characters: 32 (MD5), 40 (SHA-1), 64 (SHA-256) and 128 (SHA-512). A hash is a one-way street: it is **not reversible**. ### Smart Decode (auto-detection) **Smart Decode** is the module's "magic": you paste a value and it **tries several formats automatically**, showing a card for each plausible detection. It recognizes **JWT**, **JWE**, **URL**, **Base64**, **Base64URL**, **Hex**, **HTML Entities** and **ASCII/Binary**, and only shows a result when it differs from the input and looks **readable** (above 85% printable characters), keeping "garbage" off the screen. ## The Decoder screen: home page, panels and tabs The Decoder opens on a **home page** with the `DECODIFICAR` title and the summary "Analyze strings, tokens and hashes quickly". Six entries branch off from it, each with an icon, a short description and a summary chip on the right. Tap an entry to open its page; on each page, the **DECODIFICAR** shortcut at the top (with the arrow) returns to the home page. | Entry | What it opens | Summary shown | | --- | --- | --- | | FORMATS | Encode and decode URL, Base64, Base64URL, Hex, HTML Entities and ASCII/Binary | The current format (e.g. `URL`) | | JWT INSPECTOR | Split header, payload and signature, convert `exp` and rebuild the token | `JWT` | | JWT AND SIGNATURES | Classify HS/HMAC, RS/RSA, PS/RSA-PSS, ES/ECDSA and symmetric vs. asymmetric | `HS / RS / ES` | | JWE INSPECTOR | Read the protected header and split the 5 segments of the compact JWE | `JWE` | | HASHES AND CRYPTO | Generate MD5, SHA-1, SHA-256, SHA-512 and identify hashes | The current algorithm (e.g. `SHA-256`) | | SMART DECODE | Auto-detection of JWT, Base64, URL, Hex, HTML Entities and Binary | `MÁGICA` | Every page shares the same structure: an **INPUT** field to paste the value, a row of **action buttons** and one or more **RESULT** blocks. The result blocks are **selectable**: press and hold to copy or to send a snippet back to Smart Decode itself. ## Decoder options and how to configure them The Decoder options live on the **FORMATS** and **HASHES AND CRYPTO** pages. The table below gathers them all. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Mode (FORMATS) | DECODE, ENCODE | DECODE | Sets the direction of the conversion for the selected format | | Format | URL, BASE64, BASE64URL, HEXADECIMAL, HTML ENTITIES, ASCII / BINARY | URL | Chooses which transformation is applied to the input | | Algorithm (HASHES) | MD5, SHA-1, SHA-256, SHA-512 | SHA-256 | Chooses the algorithm used by GENERATE HASH | To **configure FORMATS**, start with the **MODE**: leave it on **DECODE** to read a captured value, or switch to **ENCODE** when you want to produce a value to resend. Then tap the chip for the **FORMAT** you want — the description right below explains what that format does. Paste the content into **INPUT** and tap **RUN**. The result appears under **RESULT**; use **USE OUTPUT** to push the result back into the input and **chain** conversions (for example, decode Base64URL and then read the JSON). To **configure HASHES**, tap the **ALGORITHM** chip (MD5, SHA-1, SHA-256 or SHA-512) before generating. Paste the content into **INPUT** and use **GENERATE HASH**. If what you pasted is already a hash and you want to know which one, tap **IDENTIFY**: the module looks at the length in hexadecimal characters and states the likely type. > [!TIP] > The **hash algorithm** only affects the **GENERATE HASH** button. **IDENTIFY** works for any hexadecimal hash, regardless of the algorithm selected in the chips. ## Buttons and actions Each page has its own set of buttons. The table gathers what each one does. | Button | Page | What it does | | --- | --- | --- | | RUN | Formats | Applies the current format and mode to the input | | USE OUTPUT | Formats | Copies the result back into the input field | | COPY | Formats | Copies the result to the clipboard | | ANALYZE | JWT Inspector | Splits and decodes header, payload and signature | | COPY TOKEN | JWT / JWE Inspector | Copies the original token from the input | | REBUILD TOKEN | JWT Inspector | Recreates the token from the edited payload | | COPY REBUILT | JWT Inspector | Copies the reconstructed token | | ANALYZE SIGNATURE | JWT and signatures | Classifies the signature family and type | | USE TOKEN FROM INSPECTOR | JWT and signatures | Brings over the token already pasted in the JWT Inspector | | ANALYZE JWE | JWE Inspector | Splits the 5 segments and reads the protected header | | GENERATE HASH | Hashes and crypto | Generates the hash of the input with the chosen algorithm | | IDENTIFY | Hashes and crypto | States the likely hash type by its length | | COPY HASH | Hashes and crypto | Copies the generated hash | | MÁGICA | Smart Decode | Runs auto-detection over the input | | CLEAR | Smart Decode | Clears the input and the results | | USE AS INPUT | Smart Decode | Uses the text received from traffic as input | | OPEN JWT / OPEN JWE | Smart Decode | Opens the detected token in the matching inspector | ## Step by step ### 1. Decode a simple format value 1. On the home page, open **FORMATS**. 2. Keep the **MODE** on **DECODE**. 3. Choose the **FORMAT** (for example, **BASE64**). 4. Paste the value into **INPUT** and tap **RUN**. 5. Read the **RESULT**. If it is still encoded in another format, tap **USE OUTPUT** and repeat with the next format. ### 2. Encode a value to resend 1. In **FORMATS**, switch the **MODE** to **ENCODE**. 2. Choose the target format (for example, **URL** for a query parameter). 3. Type or paste the readable text into **INPUT** and tap **RUN**. 4. Use **COPY** and take the value to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) or the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor). ### 3. Inspect and rebuild a JWT 1. Open the **JWT INSPECTOR** and paste the full token into **JWT TOKEN**. 2. Tap **ANALYZE**. See the colored view (HEADER, PAYLOAD, SIGNATURE), the **HEADER DECODED** block and, if there is an `exp`, the **exp TIMESTAMP** converted to local date. 3. Edit the JSON in **EDITABLE PAYLOAD** if you want to test a variation. 4. Tap **REBUILD TOKEN** and then **COPY REBUILT**. 5. Remember: the old signature is kept, so the rebuilt token tends to be rejected by the server that validates the signature. ### 4. Classify a JWT signature 1. Open **JWT AND SIGNATURES**. If the token is already in the Inspector, tap **USE TOKEN FROM INSPECTOR**; otherwise, paste it into **JWT TOKEN**. 2. Tap **ANALYZE SIGNATURE**. 3. Read the **SIGNATURE SUMMARY** (`ALG`, `TYPE`, `FAMILY`, `typ`) and the **CLASSIFICATION**, which explains the key flow and lists the algorithms in the same family. ### 5. Read a JWE envelope 1. Open the **JWE INSPECTOR** and paste the compact JWE (5 segments) into **JWE TOKEN**. 2. Tap **ANALYZE JWE**. 3. See the **ENVELOPE SUMMARY** (`alg`, `enc`, `zip`, `cty`, `typ`, `kid`), the 5-segment view and the **PROTECTED HEADER DECODED** block. ### 6. Generate and identify hashes 1. Open **HASHES AND CRYPTO**. 2. To generate: choose the **ALGORITHM**, paste the content into **INPUT** and tap **GENERATE HASH**. Use **COPY HASH** to carry the value forward. 3. To identify: paste the hash into **INPUT** and tap **IDENTIFY**. The module responds with the likely type by length. ### 7. Paste or send a value from traffic 1. In the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor), the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) or any selectable text in the app, **select** the snippet. 2. In the selection menu, tap **DECODE** (or use **Send to Decoder**). The app shows the message "Analysis sent to the Decoder". 3. The Decoder opens **SMART DECODE** with the snippet in **RECEIVED TEXT** and runs auto-detection right away. 4. Tap **USE AS INPUT** to edit and reprocess, or **OPEN JWT** / **OPEN JWE** when a token is detected. 5. In the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser), use **Detect JWT / Base64 in storage** to send tokens and values from the page storage straight here. > [!TIP] > If you prefer, paste the value manually into **MAGIC INPUT** and tap **MÁGICA**. The result is the same as the auto-detection coming from traffic. ## Examples URL decoding (percent-encoding): ```text nome%3DCat%20Suite%26id%3D1024 ``` ```text nome=Cat Suite&id=1024 ``` Base64 and Base64URL with the same content: ```text Q2F0U3VpdGU= ``` ```text CatSuite ``` Hexadecimal in space-separated bytes: ```text 48 65 78 ``` ```text Hex ``` HTML entities, including a numeric Unicode entity: ```text <b>café</b> ``` ```text café ``` Binary blocks of 8 bits: ```text 01001000 01101001 ``` ```text Hi ``` A sample JWT and its first two decoded parts: ```text eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ``` ```json { "alg": "HS256", "typ": "JWT" } ``` ```json { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } ``` Hashes of the text `CatSuite` in each algorithm: ```text MD5 08aa3451f325a5ffebb46df10aec9ecf SHA-1 30a1abc0a012cd7a49f469d698d7881df04b201e SHA-256 10f3dfd0bb7f1fb99bbe8fd16816ad6e5ca012be645c2a0660d50a45ecfb7961 SHA-512 1824976bbd707e6d646ff5fbb5ea3d9171d8ba3882d9ef6e81e84c34ea1a52f3ea097123e30420037917cd78bcd3df2f89cd794a3d9faa840330c5ca785aa58f ``` Identification by length in hexadecimal characters: ```text 32 characters -> MD5 40 characters -> SHA-1 64 characters -> SHA-256 128 characters -> SHA-512 ``` ## Common problems and FAQ **I pasted a Base64 and the result came out "dirty" or empty.** It may be **Base64URL** (with `-` and `_`), not standard Base64. Switch the format to **BASE64URL**. Also check that there are no line breaks or stray spaces pasted along; the module strips spaces, but truncated content will not decode. **The Hex does not decode.** The Hex decoder needs an **even** number of hexadecimal digits. Characters outside `0-9a-f` are ignored, but if a lone digit is left over, the conversion fails. Paste the complete bytes. **The Binary gave an error.** Use blocks of exactly **8 bits** containing only `0` and `1`, separated by a space. Any other character invalidates the input. **The JWT does not open.** A JWT needs at least **header and payload** separated by a dot, and both must be valid JSON in Base64URL. Truncated tokens, extra quotes or half-pasted content will not pass. **I edited the payload and the token "broke".** That is expected. The Decoder **keeps the original signature** when rebuilding and **does not sign** again (it has no key). The rebuilt token is for study, not for fooling a server that validates the signature. **The JWE does not show the content.** The JWE Inspector reads **only the envelope** (protected header and segments). The payload stays **encrypted**: without the right key, there is no way to decrypt it. **IDENTIFY said "the length does not match".** The value is hexadecimal, but it is not 32, 40, 64 nor 128 characters. It may be a hash from another algorithm, a truncated value or something that is not a hash. **Smart Decode detected nothing.** It only shows results that **differ from the input** and that look **readable**. A value that is already plain text, or that decodes to unreadable bytes, produces no card. Try the specific format on the **FORMATS** page. > [!DANGER] > The Decoder never validates signatures or decrypts protected content. Do not treat a JWT read here as "trusted" just because the payload opened: local reading **does not prove** the token's authenticity. ## Next step - [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) - [SSL/TLS](https://netcattest.com/catsuite/en/docs/modules/ssl-tls) - [Security and responsible use](https://netcattest.com/catsuite/en/docs/security) --- # SSL/TLS > CatSuite SSL/TLS Analyzer: how to use and configure handshake triage, TLS version, cipher suite, chain validation to the root, fingerprints and expiry. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/ssl-tls - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/ssl-tls The **SSL/TLS Analyzer** is the CatSuite module that triages the secure connection of an authorized host. You enter a domain or URL (with the port, when it is not 443), tap **CHECK**, and the module performs the **TLS handshake**, shows the negotiated **protocol version** and **cipher suite**, validates the **certificate chain up to a trusted root** in Android, checks the **hostname**, calculates the **SHA-256 and SHA-1 fingerprints** of every certificate and displays the **validity dates** with the days remaining. This page explains every term, every panel on the screen, and how to use and configure the module to diagnose TLS failures in the lab. > [!NOTE] > The SSL/TLS Analyzer is a read-only diagnostic tool. It only opens TLS connections and reads what the server presents; it does not send HTTP requests or change any system setting. The chain verdict always comes from Android's own store of trusted authorities. ## SSL/TLS concepts used in the module Before reading the results, it helps to pin down the terms that appear in the chips, labels and messages on the screen. ### TLS and SSL **TLS** (_Transport Layer Security_) is the protocol that protects HTTPS and other services: it encrypts the traffic and lets the client confirm the server's identity through certificates. **SSL** is the name of TLS's predecessor and is still used day to day as a synonym, which is why the module is called SSL/TLS. In practice, what the analyzer negotiates and shows are the modern TLS versions, such as `TLSv1.3` and `TLSv1.2`. ### TLS handshake The **handshake** is the initial negotiation between client and server, before any application data. During it, both sides agree on the protocol version and the cipher suite, the server presents its certificate chain and both derive the session keys. The analyzer measures how long this step takes and shows the result in the **Handshake time** field, in milliseconds. If the handshake does not complete, the triage fails and the error message appears on the screen. ### Protocol version and cipher suite The **protocol version** is the TLS edition both sides agreed to use, such as `TLSv1.3`. The **cipher suite** is the combination of algorithms chosen for the session: key exchange, symmetric cipher and integrity function, for example `TLS_AES_128_GCM_SHA256` or `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`. Old versions and weak ciphers point to configurations that deserve attention in the report. ### SNI (Server Name Indication) **SNI** is a TLS extension in which the client states, right at the start of the handshake, which hostname it wants to reach. This lets a single IP address serve several sites, each with its own certificate. On Android, when the target is a domain name, that name is sent in the negotiation as SNI. When the target is an IP address, there is no name to indicate, and the server usually answers with a default certificate, which often leads to **HOSTNAME FAILED**. ### Certificate chain: leaf, intermediates and root The server does not present a single certificate but a **chain**. The first one is the **leaf certificate**, issued for the host. Next come the **intermediates**, which link the leaf to a certificate authority. At the top sits the **root**, the authority the system trusts directly. Each certificate is signed by the next one, and **validating the chain up to the root** means checking those signatures one by one until a trusted authority is reached. ### Trusted root and the Android store A **trusted root** (_trust anchor_) is a certificate authority present in the device's trust store. The analyzer uses Android's default validator to decide whether the presented chain ends at one of these roots. Self-signed certificates, certificates issued by a private CA, or chains with missing intermediates do not reach a trusted root and produce **CHAIN WITH ALERT**. ### Hostname verification and SAN A valid chain is not enough: the leaf certificate must have been issued **for the host being accessed**. This check uses the **Subject Alternative Names** (SAN), the list of domains and addresses the certificate covers. The result appears in the **HOSTNAME OK** or **HOSTNAME FAILED** chip, and the SAN entries of each certificate appear as chips on its card. ### SHA-256 and SHA-1 fingerprints A **fingerprint** is the hash of the whole certificate, calculated over its encoded form. Two identical certificates have the same fingerprint, and any difference, however small, changes the value completely. That makes the fingerprint the safest way to compare certificates and record them as evidence. The module shows each value in uppercase hexadecimal, with the bytes separated by colons. **SHA-256** is the recommended reference; **SHA-1** is shown for compatibility with older inventories and tools. ### Validity dates Every certificate has a start (_not before_) and an end (_not after_) of validity. Outside that interval, the certificate must be rejected. The analyzer shows both dates in the `dd/mm/yyyy hh:mm` format, in the device's time zone, and summarizes the situation as days remaining, expiring today, or expired. | Term | What it is | Where it appears in the module | | --- | --- | --- | | Handshake | Initial TLS negotiation | Handshake time, loading and error messages | | Protocol version | Negotiated TLS edition | Negotiated TLS and the TLS Versions panel | | Cipher suite | Combination of session algorithms | Negotiated cipher suite and the Cipher Suites panel | | SNI | Hostname sent at the start of the handshake | Influences the certificate received and the hostname chip | | Chain | Leaf, intermediates and root | Certification chain card | | Trusted root | Authority present in the Android store | CHAIN OK or CHAIN WITH ALERT chip and chain message | | SAN | Names covered by the certificate | Chips on each certificate card | | Fingerprint | SHA-256 or SHA-1 hash of the certificate | Session Summary and each certificate card | | Validity | Start and end of the valid period | Validity, Expiration status and validity chip | ## The SSL/TLS Analyzer screen The screen is a scrollable column. The header and the input panel sit at the top; below them, the result area changes according to the state of the triage. ### Module header The header shows the **SSL/TLS ANALYZER** tag, the **CERTIFICATES AND TLS SESSION** title and the summary "Analyze certificates, TLS, ciphers, and fingerprints." ### TARGET HTTPS panel The **TARGET HTTPS** panel holds the address field (with the "Your URL" hint) and the **CHECK** button. While the analysis runs, the button shows **ANALYZING** with a progress indicator and is disabled, and the panel displays "Connecting, negotiating TLS and validating the chain...". ### Result area states | State | What appears | | --- | --- | | Before the first analysis | "No analysis done yet" card, reminding you that the analyzer identifies the host automatically to verify the certificate. | | In progress | "Performing TLS handshake, validating the chain and calculating fingerprints." card. | | Error | "SSL/TLS parsing failed" card, with the detailed message of the problem. | | Completed | Session Summary, Certification chain, TLS Versions and Cipher Suites cards. | ### Session Summary The **SESSION SUMMARY** card ("See the host, certificate, and TLS session.") starts with three verdict chips and continues with the main connection data. | Item | What it shows | | --- | --- | | CHAIN OK / CHAIN WITH ALERT | Green when the chain reaches a trusted root and the hostname matches; orange otherwise. | | HOSTNAME OK / HOSTNAME FAILED | Result of checking the host against the leaf certificate. | | VALID CERTIFICATE / OUT OF VALIDITY | Status of the leaf certificate at the current date and time. | | Host | Host and port actually analyzed, in the `host:port` format. | | Normalized target | Final address used in the analysis, always in `https://`. | | Negotiated TLS | Protocol version accepted in the handshake. | | Negotiated cipher suite | Cipher suite chosen for the session. | | Handshake time | Duration of the handshake, in milliseconds. | | Validity | Start and end of the leaf certificate's validity. | | Expiration status | Days remaining, expiring today, or how many days ago it expired. | | Fingerprint SHA-256 | SHA-256 hash of the leaf certificate, with a copy button. | | SHA-1 Fingerprint | SHA-1 hash of the leaf certificate, with a copy button. | | Chain message | Colored strip explaining the chain verdict. | The final strip repeats the color of the chain chip. It shows "The certificate chain was successfully validated for the provided host.", "The chain was accepted, but the hostname does not match the certificate that was presented." or the reason returned by the Android validator when the chain is not accepted. ### Certification chain The **CERTIFICATION CHAIN** card states how many certificates were observed during the handshake and lists one card per certificate, in the order the server sent them. Each card has a role chip (**LEAF**, **INTERMEDIATE 1**, **INTERMEDIATE 2** and so on, and **ROOT**) and the "Valid now" or "Outside validity period" indicator. | Field | What it shows | | --- | --- | | Subject | Distinguished name of the holder, such as `CN=example.com`. | | Issuer | Distinguished name of whoever signed the certificate. | | Serial | Serial number in uppercase hexadecimal. | | Signature | Signature algorithm, such as `SHA256withRSA`. | | Public key | Public key algorithm, such as `RSA` or `EC`. | | Validity | Start and end of that certificate's validity. | | Status | Days remaining or how many days ago it expired. | | SAN chips | Alternative names covered, when present. | | SHA-256 and SHA-1 | Fingerprints of that certificate, each with a copy button. | > [!IMPORTANT] > Each certificate's role follows its position in the list sent by the server: the first one is the leaf and the last one gets the root label. Many servers do not send the root, only the leaf and an intermediate. In that case, the card marked **ROOT** is actually the last intermediate; check its **Issuer** field to find out which authority closes the chain. ### TLS Versions The **TLS VERSIONS** card ("See the protocol and accepted TLS versions.") shows a highlighted chip with the negotiated version and one chip for each version the server accepted in individual tests. Below, the **Versions visible on the device** line lists the TLS versions the device itself supports. ### Cipher Suites The **CIPHER SUITES** card ("See the negotiated cipher suite and available options.") contains the **Negotiated** line and a list of chips. The first, highlighted chip is the negotiated cipher suite; the others are cipher suites supported by the device, in alphabetical order and without the insecure categories (null, anonymous, RC4 and 3DES), limited to the first 18. With more than six chips, the list becomes a horizontally scrolling strip. > [!NOTE] > The Cipher Suites chip list describes what the **device** offers, not everything the server accepts. The data that comes from the server is the negotiated cipher suite. ## SSL/TLS Analyzer options and how to configure them The module has no settings sheet of its own: the triage depends on the address you enter and on two general CatSuite switches. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Address field (TARGET HTTPS) | Domain, URL, `host:port`, IPv4 or bracketed IPv6 | Empty | Sets the host and port of the triage; path, query and fragment are discarded. | | Port | 1 to 65535, inside the address | 443 | Picks the TLS service to analyze, such as `example.com:8443`. | | Enable SSL/TLS Analyzer (Settings > Apps) | On / Off | Off, unless picked in the initial module selection | Shows or hides the module in the main menu and enables the send shortcut from captures. | | AI SSL/TLS ANALYZER permission | On / Off | Off | Lets the CatSuite AI assistant run the triage and read certificates and fingerprints. | To configure it: type in the field only what identifies the service, such as `example.com` or `api.example.com:8443`; if you paste a full URL, the module extracts the host and port by itself. Always enter the port explicitly when the TLS service is not on 443. If the module does not appear in the menu, turn on **ENABLE SSL/TLS ANALYZER** under **Settings > Apps**; while it is hidden, the send shortcut from captures is unavailable too. Only turn on the AI permission if you want the assistant to run the triage on its own within the scope. ### How the host and port are normalized Before connecting, the analyzer rewrites what you typed and updates the field with the result. | You type | Normalized target | Host analyzed | | --- | --- | --- | | `example.com` | `https://example.com` | `example.com:443` | | `https://example.com/login?next=/dashboard` | `https://example.com` | `example.com:443` | | `example.com:8443` | `https://example.com:8443` | `example.com:8443` | | `https://example.com:443/` | `https://example.com` | `example.com:443` | | `[2001:db8::10]:8443` | `https://[2001:db8::10]:8443` | `[2001:db8::10]:8443` | The final scheme is always `https://`, because the module only speaks TLS. Internationalized domain names are converted to their ASCII form (punycode) before connecting. ### Fixed triage parameters Some behaviors are not configurable, but they help you interpret the result. | Parameter | Value | Effect | | --- | --- | --- | | Connect and read timeout | 4.5 seconds | Slow or filtered hosts produce a timeout error. | | Default port | 443 | Used when the address has no port. | | Versions tested | TLSv1.3, TLSv1.2, TLSv1.1 and TLSv1 | Only those the device supports; each one is a separate handshake. | | Cipher suite list | Negotiated plus up to 18 from the device | Excludes null, anonymous, RC4 and 3DES suites. | | Chain validation | Android default validator | Sets CHAIN OK or CHAIN WITH ALERT. | > [!TIP] > Each triage opens one main connection plus one per TLS version tested. On targets with connection limits or scan alerts, wait a few seconds between checks. ## Buttons and actions ### Input panel | Button or action | What it does | | --- | --- | | CHECK | Normalizes the address and starts the triage. Turns into ANALYZING and stays disabled until it finishes. | | Keyboard Go key | Starts the triage from the field, just like CHECK. | | Empty field + CHECK | Shows the "Enter a domain or URL to analyze." notice. | ### Results | Button or action | Where | What it does | | --- | --- | --- | | Fingerprint SHA-256 copy icon | Session Summary | Copies the leaf's SHA-256 and confirms with "Copied SHA-256 fingerprint." | | SHA-1 Fingerprint copy icon | Session Summary | Copies the leaf's SHA-1 and confirms with "Copied SHA-1 fingerprint." | | SHA-256 copy icon | Certificate card | Copies that certificate's SHA-256. | | SHA-1 copy icon | Certificate card | Copies that certificate's SHA-1. | | Text selection | Any value | Opens the CatSuite context menu. | ### Selection context menu Every value on the screen, such as subject, issuer, serial and fingerprints, can be selected. The address field also has the menu, with the editing actions. | Action | What it does | | --- | --- | | COPY | Copies the selected text. | | CUT | Cuts the selection (address field only). | | PASTE | Pastes the clipboard content (address field only). | | DECODER | Sends the selection to the [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder). | | NOTES | Sends the selection to the notepad in [History and notes](https://netcattest.com/catsuite/en/docs/modules/history). | | EVERYTHING | Selects the whole text of the value. | | BLOCK | Copies the entire value. | ### Shortcuts from other modules | Source | Action | Result | | --- | --- | --- | | [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) | Long press on a capture > **Send to SSL/TLS Analyzer** | Opens the module with the request's host already normalized and starts the triage automatically. | | Floating button | SSL/TLS Analyzer action | Opens the module directly. | | AI assistant | SSL/TLS analysis tool, with the permission on | Runs the triage on an in-scope host or opens the module with the address of the request or of the current Browser page. | ## Step by step: how to use the SSL/TLS Analyzer ### Run the first triage of a host 1. Open the **SSL/TLS Analyzer** from the main menu. If it does not appear, enable it under **Settings > Apps**. 2. In the **TARGET HTTPS** panel, type the domain or paste the URL of the authorized target. Add `:port` if the service is not on 443. 3. Tap **CHECK** or the keyboard **Go** key. 4. Wait for the loading card and check the three verdict chips in the **Session Summary**. 5. Read **Host** and **Normalized target** to confirm the module analyzed exactly the intended service. ### Validate the chain up to the root 1. Look at the **CHAIN OK** or **CHAIN WITH ALERT** chip and read the message strip at the end of the summary. 2. Scroll down to **CERTIFICATION CHAIN** and check how many certificates were observed. 3. On each card, compare one certificate's **Issuer** with the next one's **Subject**: they must match all the way to the top. 4. On the last card, check the issuer to identify the authority that closes the chain. 5. Check the "Valid now" indicator on every certificate; an expired intermediate also breaks the chain. ### Check and record fingerprints 1. In the **Session Summary**, tap the copy icon of **Fingerprint SHA-256** to put the leaf hash on the clipboard. 2. Compare the value with the expected fingerprint, provided by the target owner or obtained with another tool. 3. Select the fingerprint and use **NOTES** to record it in the notepad, along with the host, date and TLS version. 4. Repeat on the intermediate cards when you need to document the whole chain. ### Check protocol versions and cipher 1. On the **TLS VERSIONS** card, read the highlighted chip with the negotiated version. 2. Check the chips of accepted versions: the presence of `TLSv1` or `TLSv1.1` indicates support for legacy versions. 3. Compare with **Versions visible on the device**: a version missing from that line could not be tested by the device. 4. On the **CIPHER SUITES** card, read the **Negotiated** line and record the chosen cipher. ### Diagnose a TLS failure 1. Run the triage and read the message on the **SSL/TLS parsing failed** card, if it appears. 2. If the message mentions a timeout, a refused connection or an unresolved host, the problem lies before TLS: review host, port and network. 3. If the handshake completes but the chain has an alert, read the chain message strip and the certificate cards to find the cause. 4. If the **HOSTNAME FAILED** chip appears, compare the host you typed with the SAN chips on the leaf certificate. 5. If **OUT OF VALIDITY** appears, check the validity dates and the device clock. ### Analyze the host of a Proxy capture 1. With the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) capturing authorized traffic, open the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor). 2. Long press the capture you want and choose **Send to SSL/TLS Analyzer**. 3. The module opens with the request's host filled in and starts the check right away. 4. Compare the server's real certificate with the behavior observed on the client. ## How it relates to the Network Proxy and the Repeater The SSL/TLS Analyzer connects **directly** from the device to the server, without going through the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy). That is why it sees the target's genuine certificate. When a client browses through the proxy with HTTPS interception on, the certificate that client receives is issued on the fly by the lab CA, so the leaf fingerprint seen by the client will differ from the fingerprint the analyzer shows. That difference is expected and confirms that interception is active. If a client refuses the connection through the proxy, use the analyzer to check whether the problem lies in the server itself (chain, validity, version) or in the trust placed in the lab CA. In the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater), an HTTPS send can fail because of an invalid certificate or an incompatible protocol. Before turning on **Ignore certificate errors** in the Repeater settings, run the analyzer against the same host: it shows whether the chain is self-signed, whether the hostname does not match or whether the certificate has expired. This way you document the exact reason for the failure and only disable validation in the Repeater when the environment is your own and authorized. > [!WARNING] > A chain with an alert in production is a finding, not an obstacle to work around. Record the result and treat disabling validation in the Repeater strictly as a lab resource. ## Examples Inputs accepted in the TARGET HTTPS panel field. ```text example.com https://example.com/login?next=/dashboard api.example.com:8443 https://[2001:db8::10]:8443/ ``` Summary of a healthy session, as recorded in the notepad. ```text Host: example.com:443 Normalized target: https://example.com Negotiated TLS: TLSv1.3 Negotiated cipher suite: TLS_AES_128_GCM_SHA256 Handshake time: 182 ms Validity: 01/08/2026 00:00 to 30/10/2026 23:59 Expiration status: 24 days remaining ``` A typical chain with a leaf and an intermediate, as listed on the Certification chain card. Note that the second card gets the ROOT label even though it is the intermediate: the server did not send the root, and its issuer reveals the authority that closes the chain. ```text LEAF Subject: CN=example.com Issuer: CN=Example Intermediate CA,O=Example,C=US ROOT Subject: CN=Example Intermediate CA,O=Example,C=US Issuer: CN=Example Root CA,O=Example,C=US ``` Format of the fingerprints displayed by the module. ```text SHA-256: 3B:7E:1A:C4:59:02:DF:88:6A:E1:4C:93:B0:27:5D:F6:11:A8:7C:E9:42:0B:D5:36:9F:C2:68:E4:1D:B7:05:7A SHA-1: 9C:2E:41:B8:07:D3:6F:A5:18:E0:C7:52:3B:94:FD:61:0A:8E:27:C3 ``` Checking the leaf's SHA-256 fingerprint outside the app, on a workstation. ```bash openssl s_client -connect example.com:443 -servername example.com /dev/null | openssl x509 -noout -fingerprint -sha256 ``` Manual test of a specific TLS version, useful to confirm the TLS Versions panel. ```bash openssl s_client -connect example.com:443 -servername example.com -tls1_2 Apps**. > [!DANGER] > Analyze only hosts you are authorized to test. Even as a read-only triage, every check opens several real TLS connections against the target. See [Security](https://netcattest.com/catsuite/en/docs/security). ## Next step - [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) - [History and notes](https://netcattest.com/catsuite/en/docs/modules/history) - [Modules overview](https://netcattest.com/catsuite/en/docs/modules) --- # History and notes > Guide to the CatSuite History and notes module: how to use and configure the request timeline, filters, search, the notepad and evidence export on your device. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/history - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/historia The **History and notes** module is the session's memory in CatSuite. **History** organizes the browser and captured request timeline into per-site sessions, with search, quick filters, interesting marks and a direct hand-off to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater). The **Notepad** keeps your observations on the device itself, with note creation, editing, pinning and TXT export. Together they are the foundation for building the report of an authorized test without losing any evidence. This page explains how to enable the module, how to read each screen, how to configure capture and retention, and how to turn a session into a report. > [!NOTE] > History is disabled on a fresh install. The Notepad is enabled. Both are turned on and off in **Settings > Apps**. ## History and Notepad concepts Before opening the screen, it helps to pin down the terms used on cards, tags and in the menu. ### Browsing session History does not show a loose list of requests: it groups records into **sessions**. Every time the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) performs a main navigation (a record whose source is **Navigation**), a new session starts. The requests that follow, such as scripts, images, API calls and form submissions, join the most recent open session. If the first available record is not a navigation, the app creates a session from that record itself, so nothing is left out. Each session has a **main site** (the URL that opened the session), a title built from the domain and path, the list of **domains involved** and the time window between its first and last record. ### Timeline The **timeline** is the list of sessions, from newest to oldest, ordered by the time of each session's last record. Inside a session, requests also appear from newest to oldest. A circular marker on the left of each card links the sessions; it turns yellow when the session had at least one intercepted request. ### Intercepted, failed and interesting requests | Mark | When it appears | Where you see it | |---|---|---| | **INTERCEPTED** | The request went through the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor). | Tag on the request and the **N INTERCEPTED** counter on the session. | | **Failure** | HTTP status 400 or higher, or the **FAIL** status (error, cancellation or abort before a valid response). | **N FAILURES** tag with a red border on the session. | | **INTERESTING** | You marked the request manually with **Mark as interesting**. | Star on the session card, tag on the request and the **N INTERESTING** counter. | ### Displayed statuses When there is a response, the status is the HTTP code (for example, `200` or `404`). Without a numeric code, History shows a label: **SENT** (a submitted form waiting for the navigation), **REPLACED** (navigation replaced before the final response), **EXTERNAL** (external link), **FAIL** or **PENDING** (still in progress). ### Storage shared with the Interceptor History reads the same record store as the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) history. Because of that, capture rules, the item limit and clearing apply to both places at once. History is a way of reading those records organized by site, while the Interceptor shows the full technical list. ### Notepad note A **note** has a title, content, a marker color, a pinned state, and its creation and last edit dates. If the title is left blank, the app uses the first line of the content as the display title; with no text at all, the note appears as **Quick note**. ## The History screen: timeline, detail and menu History has two pages and a slide-up menu panel. The **HISTORY** title sits at the top and the **MENU** button is always on the right. ### Timeline The home page shows the summary "See sites, requests, and session events." and the following elements: | Element | What it shows | |---|---| | **SESSIONS** card | Total sites or browsing flows. | | **REQUESTS** card | Total recorded captures. | | **INTERCEPTED** card | How many requests went through the Interceptor. | | Search field | Filters sessions by site, domain, method, URL or status. | | Active filter tags | **INTERCEPTED ONLY**, **FAILURES ONLY**, **INTERESTING ONLY** and the search term, when applied. | | Session cards | Opening date and time, title, main site, summary tags and the three most recent requests. | The summary cards always count the entire session history, even with filters on. When there are no records at all, the screen shows **NO STORIES YET**. When there are records but none match the search or filters, it shows **NOTHING MATCHES THE FILTER**. ### Session detail Tapping a card opens the detail. The header switches to a back button labeled **HISTORY** and shows the session's time window. The page has four blocks: 1. **Session summary:** title, main URL (with the count of domains involved), the **N INTERCEPTED** or **NO INTERCEPTION** tag, **N REQUESTS**, **N FAILURES**, **N INTERESTING** (when present) and **N DOMAINS**, plus the **MAIN SITE** line. 2. **SESSION REQUESTS:** the list of requests with method, URL, status, source and the **INTERCEPTED** and **INTERESTING** tags. The selected request is highlighted in yellow. 3. **REQUEST DETAIL:** URL, source, domain, content type, time, status, status detail, and whether the request was intercepted or marked as interesting, followed by the action buttons. 4. **REQUEST** and **RESPONSE:** the raw captured content, in a monospaced font with selectable text. ### History menu The **MENU** button opens the **HISTORY MENU** panel ("Review the session, apply filters, or clear history."). It contains: - the **SESSIONS**, **REQUESTS**, **INTERCEPTED**, **FAILURES** and **INTERESTING** counters; - the **VIEW** section, with the quick filters; - the **DOMAINS SEEN** section, with up to 12 main session domains in alphabetical order; - the red **CLEAR HISTORY** button at the bottom of the panel. ### Screen with the module disabled If History is turned off, the screen shows **HISTORY DISABLED** and the **ACTIVATE HISTORY** button, which goes straight to **Settings > Apps**. ## The Notepad screen The Notepad is opened from the main menu and has two pages: the list and the editor. ### Note list The header shows the **LOCAL ORGANIZATION** label, the **NOTEPAD** title and three counters: **NOTES** (total), **PINNED** and **TODAY** (notes edited today). Below are the **Search notes** field, the **PINNED** section ("They always stay on top until you unpin them.") and the **ALL NOTES** section ("The most recent appear first."). During a search, the second section is renamed **RESULTS** and reports how many items were found. A floating button with a pencil icon creates a new note. Each card shows the note color, the title, a content summary, the date, a pin button to pin or unpin, and the three-dot menu with the note actions. ### Note editor The editor opens with the title **NEW NOTE** or **EDIT NOTE**. It has: | Area | Function | |---|---| | Back (**NOTEPAD**) | Returns to the list and asks for confirmation if there are unsaved changes. | | **SAVE** | Stores the note on the device. | | Preview | Shows the title and content as you type. | | Title field | Short identifying text, with the hint "Example: today's plan". | | Content field | Free text: "Write freely. Each line can become an idea, checklist or reminder." | | Color picker | Blue, Green, Yellow, Pink, Orange, Purple or Graphite. | | **PIN TO TOP** | Keeps the note in the pinned section. | | Information | **CHARACTERS**, **COLOR**, **STATUS** (**PINNED** or **NORMAL**) and **LAST EDITED** (on saved notes). | | **DUPLICATE** and **DELETE** | Shown only when editing an existing note. | ## Options and how to configure the module History and Notepad options live in three areas of the settings. | Option | Values | Default | What it does | |---|---|---|---| | **ACTIVATE HISTORY MODULE** (Settings > Apps) | On or off | Off | Shows or hides History in the main menu. | | **ACTIVATE NOTEPAD** (Settings > Apps) | On or off | On | Shows or hides the Notepad in the menu and enables the **NOTES** action in text selection. | | **INTERCEPTOR HISTORY** (Settings > History) | On or off | On | Turns new entries on or pauses them without deleting what was already captured. | | **CAPTURE ONLY IN CONDITIONS** (Settings > History) | ALL, WI-FI, DATA or LOAD | ALL | Defines when new requests can be recorded. | | **HISTORY LIMIT** (Settings > History) | 100, 300, 500, 1000, 2000 or 5000 | 300 (100 on lower-end devices) | How many requests are kept before the oldest ones are removed automatically. | | **RECOVER SESSION AFTER CLOSING** (Settings > Personalization > Session and Data) | On or off | On | Restores the browser, history and temporary contexts after an unexpected close. | | **DO NOT SAVE TIMELINE WITHOUT HISTORY** (Settings > Personalization > Session and Data) | On or off | Off | Stops new timeline entries while History is turned off. | | **DELETE NOTES WHEN DEACTIVATING THE MODULE** (Settings > Personalization > Session and Data) | On or off | Off | Deletes saved notes when the Notepad is disabled. | ### How to enable History in the settings Open **Settings > Apps** and turn on **ACTIVATE HISTORY MODULE**. The item then appears in the main menu. The same path is opened by the **ACTIVATE HISTORY** button on the disabled screen. ### Capture conditions The **CAPTURE ONLY IN CONDITIONS** option has four values: capture in all circumstances, on Wi-Fi only, on mobile data only, or only while charging (device plugged in and battery above 50%). The **CAPTURE STATUS** item right below shows **ACTIVE** or **PAUSED** according to the chosen condition and the device's current state. ### History limit and interesting items The limit counts only **unmarked** requests. When the total exceeds the limit, the app removes the oldest requests that are not interesting. Requests marked as interesting are preserved, which makes the star the safest way to protect important evidence during long sessions. > [!TIP] > On devices with little memory, keep the limit at 100 or 300 and mark as interesting everything that will go into the report. That way the automatic cleanup does not take away what matters. ### History turned off and background capture With **DO NOT SAVE TIMELINE WITHOUT HISTORY** turned off (the default), records keep being stored in the Interceptor history even while History is hidden, and they appear on the timeline as soon as you re-enable the module. Turn this option on if you prefer that nothing is recorded while History is disabled. ## Buttons and actions ### History actions | Button or gesture | Where | What it does | |---|---|---| | **MENU** | Top of the screen | Opens the **HISTORY MENU**. | | Tap a session card | Timeline | Opens the session detail. | | Back (**HISTORY**) | Top of the detail | Returns to the timeline. | | Tap a request | Detail | Selects the request and refreshes the detail, request and response. | | Long press a request | Detail | Opens the request quick menu. | | **Send to Repeater** | Detail and quick menu | Opens the request in the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) to edit and resend it. | | **Mark as interesting** / **Unmark as interesting** | Detail and quick menu | Turns the request highlight on or off. | | **COPY URL** | Detail and quick menu | Copies the full address. | | **COPY REQUEST** | Detail and quick menu | Copies the raw captured request. | | **COPY RESPONSE** | Detail | Copies the displayed response. | | **COPY cURL** | Detail and quick menu | Copies a ready-made cURL command with method, headers, body and URL. | | **ACTIVATE HISTORY** | Disabled screen | Opens **Settings > Apps**. | ### History menu actions | Item | What it does | |---|---| | **See only intercepted sessions** | Shows only sessions with at least one request that went through the Interceptor. | | **See only failed sessions** | Filters for errors, cancellations and failed responses. | | **See only sessions with interesting requests** | Shows only sessions with at least one request marked as interesting. | | **Clear quick filters** | Turns off the three filters and also clears the search term. | | **CLEAR HISTORY** | Asks for confirmation and deletes all captured history. | ### Text selection menu In the **REQUEST** and **RESPONSE** blocks, the request detail, the session summary and the search field, selecting a passage opens the CatSuite menu with **COPY**, **DECODER** (sends the passage to the [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder)), **NOTES** (sends the passage to the Notepad, when the module is enabled) and **EVERYTHING** (selects all the text). ### Notepad actions | Action | Where | What it does | |---|---|---| | Floating button (pencil) | List | Opens the editor for a new note. | | **Edit** | Card menu | Opens the note in the editor. Tapping the card does the same. | | **Pin to top** / **Unpin** | Card menu and pin icon | Toggles the note's pinned state. | | **Duplicate** | Card menu and editor | Creates an unpinned copy titled "Copy of …". | | **Copy** | Card menu | Copies the title and content to the clipboard. | | **Download TXT** | Card menu | Exports the note as a `.txt` file. | | **Delete** | Card menu and editor | Asks for confirmation and removes the note from the device. | | **SAVE** | Editor | Stores the note. Requires a title or content. | | **CLEAR SEARCH** | List with no results | Removes the search term. | ## Timeline filters and search Search is case-insensitive and looks for the term in the session title, the main site, the domains involved and, for each request, in the URL, method, source, status label and status description. A single matching request is enough for the whole session to appear. Quick filters add up: with **See only intercepted sessions** and **See only failed sessions** on, only sessions that meet both conditions are shown. The three filters are saved and come back active when you reopen the app; the search term does not. ```text api.example.com POST /login 403 FAIL Form ``` ## Reopening items in the Repeater and the Interceptor To reproduce a request, open the session, select the request and tap **Send to Repeater**. CatSuite switches to the [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) with the raw request already loaded, ready to edit and resend. The same hand-off is available in the long-press menu. Because History and the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) history share the same store, every request on the timeline is also in the Interceptor list. History has no dedicated button to open the item in the Interceptor; use **COPY URL** and look up the URL in the Interceptor history, where you find the technical filters and export to TXT, cURL, JSON and HAR. ## Notepad: creating, editing and exporting notes ### Create and edit Tap the floating button, write a title and the content, choose a color and, if you want, turn on **PIN TO TOP**. Tap **SAVE**. The message "Note created successfully." confirms it was stored; when saving an existing note, "Updated note." appears. If you try to go back with pending changes, the app asks **Discard changes?** and offers **CONTINUE** or **DISCARD**. ### Send History passages to a note Select a passage in the request, the response or the detail and tap **NOTES**. The editor opens with a suggested structure: - multi-line text whose first line has up to 72 characters: the first line becomes the title and the rest becomes the content; - single-line text with up to 72 characters: it becomes the title only; - any other case: the whole text goes into the content. ### Export to TXT In the card menu, tap **Download TXT**. The file name comes from the lowercase title, with spaces, accented letters and symbols replaced by hyphens (for example, "Login findings" becomes `login-findings.txt`). The file has a fixed header followed by the content. In the current version, the header labels inside the file are written in Portuguese: ```text BLOCO DE NOTAS Título: Login findings Fixada: Sim Criada em: 06/10/2026 14:02 Atualizada em: 06/10/2026 15:40 Cor: #F2C94C CONTEÚDO POST /api/login has no attempt limit 200 response with a different message for unknown users Session cookie without the Secure flag ``` ## Clearing History and notes data The **CLEAR HISTORY** button opens the **Clear history** confirmation: "This deletes requests, interesting marks, full bodies, cookies, cache, and web storage, ending active website sessions." After confirming with **Clear**, the timeline is empty again and "Successfully cleared history." appears. > [!DANGER] > Clearing cannot be undone. It also deletes requests marked as interesting, clears the Interceptor history, releases unchanged any requests that were paused in the interception queue, and ends the logins open in the Browser. Export and note down everything you need before clearing. Notes are not affected by **CLEAR HISTORY**. They only leave the device when you delete each one, when you disable the module with **DELETE NOTES WHEN DEACTIVATING THE MODULE** turned on, or when you use **Settings > Reset app**. ## Local storage on the device Everything stays on the device. Notes are stored in the app's local storage and survive the app being closed. The request history is kept by the app and, with **RECOVER SESSION AFTER CLOSING** on, it is restored after an unexpected close. Records from the [Network Proxy](https://netcattest.com/catsuite/en/docs/modules/proxy) are only included in that recovery when they are marked as interesting. No account or cloud service is required. > [!IMPORTANT] > Requests and responses can contain tokens, cookies and personal data from the target. Protect the device with a screen lock and read [Security, vault and data protection](https://netcattest.com/catsuite/en/docs/security) before sharing exported files. ## Step by step: building the session report 1. Open **Settings > Apps** and turn on **ACTIVATE HISTORY MODULE** and **ACTIVATE NOTEPAD**. 2. In **Settings > History**, check that **CAPTURE STATUS** shows **ACTIVE** and set the **HISTORY LIMIT** to the size of the test. 3. Browse the authorized target in the [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) and use the [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) whenever you need to pause and edit requests. 4. Open **HISTORY** and find the session for the tested flow using search or the **MENU** filters. 5. Open the session, select each relevant request and tap **Mark as interesting**. 6. To confirm a finding, tap **Send to Repeater**, reproduce the variation and return to History. 7. Select the passages that prove the issue in the request or response and tap **NOTES** to bring them into the Notepad. 8. In the editor, complete the note with impact, reproduction steps and a recommendation, turn on **PIN TO TOP** and tap **SAVE**. 9. Use **COPY cURL** to record a reproducible command for each finding inside the note. 10. In the note menu, tap **Download TXT** and, if you need the full captures, export the Interceptor history as HAR or JSON. 11. Combine the note TXT files and the Interceptor export into the final report. Only then, if you want, use **CLEAR HISTORY**. ## Examples ### Copied request detail ```text URL: https://app.example.com/api/login Source: Form Domain: app.example.com Type: JSON Time: 06/10/2026 14:02:31 Status: 200 Detail: Response received Intercepted: YES Interesting: YES ``` ### Raw request copied with COPY REQUEST ```http POST /api/login HTTP/1.1 Host: app.example.com Content-Type: application/json Accept: application/json {"username":"test","password":"test-password"} ``` ### Command generated by COPY cURL ```bash curl -X POST -H 'Host: app.example.com' -H 'Content-Type: application/json' -H 'Accept: application/json' --data-raw '{"username":"test","password":"test-password"}' 'https://app.example.com/api/login' ``` ### Finding note template ```text Login without an attempt limit Target: https://app.example.com/api/login Severity: Medium Evidence: 30 consecutive sends in the Repeater, all with a 200 response Reproduction: cURL below Recommendation: enforce a per-account and per-IP limit ``` ## Common problems and FAQ ### History does not appear in the menu The module ships turned off. Turn on **ACTIVATE HISTORY MODULE** in **Settings > Apps**. ### The screen shows "NO STORIES YET" There are no records yet. Open pages in the Browser and check in **Settings > History** that **INTERCEPTOR HISTORY** is on and **CAPTURE STATUS** shows **ACTIVE**. With the WI-FI, DATA or LOAD condition, capture pauses outside that situation. ### The screen shows "NOTHING MATCHES THE FILTER" There are records, but the search or the filters hid all of them. Open the **MENU** and tap **Clear quick filters**, which also clears the search. ### Old requests disappeared The **HISTORY LIMIT** was reached and the oldest unmarked requests were removed. Raise the limit or mark the important ones as interesting. ### The filters were back on after reopening the app That is the expected behavior: the three quick filters are saved. Turn them off in the **MENU**. ### The NOTES action does not appear when selecting text It only exists when the Notepad is enabled in **Settings > Apps**. ### SAVE shows "Write a title or content before saving." The note is empty. Fill in at least the title or the content. ### "Unable to download note in TXT." appears The file could not be written. Try again and check the free space and the chosen destination. If you cancel the destination picker, no error message is shown. ### Does clearing History delete my notes? No. **CLEAR HISTORY** only affects requests, marks and browser data. Your notes stay on the device. ## Next step - [Interceptor](https://netcattest.com/catsuite/en/docs/modules/interceptor) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Browser](https://netcattest.com/catsuite/en/docs/modules/browser) - [Decoder](https://netcattest.com/catsuite/en/docs/modules/decoder) - [Security, vault and data protection](https://netcattest.com/catsuite/en/docs/security) - [CatSuite modules](https://netcattest.com/catsuite/en/docs/modules) --- # Wordlists and payloads > Wordlists and payloads in CatSuite: how to import .txt lists, use default wordlists, configure the payload generator and apply them in Intruder and Discovery. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/modules/wordlists - Section: Modules - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/modulos/wordlists **Wordlists and payloads** in CatSuite gather the word lists that feed the app's local attacks: the built-in **default wordlists**, the **user-added wordlists** (imported as `.txt`) and the **payload generators** that build numeric sequences on the fly. This module explains what a wordlist is, how to import and validate a file, how the Intruder's payload generator works and how to select each list in the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) and the [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer). ## What wordlists and payloads are in CatSuite A **wordlist** is a text file with one entry per line. Each line becomes a value that CatSuite injects into a position on the target during an authorized test. A **payload** is each concrete value that comes out of a wordlist (or a generator) and enters the request. The wordlist module is the central place where these lists are organized, imported, validated and stored for reuse by the attack modules. CatSuite separates lists by origin: the **default wordlists**, which ship inside the app and cannot be deleted, and the **user wordlists**, which you import from a `.txt` file. Beyond the ready-made lists, the Intruder offers the **dynamic generator**, which produces a sequence of numeric payloads from a few parameters, with no file needed. > [!NOTE] > The wordlist screen lives under **Settings > Wordlist**. From there you manage the default and custom lists, import new files and follow the validation of each one. ## Core concepts ### Wordlist and the .txt format An imported wordlist is always a plain-text `.txt` file, with one entry per line. The CatSuite file picker accepts only the `.txt` extension (types `text/plain` and `application/octet-stream`). Empty lines and content with no usable value are discarded during validation; if the file has no usable line, the import is rejected. ```text admin login api api/v1 api/v2 backup config uploads .git ``` ### Default wordlists versus user-added wordlists The **default wordlists** (label **APP DEFAULT**) are protected: they ship inside the app, appear at the top of the catalog and cannot be renamed or deleted. The **user wordlists** (label **ADDED BY USER**) are the ones you import; they appear right below the internal lists and can be renamed and removed at any time. > [!TIP] > In the module wordlist selector, the internal lists appear first and your imported lists appear below them. The selector is refreshed every time you open it, so a freshly imported list is immediately available. ### Payload and payload generator A **payload** is each value sent to the target. It can come from a wordlist (one payload per line) or from a **dynamic generator**, which builds a sequence of numbers from a start, an end and a step, with the option to pad with leading zeros and add a prefix and a suffix. The generator is handy when you need to test ranges such as `1` to `1000` or identifiers shaped like `user0001`, `user0002` without keeping a huge file. ### Protected reading and safe mode For large files, CatSuite enables **protected reading** (also shown as **SAFE MODE**): the wordlist is streamed line by line instead of loading everything into device memory at once. This helps prevent slowdowns when the list runs. The line count is computed and saved during validation, so the catalog shows the total even without reopening the file. > [!IMPORTANT] > On import, CatSuite makes a **protected copy** of the file inside the app's private directory. The list keeps working even if the original file is moved or deleted later. ### The $CAT$ marker In the attack modules, the exact point where each wordlist word enters the request is marked with `$CAT$`. In the Discoverer the marker goes in the base URL; in the Intruder it marks the positions inside the request. Without the marker, the app does not know where to apply the payload. ## The wordlist screen The wordlist screen (under **Settings > Wordlist**) manages the default lists, the custom lists, the import and the validation. It is split into two sections and shows, for each item, the origin, count and size labels. ### Standard wordlists section The **STANDARD WORDLISTS** section lists the bases that ship with the app. Each item shows the name, the usage description, the line count and the **APP DEFAULT** label. These items are protected and offer no rename or delete action. ### User wordlists section The **USER WORDLISTS** section gathers the lists you have imported. Each item carries the editable name, the **WORDLIST ARCHIVE** field (the associated `.txt` file), the line count, the size and the **ADDED BY USER** label. This is where the rename and delete actions live. When no list has been imported, the section stays empty until you use **ADD WORDLIST**. ### Labels on each item Each catalog item shows labels computed from the file: | Label | What it shows | | --- | --- | | APP DEFAULT / ADDED BY USER | The wordlist origin (default or user). | | Line count | The total number of entries, or **On demand** when the count was not fixed. | | Size | The file size in B, KB or MB; **Internal** for default lists. | | PROTECTED READING / SAFE MODE | Shown when the list is large and will be streamed. | ## Included default wordlists CatSuite already ships two ready-made bases, aimed at the two attack modules: | Name | Recommended use | Lines | Origin | | --- | --- | --- | --- | | CatSuite Directories and API | Enumerating paths and endpoints in the Discoverer module. | 4,750 | APP DEFAULT | | CatSuite Parameters | Parameter and variation testing in the Intruder module. | 6,453 | APP DEFAULT | Both lists are stored internally in a compressed format and handled in safe reading mode, which is why they show the size **Internal**. > [!TIP] > Start with the default lists before importing your own. The **CatSuite Directories and API** base is the natural choice for the Discoverer, and **CatSuite Parameters** was prepared for the Intruder. ## How to add a wordlist (import .txt) The **ADD WORDLIST** button opens the flow to import a custom list in `.txt`. The file is selected, validated, counted and copied in the background into the app. ### Step by step 1. Open **Settings > Wordlist**. 2. Tap **ADD WORDLIST**. 3. Choose a `.txt` file in the device picker. 4. Wait for validation (**VALIDATING WORDLIST**): CatSuite checks the format and counts the lines. 5. Confirm. If the file is large, the app warns that it will use **protected reading**. 6. The message **Wordlist added successfully** confirms it is now in the catalog. 7. Optional: rename the list to a short, clear name (up to 48 characters). ### What happens during validation During validation, CatSuite checks whether the file is a compatible `.txt` and counts the usable lines to save that total in the catalog. It then makes a protected copy of the content in the app's private directory. If the file fails the format check, or has no usable content, the import is rejected with an explanatory message. ### Protected reading for large files When the file is large, CatSuite marks the wordlist for **protected reading** and reports that it will handle it in **safe mode** because of its size. In operation, the list is streamed line by line, even with very large files, which avoids loading everything into device memory. > [!WARNING] > Import only files you trust. The wordlist feeds real requests in the attack modules; use it only against authorized targets. ## Wordlist item options and how to configure them Each catalog wordlist is described by a set of fields. Some you adjust (such as the name), others are filled in by the import or by the internal list. | Option | Values | Default | What it does | | --- | --- | --- | --- | | Name | Text up to 48 characters | File name | Label shown in the catalog and in the module selectors. | | Wordlist archive | `.txt` file | The imported one | The file tied to the list; shown in the **WORDLIST ARCHIVE** field. | | Format | `.txt` (user) / `.gz` (default) | `.txt` | Content extension; default lists are internal and compressed. | | Origin | Default / Custom | Custom | Sets whether the list is protected (default) or editable (user). | | Line count | Number or On demand | From validation | Total entries saved on import. | | Protected reading | On / Off | Automatic | Turned on for large files, forcing streamed reading. | The only field you edit freely is the **name**: it is capped at 48 characters and, if you leave it blank, it falls back to a default value. The remaining fields reflect the imported file and need no manual adjustment. ## Buttons and actions | Button / action | What it does | | --- | --- | | ADD WORDLIST | Opens the `.txt` file picker and starts the import and validation. | | RENAME WORDLIST | Changes the name of a user list (up to 48 characters). | | Delete wordlist | Removes a user list from the catalog and the app. | > [!DANGER] > Deleting a user wordlist is final inside the app: the protected copy is removed. Keep the original `.txt` file outside CatSuite if you want to reimport it later. ## The Intruder payload generator In the Intruder, the **ORIGIN OF PAYLOADS** area lets you choose between using **Wordlists** or **Dynamic Generators**. The **DYNAMIC GENERATOR** creates a sequence of numeric payloads from a few parameters, with no file needed. Each payload has the shape prefix + number + suffix, and the number can be padded with leading zeros. ### Generator options and how to configure them | Option | Values | Default | What it does | | --- | --- | --- | --- | | Start | Integer | 1 | First number in the sequence. | | End | Integer | 25 | Last number in the sequence. | | Step | Integer greater than 0 | 1 | Increment from one number to the next. | | Padding | Integer | 0 | Number width with leading zeros; 0 means no padding. | | Prefix | Text | empty | Fixed text before the number. | | Suffix | Text | empty | Fixed text after the number. | Start with **Start** and **End** to set the range. Use **Step** to skip values (for example, in tens). **Padding** guarantees a fixed width, useful for identifiers with leading zeros. **Prefix** and **Suffix** wrap the number with fixed text, such as `user` or `.php`. ### Payload estimate The screen shows the **Current estimate** of payloads as you adjust the fields. The total is computed as `((end - start) / step) + 1`. If **Step** is zero or negative, or if **End** is smaller than **Start**, the estimate is zero and no payload is produced. ### Output examples Simple sequence from `1` to `5`, with no padding: ```text 1 2 3 4 5 ``` Identifiers with a prefix and 4-digit padding: ```text user0001 user0002 user0003 user0004 user0005 ``` Range from `0` to `100` with a step of `10`: ```text 0 10 20 30 40 50 60 70 80 90 100 ``` > [!NOTE] > If the generator produces no payloads, or the selected wordlist returns no usable values, the Intruder warns you before starting. Review the range, the step and the list selection. ## How to select the wordlist in each module ### In the Discoverer In the [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer), the **DISCOVERER WORDLIST** section lets you select the list the module will run through. Use the internal lists or the wordlists you added; the selector is refreshed when opened and shows the internal lists at the top. The point where each word enters the URL is marked with `$CAT$`. ```text https://target.com/api/$CAT$ ``` If the configured wordlist is unavailable, the Discoverer asks you to open the settings and select another one. ### In the Intruder In the [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder), you choose the **ORIGIN OF PAYLOADS** between **Wordlists** and **Dynamic Generators**. When using a wordlist, the **INTRUDER WORDLIST** section lists the same default and custom bases from the catalog. The positions to test are marked with `$CAT$` inside the request. You must select a wordlist (or configure the generator) before starting the intrusion. ## Limits and best practices - **Name:** up to 48 characters per wordlist. - **Import format:** only plain-text `.txt`, one entry per line. - **Large files:** automatically enter protected reading (safe mode) and are streamed. - **Storage:** imported lists are copied into the app's private directory; the original file does not need to stay on the device. - **Generator:** step must be greater than zero and end must not be smaller than start, or the estimate stays at zero. > [!TIP] > Give your lists short, descriptive names (for example, `api-v1-routes` or `params-login`). Clear names make selection easier in the Intruder and Discoverer selectors. ## Common problems / FAQ **Does the picker only accept `.txt`?** Yes. The import validates the extension and the content; files in other formats are rejected. **Why does my list show "On demand"?** When the line count was not fixed, the catalog shows **On demand** instead of the number. Reimport the file to save the count. **Can I delete the default wordlists?** No. Lists labeled **APP DEFAULT** are protected and offer no rename or delete. **The wordlist disappeared when I started the attack.** If the configured list is unavailable, the module asks you to open the settings and select another one, or reimport the file. In the Intruder, select a wordlist before starting the intrusion. **The generator produced no payloads.** Check that the step is greater than zero and that the end is greater than or equal to the start; the estimate must be greater than zero. **Where are the imported lists stored?** In a protected copy inside the app's private directory. Clearing the app data removes the custom wordlists along with settings, sessions and history. ## Next step - [Intruder](https://netcattest.com/catsuite/en/docs/modules/intruder) - [Discoverer](https://netcattest.com/catsuite/en/docs/modules/discoverer) - [Repeater](https://netcattest.com/catsuite/en/docs/modules/repeater) - [Modules overview](https://netcattest.com/catsuite/en/docs/modules) - [Safe and responsible use](https://netcattest.com/catsuite/en/docs/security) --- # CatSuite extensions > How .catplug extensions work: isolated QuickJS engine, permissions, lifecycle, integration points and API v1 limits. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/extensions - Section: Extensions - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/extensoes Extensions are `.catplug` packages with JavaScript code run by **QuickJS 2026-06-04**, embedded through JNI in an isolated Android service. Every extension has its own environment, its own SQLite data and its own permissions. ## What an extension can do - Observe requests and responses with `cat.events.on`. - Change messages before they are forwarded with `cat.proxy.onRequest` and `cat.proxy.onResponse`. - Send requests to declared destinations with `cat.http.send`. - Call external APIs with protected credentials using `cat.external.call`. - Register commands, message menus and native tabs. - Store data and record findings with evidence. - Take part in [visual workflows](https://netcattest.com/catsuite/en/docs/workflows) as steps and parsers. ## What an extension cannot do There is no Node.js, DOM, `fetch`, general file access or process execution. Use `cat.http.parseUrl` for URLs and `cat.bytes` for UTF-8 conversion. TLS uses Android certificate validation and the SDK cannot disable it. ## Integration points Hooks cover the proxy, Network Proxy, Repeater, Intruder and Discoverer. Every message reports its origin in `source`: | `source` | Origin | |---|---| | `proxy` | Intercepted browser traffic | | `network_proxy` | Network Proxy session | | `repetir` | Repeater sends | | `intruso` | Intruder sends | | `descobridor` | Discoverer sends | | `extension` | Requests sent by extensions | | `laboratory` | Simulated laboratory traffic | Requests from an extension never return to its own handlers; other extensions may process them according to their scope. When extensions process proxy traffic, applicable replacement rules run before the handlers, and manual editing takes precedence. ## Lifecycle 1. **Create or import** — in **Settings → Extensions**, use Create (basic template or the Aurora example), import a `.catplug` or build the package in the [web IDE](https://netcattest.com/catsuite/en/docs/extensions/ide) or in [CatSuite Studio for VS Code](https://netcattest.com/catsuite/en/docs/extensions/vscode). 2. **Validate** — package, manifest and code are validated before anything is replaced. 3. **Approve** — installs start disabled. When enabling, you review capabilities and destinations. 4. **Run** — hooks, commands, menus and tabs come alive. 5. **Update** — broader permissions or destinations require new approval. > [!WARNING] > Three consecutive failures suspend the extension. Disabling or removing it clears every registered handler and component. ## API v1 limits | Resource | Limit | |---|---| | Active extensions | 4 | | Memory per environment | 32 MiB | | Mutation handler | 100 ms, synchronous | | Concurrent HTTP calls | 2 per extension | | Total HTTP timeout | 120 seconds | | HTTP response | up to 8 MiB, with a preview for JavaScript | | Editable preview | up to 32 KiB | | Entry script | up to 128 KiB | | Package | 10 MiB compressed, 40 MiB expanded and 500 files | | Data per extension | 10 MiB, with 128 KiB per value | Larger, incomplete, compressed or continuous bodies are read-only. SSE and WebSocket keep their transport, and HTTPS tunnels without decryption do not provide HTTP content. ## Your first extension ```js cat.commands.register('lab.hello', {'pt-BR': 'Dizer olá', en: 'Say hello'}, () => { cat.log({'pt-BR': 'Olá do laboratório.', en: 'Hello from the lab.'}); return {ok: true}; }); ``` Declare the `commands` permission in the [manifest](https://netcattest.com/catsuite/en/docs/extensions/manifest) and run the command in the simulator of the [extension IDE](https://netcattest.com/catsuite/en/ide). ## Keep going - [Extension SDK 1.4.0](https://netcattest.com/catsuite/en/docs/extensions/sdk) - [The .catplug package manifest](https://netcattest.com/catsuite/en/docs/extensions/manifest) - [JavaScript API reference](https://netcattest.com/catsuite/en/docs/extensions/api) - [Interface, data and findings](https://netcattest.com/catsuite/en/docs/extensions/ui-and-data) --- # The .catplug package manifest > Structure of the .catplug file, manifest.json fields, validation rules, permissions, destinations, SHA-256 hashes and format 2. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/extensions/manifest - Section: Extensions - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/extensoes/manifesto ## Package structure A `.catplug` is a ZIP file with `manifest.json` at the root and the files listed in `hashes`. ```text auditor.catplug ├── manifest.json ├── main.js ├── fixtures.json ├── README.pt-BR.md └── README.en.md ``` ## Complete example ```json { "formatVersion": 1, "apiVersion": 1, "id": "lab.auditor", "version": "1.0.0", "author": "NetCatTest", "entry": "main.js", "name": {"pt-BR": "Auditor de respostas", "en": "Response auditor"}, "description": {"pt-BR": "Audita cabeçalhos de cache.", "en": "Audits cache headers."}, "permissions": ["traffic.read", "traffic.modify", "findings", "commands", "ui.tab"], "targets": ["api.aurora.test"], "externalHosts": [], "settings": {"laboratory": true}, "hashes": { "main.js": "84f7f8620e4ccde480b3a929483f51a0d051c2fe89443ecd4409faea663e071b" } } ``` ## Fields | Field | Type | Rule | |---|---|---| | `formatVersion` | number | `1` or `2` | | `apiVersion` | number | `1` | | `id` | text | `[a-z][a-z0-9.-]{2,63}`, stable across versions | | `version` | text | `MAJOR.MINOR.PATCH`, for example `1.0.0` | | `author` | text | required | | `entry` | text | a `.js` file inside the package, up to 128 KiB | | `name` | object | `pt-BR` and `en` required | | `description` | object | `pt-BR` and `en` required | | `permissions` | list | known capabilities, no duplicates | | `targets` | list | destinations for `cat.http.send`, up to 100 | | `externalHosts` | list | destinations for `cat.external.call`, up to 100 | | `settings` | object | initial values read by `cat.settings.get` | | `settingsSchema` | object | optional, up to 32 fields | | `hashes` | object | SHA-256 of every file except the manifest | > [!IMPORTANT] > Names, descriptions and interface texts need both `pt-BR` and `en`. IDs and commands are stable in both languages. Without both translations the package is rejected with `E_TRANSLATION`. ## Permissions | Capability | Unlocks | |---|---| | `traffic.read` | `cat.events.on` and HTTP content in menus | | `traffic.modify` | `cat.proxy.onRequest` and `cat.proxy.onResponse` | | `http.send` | `cat.http.send` and `cat.http.cancel` | | `external.call` | `cat.external.call` | | `ui.menu` | `cat.ui.menu.register` | | `ui.tab` | `cat.ui.tab.register` and `cat.ui.update` | | `storage` | `cat.storage` | | `findings` | `cat.findings.add` | | `repeater` | `cat.tools.repeater.open` | | `commands` | `cat.commands.register` and `cat.commands.execute` | | `pipeline.step` | `cat.pipeline.registerStep` | | `parsers` | `cat.parsers.register` | | `connector.run` | `cat.connectors` inside approved workflows | > [!NOTE] > Menus that receive HTTP content require `traffic.read` in addition to `ui.menu` and `commands`. Repeater only receives approved destinations. ## Destinations `targets` and `externalHosts` accept IDNA domains, decimal IPv4, bracketed IPv6 and explicit ports, with optional scheme and path. | Example | Reach | |---|---| | `api.example.test` | exact domain, HTTP or HTTPS, any port | | `https://api.example.test` | HTTPS only on port 443 | | `https://api.example.test:8443` | HTTPS only on port 8443 | | `https://api.example.test/v1` | HTTPS only under `/v1` | | `*.example.test` | subdomains of `example.test`, excluding the domain itself | Credentials in the URL, `?`, `#`, `%`, spaces, global wildcards, wildcards on IPs, paths with `..` and encoded slashes are rejected. Paths require a scheme. Private networks and loopback need explicit scope, and DNS and redirects are revalidated: a public domain cannot suddenly point to a private address. ## Hashes Every package file except the manifest needs an entry in `hashes` with the lowercase hexadecimal SHA-256 of its bytes. The number of hashes must match the number of files. The [web IDE](https://netcattest.com/catsuite/en/docs/extensions/ide) computes everything automatically on export, and in [CatSuite Studio](https://netcattest.com/catsuite/en/docs/extensions/vscode) the **CatSuite: Update manifest hashes** command does the same in VS Code. ## Settings with settingsSchema ```json { "settingsSchema": { "laboratory": {"title": {"pt-BR": "Modo laboratório", "en": "Laboratory mode"}, "type": "boolean"}, "limit": {"title": {"pt-BR": "Limite", "en": "Limit"}, "type": "integer", "minimum": 1, "maximum": 50}, "key": {"title": {"pt-BR": "Credencial", "en": "Credential"}, "type": "credential"} } } ``` Accepted types: `string`, `boolean`, `integer`, `number` and `credential`. The `secret` alias means a credential reference, never its content. `enum` accepts 1 to 50 values and keys follow `[a-zA-Z0-9_.-]{1,64}`. ## Format 2 `formatVersion: 2` adds UUID `revisionId` and `lineageId`, `parentHash`, `requiresSdk` (from `1.0.0` to `1.4.0`), an optional Ed25519 signature over canonical JSON and optional password protection. Editing in the app removes the old signature and creates a new revision; exporting signs with the local identity. See [Security, vault and data protection](https://netcattest.com/catsuite/en/docs/security). ## Package limits | Item | Limit | |---|---| | `.catplug` file | 10 MiB | | Expanded content | 40 MiB | | Files | 500 | | `manifest.json` | 64 KiB | | Each file | 4 MiB | | Paths | relative, up to 200 characters, no leading `/`, `\`, `:` or `..` | Symbolic links and duplicate files are rejected with `E_PATH`. --- # Extension SDK 1.4.0 > The CatSuite 1.4.0 extension SDK: where to download it, what is in the package, the global cat object, the examples, the workflow templates and CatBridge capabilities. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/extensions/sdk - Section: Extensions - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/extensoes/sdk The **CatSuite extension SDK** brings together everything to build app plugins: the full API contract in TypeScript, the reference runtime, the file schemas, **fifteen editable examples** and **six workflow templates**. This is version **1.4.0 · API v1**, compatible with every earlier API version. This page shows where to download it, what is in the package and how the API is organized. | Resource | Address | |---|---| | Download the SDK (ZIP) | [catsuite-sdk-1.4.0.zip](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/catsuite-sdk-1.4.0.zip) | | Checksums | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/sdk-1.4.0/SHA256SUMS.txt) | | Source code on GitHub | [sdk folder](https://github.com/netcattest/catsuite/tree/main/sdk) | | Write in VS Code | [CatSuite Studio](https://netcattest.com/catsuite/en/docs/extensions/vscode) | | Write in the browser | [Web IDE](https://netcattest.com/catsuite/en/ide) | > [!NOTE] > You do not need to install the SDK on the device: the **QuickJS** engine runs inside the app and the global `cat` object is already available. The SDK package is for writing and validating on your computer, with the types, the examples and the schemas. ## What is in the package The ZIP extracts a `catsuite-sdk` folder with: | File or folder | Use | |---|---| | `catsuite.d.ts` | The full API contract and types for the editor. | | `sdk.js` | The reference runtime loaded by CatSuite's QuickJS host. | | `sdk.json` | The SDK version and structure. | | `esquemas` | Schemas for `manifest.json`, project, `.catflow` and `.catdata`. | | `capability-contracts.json` | Typed contracts for the CatBridge capabilities. | | `exemplos` | Fifteen editable projects, with manifests and fixtures. | | `fluxos` | Six workflow templates and fictional inputs. | > [!IMPORTANT] > Do not include `sdk.js` in the extension script: the app already provides the global `cat` object. There is no Node.js, DOM, `fetch`, shell or general access to the device's files. ## Getting started 1. Install [CatSuite Studio](https://netcattest.com/catsuite/en/docs/extensions/vscode) in VS Code and extract the SDK. 2. Open an `exemplos` folder as a project, for example `exemplos/painel`. 3. Edit the file pointed to by `entry` in `manifest.json`. Type `cat.` to explore the API. 4. Run **CatSuite: Validate project** and the Studio's local preview. 5. Build the signed `.catplug` and import it into a CatSuite version with compatible extensions. Review the permissions before enabling it. If you prefer not to install anything, use the [web IDE](https://netcattest.com/catsuite/en/ide): it brings the same types into autocomplete. ## The global `cat` object The whole SDK is exposed on the global `cat` object. Below are the API v1 groups. ### Identity - `cat.apiVersion` — always `1`. - `cat.sdkVersion` — the SDK version, `"1.4.0"` in this release. ### Events and traffic mutation - `cat.events.on(name, handler)` — observes `http.request`, `http.response` and `http.complete`. - `cat.proxy.onRequest(handler)` and `cat.proxy.onResponse(handler)` — change the message before forwarding. Returning a `CatMessage` replaces the original; returning nothing keeps it. Mutation handlers are **synchronous** and have a **100 ms** deadline. Every message reports its `source`, such as `proxy`, `network_proxy`, `repetir`, `intruso`, `descobridor`, `extension` and `laboratory`. ### HTTP sends and external APIs - `cat.http.send(request)` — sends a request to a declared and approved destination. - `cat.http.cancel(id)` — cancels a send by its `id`. - `cat.http.parseUrl(url)` — splits `scheme`, `hostname`, `port`, `pathname` and `query`. - `cat.laboratory.capture(request)` — captures a request in the lab, with no real network. - `cat.external.call(options)` — calls an external API with a protected credential (`credentialId`). ### Interface - `cat.ui.menu.register(options)` — adds items to a message menu, in the `request` or `response` contexts. - `cat.ui.tab.register(options)` — creates a native tab with a list of components. - `cat.ui.update(id, components)` — updates a tab's components. Components are rendered natively, with no HTML or visual JavaScript. See the full list in [Interface, data and findings](https://netcattest.com/catsuite/en/docs/extensions/ui-and-data). ### Data, settings and resources - `cat.storage.get(key)`, `cat.storage.set(key, value)` and `cat.storage.delete(key)` — per-extension storage, with up to 10 MiB and 128 KiB per value. - `cat.settings.get(key)` — reads a setting declared in the manifest. - `cat.resources.get(path, mode)` — reads a package resource as text or bytes. ### Findings, commands and utilities - `cat.findings.add(finding)` — records a finding with severity, confidence, URL and evidence. - `cat.commands.register(id, title, handler)` and `cat.commands.execute(id, args)` — register and run commands. - `cat.tools.repeater.open(request)` — opens a request in the Repeater module. - `cat.i18n.locale` and `cat.i18n.text(value)` — current language and resolution of a bilingual `CatText`. - `cat.bytes.fromText(text)` and `cat.bytes.toText(bytes)` — conversion between UTF-8 text and bytes. - `cat.log(message, level)` — logs a message to the extension console. ## Main types - `CatText` — a bilingual text in the `{"pt-BR": "...", en: "..."}` format. - `CatMessage` — an HTTP message, with `headers`, `body`, `url`, `method`, `status`, source and, when it comes from another extension, `pluginOrigin` and `extensionTrail`. - `CatBody` — the message body, with `bytes`, `complete`, `truncated`, `available`, `mutable` and, when applicable, `representation` (`wire` or `decoded`), `sha256` and `reference`. - `CatRequest` — a request for `cat.http.send` or `cat.external.call`. - `CatFinding` — a finding, with `severity` (`info`, `low`, `medium`, `high`, `critical`), `confidence` (`observed`, `confirmed`, `hypothesis`) and `status` (`open`, `resolved`, `false_positive`). - `CatComponent` — an interface component. See the table below. ### Interface components | Component | Fields | Since | |---|---|---| | `text` | `text` | v1 | | `button` | `label`, `command`, `args` | v1 | | `field` and `filter` | `id`, `label`, `value` | v1 | | `list` | `items` | v1 | | `table` | `columns`, `rows` | v1 | | `http` | `message` | v1 | | `progress` | `value` | v1 | | `json` | `label`, `value` | SDK 1.2 | | `diff` | `label`, `before`, `after` | SDK 1.2 | | `timeline` | `label`, `items` with `title`, `detail` and `time` | SDK 1.2 | | `chart` | `label`, `values` with `label` and `value` | SDK 1.2 | | `graph` | `label`, `nodes` and `edges` with `from` and `to` | SDK 1.2 | ## Visual workflows SDK 1.2 added the workflow steps and parsers: - `cat.pipeline.registerStep(options, handler)` — registers a step that receives input artifacts and emits output artifacts. - `cat.parsers.register(options, handler)` — registers a parser for specific MIME types. The `handler` receives a `CatStepContext` with `inputs`, `config`, `runId`, `nodeId`, `revisionId`, `protection`, `restored`, `signal`, and the `checkpoint(state)`, `emit(kind, data)` and `progress(value)` methods. The step must watch `ctx.signal.aborted` and can resume from the state saved in `ctx.restored`. The `checkpoint` accepts a JSON of up to 32 KiB. ```js cat.pipeline.registerStep({ id: 'example.resume', title: {'pt-BR': 'Retomar', en: 'Resume'}, inputs: ['record'], outputs: ['record'] }, async ctx => { let done = ctx.restored?.done || 0; for (; done < ctx.inputs.length; done++) { if (ctx.signal.aborted) return; ctx.emit('record', ctx.inputs[done].data); await ctx.checkpoint({done: done + 1}); } }); ``` See the artifact formats, the nodes and the templates in [Visual workflows with .catflow](https://netcattest.com/catsuite/en/docs/workflows). ## CatBridge capabilities SDK 1.3 added the typed [CatBridge](https://netcattest.com/catsuite/en/docs/catbridge) capabilities: - `cat.connectors.capabilities(connectorId)` — reads the connector's capability catalog. - `cat.connectors.run(options)` — runs a typed capability (for example `http.probe`) with the approved parameters. - `cat.connectors.cancel(id)` — cancels a task by its `id`. Declare `connector.run` and `requiresSdk: "1.3.0"` or later in the manifest. SDK 1.4 extends the catalog with the ecosystem adapters (asset discovery, DNS, ports, typed fuzzing, TLS, JWT and code analysis), which require `.catflow` 5 and contract 2. See [Capabilities and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools). ## Included examples The fifteen examples are editable projects, with manifests and fixtures: - **Essentials:** panel and commands, traffic analysis, headers, workflow step and JSON parser. - **Aurora:** capture, mutation, send, analysis, menu, tab, persistence, simulated API and findings. - **Identity:** JWT, secret candidates, authorization hypotheses and report. - **APIs:** static JavaScript analysis, endpoints and OpenAPI comparison. - **CatBridge:** HTTP probing and result provenance. Real execution requires a connection, an available tool and approval; the Studio preview uses simulation. The six workflow templates come with fictional inputs. Importing a template does not broaden the scope or authorize sends; the fixtures use fictional data. > [!WARNING] > The fixtures and labs use fictional data and do not access the network. JWT analysis does not verify signatures, and authorization hints do not demonstrate improper access. Treat every signal as evidence for review. ## Next step - [JavaScript API reference](https://netcattest.com/catsuite/en/docs/extensions/api) - [Interface, data and findings](https://netcattest.com/catsuite/en/docs/extensions/ui-and-data) - [The .catplug package manifest](https://netcattest.com/catsuite/en/docs/extensions/manifest) - [CatSuite Studio for VS Code](https://netcattest.com/catsuite/en/docs/extensions/vscode) --- # JavaScript API reference > The global cat object of SDK 1.4: HTTP messages, events, mutation hooks, sends, external APIs, laboratory, resources and utilities. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/extensions/api - Section: Extensions - Updated: 2026-10-05 - Other language (pt-BR): https://netcattest.com/catsuite/docs/extensoes/api Every extension receives the global, frozen `cat` object. `cat.apiVersion` is `1` and `cat.sdkVersion` is `"1.4.0"`. API v1 stays compatible across every SDK version. ## HTTP messages Requests and responses arrive as `CatMessage`: | Field | Description | |---|---| | `id` | message identifier | | `source` | origin: `proxy`, `network_proxy`, `repetir`, `intruso`, `descobridor`, `extension` or `laboratory` | | `session` | Network Proxy session, or `null` | | `stage` | `request` or `response` | | `url`, `method` | destination and method | | `headers` | ordered list of `{name, value}` | | `body` | `bytes`, `size`, `complete`, `truncated`, `available`, `mutable`, `representation` and `sha256` | | `status`, `reason` | responses only | | `time` | timestamp | | `request` | original request, present on responses | `body.representation` tells whether bytes are on the wire (`wire`) or decompressed by the client (`decoded`). The editable preview is up to 32 KiB. ## Events Observers may be asynchronous and require `traffic.read`. ```js cat.events.on('http.request', async message => { await cat.storage.set('lastUrl', message.url); }); cat.events.on('http.response', async message => { if (message.status >= 500) { cat.log({'pt-BR': 'Falha no servidor observada.', en: 'Server failure observed.'}, 'warning'); } }); ``` Available events: `http.request`, `http.response` and `http.complete`. ## Mutation hooks ```js cat.proxy.onRequest(message => { if (cat.http.parseUrl(message.url).hostname !== 'api.aurora.test') return; message.headers = message.headers.filter(h => h.name.toLowerCase() !== 'x-cat-lab'); message.headers.push({name: 'X-Cat-Lab', value: 'auditor'}); return message; }); cat.proxy.onResponse(message => { message.headers.push({name: 'X-Cat-Auditor', value: '1'}); return message; }); ``` Hook rules, which require `traffic.modify`: - They are synchronous and get up to 100 ms per run. Returning a Promise raises `E_HOOK_ASYNC`. - They do not send requests, persist data or update the interface. - Returning `undefined` keeps the message; returning the message applies the change. - Do not change identity, origin or integrity flags. Headers do not accept line breaks. - Compression headers cannot be changed, and only bodies with `mutable: true` can be edited. - The effective message is validated before sending. App scopes and blocks still apply. ## HTTP sends ```js const response = await cat.http.send({ id: 'lookup-1', url: 'https://api.aurora.test/api/pedidos', method: 'GET', headers: [{name: 'Accept', value: 'application/json'}] }); cat.http.cancel('lookup-1'); ``` `cat.http.send` requires `http.send` and uses the manifest `targets`. Destinations are checked before sending and after changes, automatic redirects are disabled and TLS is validated. There are two concurrent calls per extension, a 120-second total timeout and responses up to 8 MiB. Sends to CatSuite’s own proxy are rejected with `E_PROXY_LOOP`. ## External APIs ```js const response = await cat.external.call({ url: 'https://advisories.aurora.test/advisories?code=CACHE-001', method: 'GET', credentialId: 'my-key' }); ``` `cat.external.call` requires `external.call` and uses `externalHosts`. The credential is configured on the extension screen, protected by Android Keystore and added by the host as `Bearer`. Your code never receives the secret value. ## Laboratory ```js const captured = await cat.laboratory.capture({ url: 'https://api.aurora.test/api/perfil', method: 'GET', headers: [{name: 'Accept', value: 'application/json'}] }); ``` With `settings.laboratory` set to `true`, the host simulates captured traffic from `api.aurora.test`, runs the capture and mutation hooks and also simulates `advisories.aurora.test`. The laboratory makes no external connections. Without laboratory mode the call fails with `E_LABORATORY`. ## Repeater ```js cat.tools.repeater.open({url: 'https://api.aurora.test/api/perfil', method: 'GET', headers: []}); ``` Opens the message in Repeater. Requires `repeater` and only accepts approved destinations. ## Package resources ```js const fixtures = JSON.parse(await cat.resources.get('fixtures.json')); const bytes = await cat.resources.get('signature.bin', 'bytes'); ``` Reads files from the package itself. Text is limited to 128 KiB and binary resources to 32 KiB. There is no access to device files. ## Utilities | Function | Description | |---|---| | `cat.http.parseUrl(url)` | returns `{scheme, hostname, port, pathname, query}` and rejects credentials in the URL | | `cat.bytes.fromText(text)` | converts UTF-8 text into a byte list | | `cat.bytes.toText(bytes)` | converts a byte list into UTF-8 text | | `cat.i18n.locale` | `pt-BR` or `en` | | `cat.i18n.text(value)` | picks the current language from a bilingual object | | `cat.log(message, level)` | records `info`, `warning` or `error`, with plain or bilingual text | ## Errors Failures use stable `E_*` codes with translated descriptions, such as `E_PERMISSION`, `E_HOST`, `E_TIMEOUT` and `E_BODY`. See the [complete list of codes](https://netcattest.com/catsuite/en/docs/reference/errors). ```js try { await cat.http.send({url: 'https://out-of-scope.test/'}); } catch (error) { cat.log(String(error.code || error.message), 'error'); } ``` --- # Interface, data and findings > Commands, message menus, native tabs and components; storage, settings, credentials and findings with evidence. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/extensions/ui-and-data - Section: Extensions - Updated: 2026-10-05 - Other language (pt-BR): https://netcattest.com/catsuite/docs/extensoes/interface-e-dados ## Commands ```js cat.commands.register('lab.analyze', {'pt-BR': 'Analisar', en: 'Analyze'}, async args => { await cat.storage.set('lastAnalysis', args); return {ok: true}; }); const run = await cat.commands.execute('lab.analyze', {origin: 'tab'}); ``` IDs follow `[a-z][a-z0-9_.-]{1,79}` and must be unique. `cat.commands.execute` starts another command of the same extension and returns the run identifier. Requires `commands`. ## Message menus ```js cat.ui.menu.register({ id: 'lab.menu', title: {'pt-BR': 'Analisar com o laboratório', en: 'Analyze with the lab'}, command: 'lab.analyze', contexts: ['request', 'response'] }); ``` Menu actions receive the raw request and response, the `url` and the `source`. Requires `ui.menu`, `commands` and, for HTTP content, `traffic.read`. ## Native tabs ```js cat.ui.tab.register({ id: 'lab.panel', title: {'pt-BR': 'Laboratório', en: 'Laboratory'}, components: [ {type: 'text', text: {'pt-BR': 'Pronto para analisar.', en: 'Ready to analyze.'}}, {type: 'field', id: 'note', label: {'pt-BR': 'Nota', en: 'Note'}}, {type: 'button', label: {'pt-BR': 'Salvar nota', en: 'Save note'}, command: 'lab.save'} ] }); cat.commands.register('lab.save', {'pt-BR': 'Salvar nota', en: 'Save note'}, async args => { await cat.storage.set('note', args.note || ''); cat.ui.update('lab.panel', [{type: 'text', text: {'pt-BR': 'Nota salva.', en: 'Note saved.'}}]); }); ``` Field values are sent as arguments to the button command. Requires `ui.tab`. ## Components Components are rendered natively, with no visual HTML or JavaScript. | Type | Fields | Since | |---|---|---| | `text` | `text` | v1 | | `button` | `label`, `command`, `args` | v1 | | `field` and `filter` | `id`, `label`, `value` | v1 | | `list` | `items` | v1 | | `table` | `columns`, `rows` | v1 | | `http` | `message` | v1 | | `progress` | `value` | v1 | | `json` | `label`, `value` | SDK 1.2 | | `diff` | `label`, `before`, `after` | SDK 1.2 | | `timeline` | `label`, `items` with `title`, `detail` and `time` | SDK 1.2 | | `chart` | `label`, `values` with `label` and `value` | SDK 1.2 | | `graph` | `label`, `nodes` and `edges` with `from` and `to` | SDK 1.2 | Human-facing labels need `pt-BR` and `en`. Technical fields and identifiers stay as they are. ## Storage ```js await cat.storage.set('counter', 1); const counter = await cat.storage.get('counter'); await cat.storage.delete('counter'); ``` JSON data is kept per extension, with a 10 MiB quota and up to 128 KiB per value. The app uses a versioned database with transactions, and data survives updates. Requires `storage`. ## Settings ```js const laboratory = cat.settings.get('laboratory'); ``` `cat.settings.get` reads the values from `settings`, validated by the `settingsSchema` of the [manifest](https://netcattest.com/catsuite/en/docs/extensions/manifest). ## Credentials Register credentials on the extension screen and reference only their identifier in code or forms. They are protected by Android Keystore, added by the host as `Bearer` and never included in exports. ## Findings ```js cat.events.on('http.response', async message => { const cache = message.headers.find(h => h.name.toLowerCase() === 'cache-control'); if (!cache || !cache.value.includes('public')) return; await cat.findings.add({ fingerprint: 'public-cache:' + cat.http.parseUrl(message.url).pathname, title: {'pt-BR': 'Resposta com cache público', en: 'Response with public cache'}, description: {'pt-BR': 'A resposta declara Cache-Control público.', en: 'The response declares public Cache-Control.'}, severity: 'low', confidence: 'observed', url: message.url, evidence: {request: message.request, response: message} }); }); ``` | Field | Values | |---|---| | `severity` | `info`, `low`, `medium`, `high`, `critical` | | `confidence` | `observed`, `confirmed`, `hypothesis` | | `status` | `open`, `resolved`, `false_positive` | The `fingerprint` consolidates repeated findings and preserves the status chosen by the user. Requires `findings` and, in this example, `traffic.read`. ## Exporting with .catdata A `.catdata` file contains selected data and findings. Evidence is optional; sensitive headers, bodies and URL parameters are redacted on export, and credentials are never exported. Importing validates the format and requires the matching extension to be installed. --- # Web extension IDE > How to use the CatSuite IDE in the browser to create extensions from scratch or from examples, validate, simulate, inspect and export .catplug packages. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/extensions/ide - Section: Extensions - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/extensoes/ide The [extension IDE](https://netcattest.com/catsuite/en/ide) is a complete environment to write, test and package `.catplug` extensions right in the browser. Everything happens on your device: code is never sent to servers, the simulator makes no network connections and the project is saved only in this browser. ## Starting a project Nothing is loaded automatically when the IDE opens. The start screen asks how you want to begin: | Option | What happens | |---|---| | **Continue where I left off** | Reopens the project saved in this browser, showing its name, ID, version, file count and last save time. It only appears when a saved project exists. | | **Start from scratch** | Creates a blank project with `manifest.json` and an empty `main.js`. You enter the name, the name in the other language, the ID and the author. | | **Start from an example** | Opens one of the ready-made templates, all tested in the simulator with fictional data. | | **Import .catplug** | Opens a package exported by the app or by the IDE itself. | The IDE toolbar **New** button returns to this screen at any time, with an option to go back to the open project. > [!WARNING] > The IDE keeps one project per browser. Creating, opening an example or importing replaces the saved project, so the IDE always asks for confirmation first. Export the `.catplug` to keep a copy. ### Starting from scratch The ID is generated from the name: accents are removed, spaces become hyphens and the `lab.` prefix is added. You can edit the ID freely as long as it follows the manifest pattern: 3 to 64 characters, starting with a letter, using only lowercase letters, numbers, dots and hyphens. The initial manifest already passes validation: ```json { "formatVersion": 1, "apiVersion": 1, "id": "lab.my-extension", "version": "1.0.0", "author": "QA team", "entry": "main.js", "name": { "pt-BR": "Minha extensão", "en": "My extension" }, "description": { "pt-BR": "Descreva aqui o que a extensão faz.", "en": "Describe what the extension does." }, "permissions": [], "targets": [], "externalHosts": [], "settings": {}, "hashes": {} } ``` ### Available examples | Example | Shows | Permissions | |---|---|---| | Basic template | command, native tab, field and storage | `commands`, `ui.tab`, `storage` | | Request tagger | `onRequest` and `onResponse` hooks in the laboratory | `traffic.read`, `traffic.modify`, `ui.tab`, `storage`, `commands` | | Cache auditor | sends, simulated external API, menu and a finding with evidence | `traffic.read`, `http.send`, `external.call`, `findings`, `storage`, `ui.menu`, `ui.tab`, `commands` | | Workflow step | step with checkpoints and a JSON parser | `pipeline.step`, `parsers`, `traffic.read` | | Components panel | every native interface component | `ui.tab`, `commands`, `storage` | ## IDE areas | Area | Purpose | |---|---| | Files | package list, plus creating, renaming and deleting files | | Permissions | checkboxes that update `permissions` in `manifest.json` | | SDK reference | `cat` APIs with a filter and snippets ready to insert | | Templates | replaces the current project with an example | | Editor | syntax highlighting, line numbers and problem markers | | Problems | validation errors, warnings and hints with a shortcut to the line | | Console | `cat.log` entries, simulated sends and runtime failures | | Laboratory | captures fictional requests to test proxy hooks | | Preview | tabs registered by the extension, rendered like in the app | | Inspector | hooks, commands, menus, steps, parsers and stored data | | Findings | recorded findings with severity, confidence, status and evidence | On small screens the areas are grouped into four tabs: **Files**, **Code**, **Preview** and **Console**. ## Editor and shortcuts | Shortcut | Action | |---|---| | `Tab` and `Shift` + `Tab` | indent and outdent | | `Enter` | new line keeping the indentation | | `Ctrl` + `S` | save in the browser | | `Ctrl` + `Enter` | validate and run in the simulator | | `Esc` then `Tab` | leave the editor with the keyboard | On macOS, use `Cmd` instead of `Ctrl`. The project is also saved automatically a moment after every change. ## Validation Validation runs on every change and uses the same import rules as the app: - required manifest fields, `pt-BR` and `en` texts, version and ID; - `targets` and `externalHosts` destinations, including wildcards, ports and private addresses; - declared permissions compared with the APIs used in the code; - steps and parsers with `http` inputs require `traffic.read`; - APIs that do not exist in QuickJS, such as `fetch`, `require` and `document`; - `import` and `export`, which are not supported because the code runs as a script; - syntax errors in the entry file, checked without running the code. Errors block running and exporting. Warnings and hints do not. ## Simulator **Run** loads the entry file into an isolated Web Worker that reproduces SDK API v1. The simulator uses the language selected in the site language selector: in Portuguese, `cat.i18n.text` and bilingual texts show `pt-BR`; in English, `en`. The simulator applies the same rules as the app: - every API requires its permission and answers `E_PERMISSION` when it is missing; - sends and external APIs respect `targets` and `externalHosts`; - change hooks must be synchronous and are stopped if they hang; - storage is limited to 128 KiB per value and 10 MiB per extension; - findings are consolidated by `fingerprint`. [CatBridge](https://netcattest.com/catsuite/en/docs/catbridge) connectors are not available in the browser and answer `E_CONNECTOR`. ### Fictional data with fixtures.json Sends, external APIs and the laboratory use the routes in `fixtures.json`. Missing routes answer with a simulated 404. ```json { "scenario": "fictional", "routes": [ { "url": "https://api.aurora.test/api/perfil", "status": 200, "cacheControl": "public, max-age=600", "body": { "id": "cliente-ficticio-001", "scenario": "fictional" } }, { "url": "https://api.aurora.test/timeout", "error": "E_TIMEOUT" } ] } ``` To use `cat.laboratory.capture`, enable `settings.laboratory` in the manifest. ## Exporting the package **Export .catplug** validates the project and builds the package: 1. removes the previous signature, because the content was edited; 2. recomputes the SHA-256 of every file in `hashes`; 3. in format 2, creates a new `revisionId` and records `parentHash` when the project came from an import; 4. compresses everything into an `id-version.catplug` file. Then import the file in the app under **Settings → Extensions**. The app signs the package again and shows the permissions before enabling the extension. ## IDE security - The page blocks every network connection through its content security policy. - Extension code runs isolated, with no access to the page, cookies or browser storage. - `fetch`, `XMLHttpRequest`, `WebSocket`, `importScripts`, `WebAssembly` and the worker message channel are blocked for extension code. - Imported packages go through the format limits: up to 10 MiB compressed, 40 MiB expanded, 4 MiB per file and 500 files, with no absolute paths, `..`, symbolic links or encrypted entries. - Mismatched hashes produce a console warning and are recomputed on export. - Password-protected packages (`CATSEAL2`) do not open in the web IDE: open them in the app or inspect them in [CatSuite Studio](https://netcattest.com/catsuite/en/docs/extensions/vscode). > [!TIP] > Start from the basic template, run it in the simulator and only then add permissions. Validation points out every declared permission the code does not use. ## Prefer VS Code? The same experience exists as an installable extension: **CatSuite Studio** brings SDK suggestions, validation, a local preview with fixtures and signed `.catplug` package builds inside Visual Studio Code. Projects started in the web IDE can carry on in the editor. - [Install CatSuite Studio from the Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) - [Source code in the catsuite-vscode folder on GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) - [Full CatSuite Studio guide](https://netcattest.com/catsuite/en/docs/extensions/vscode) ## Next steps - [CatSuite Studio for VS Code](https://netcattest.com/catsuite/en/docs/extensions/vscode) - [Manifest and .catplug package](https://netcattest.com/catsuite/en/docs/extensions/manifest) - [JavaScript API reference](https://netcattest.com/catsuite/en/docs/extensions/api) - [Interface, data and findings](https://netcattest.com/catsuite/en/docs/extensions/ui-and-data) --- # CatSuite Studio for VS Code > CatSuite Studio for VS Code: how to install and use the extension to create, validate, test and sign .catplug plugins with CatSuite SDK suggestions. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/extensions/vscode - Section: Extensions - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/extensoes/vscode **CatSuite Studio** is the official CatSuite extension for **Visual Studio Code**. With it you write JavaScript plugins, commands and workflows for the CatSuite app without leaving the editor: **SDK** suggestions as you type `cat.`, ready-made templates, project **validation**, a **local preview** with fixtures and **signed `.catplug`** package builds. This page explains how to install, configure and use every feature of the extension. | Resource | Address | |---|---| | Install the extension | [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio) | | Source code | [catsuite-vscode folder on GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode) | | License | MIT | | Requirement | Visual Studio Code 1.100.0 or newer | ## What CatSuite Studio is and what it is for CatSuite Studio is a development workbench for [CatSuite extensions](https://netcattest.com/catsuite/en/docs/extensions). It brings a plugin's full cycle into VS Code: writing the code with SDK help, checking the manifest and permissions, watching the behavior in an isolated preview and building the signed package you import into the app. It is the installable alternative to the [web extension IDE](https://netcattest.com/catsuite/en/docs/extensions/ide). Both speak the same API v1 contract and produce `.catplug` packages; the choice depends on where you prefer to work. > [!NOTE] > CatSuite Studio ships the extension SDK: the `catsuite.d.ts` types file comes inside the extension and powers the editor suggestions. You do not need to download the SDK separately. ## Installation ### From the Marketplace 1. Open the [CatSuite Studio page on the Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=NetCatTest.catsuite-studio). 2. Click **Install** and allow the browser to open VS Code. 3. Confirm the installation in the editor. ### From the VS Code Extensions view 1. Open the **Extensions** view in the VS Code sidebar. 2. Search for **CatSuite Studio**. 3. Check that the publisher is **NetCatTest** and click **Install**. ### From the command line ```bash code --install-extension NetCatTest.catsuite-studio ``` ### Requirements - **Visual Studio Code 1.100.0 or newer**. - A **trusted workspace**: creating projects, running the preview, signing and exporting require the open folder to be marked as trusted in VS Code. - A CatSuite app that supports extensions, to install and run the exported packages. > [!WARNING] > Install CatSuite Studio only from the official Marketplace or from the [source code on GitHub](https://github.com/netcattest/catsuite/tree/main/catsuite-vscode). Be wary of `.vsix` files distributed on other sites. ## Getting started 1. Open a folder in Visual Studio Code. 2. Open the command palette and run **CatSuite: Create extension**. 3. Pick a template and open its JavaScript entry script. 4. Type `cat.` to explore the SDK, then run **CatSuite: Validate project**. 5. Run **CatSuite: Test with a local fixture** to check the preview. 6. When the project is ready, run **CatSuite: Build signed .catplug** and import the package into a CatSuite version that supports extensions. For a quick script, with no project, run **CatSuite: New CatPlug script**, or create an empty `.catjs` file or textual `.catplug` file and type `catplug`. ## The CatSuite Studio interface After installation, a **CatSuite** icon appears in the VS Code activity bar. It opens two views: - **Projects** — the CatSuite projects in the open workspace. - **SDK features** — the SDK features available to insert into your code. The **CatSuite: CatSuite Atelier** command opens the extension's main panel, the starting point to create, validate, test and package. ## Writing with the SDK - **Suggestions as you type `cat.`.** The editor lists the SDK APIs with contextual help, based on the `catsuite.d.ts` types. By default suggestions appear in any language; you can limit them to CatSuite projects in the settings. - **The `catplug` template.** Type `catplug` to insert a ready-made script template. - **Insert SDK feature.** The **CatSuite: Insert SDK feature** command adds SDK feature snippets at the cursor. - **Textual files.** Textual `.catplug` and `.catjs` files get JavaScript editing, syntax highlighting, snippets and diagnostics. Compiled packages open in a separate inspector. See the full contract in the [JavaScript API reference](https://netcattest.com/catsuite/en/docs/extensions/api). ## Creating projects and workflows The **CatSuite: Create extension** command opens a wizard with templates for: - panels and commands; - traffic analysis; - header changes; - workflow steps; - parsers. The **CatSuite: Create example workflow** command generates an example `.catflow` file for [visual workflows](https://netcattest.com/catsuite/en/docs/workflows). ## Validating the project CatSuite Studio checks the project while you work: - **manifest** — identity, entry script, permissions, destinations and hashes (see [the .catplug package manifest](https://netcattest.com/catsuite/en/docs/extensions/manifest)); - **permissions and SDK usage** — whether the code uses capabilities the manifest declares; - **file hashes** — whether the manifest hashes match the files; - **workflow connections** — whether the steps of a `.catflow` are wired correctly. With **continuous validation** on (the default), problems show up in the editor as you type. To run the full check, use **CatSuite: Validate project**. After changing files, **CatSuite: Update manifest hashes** recalculates the hashes. The `manifest.json`, `catsuite.projeto.json`, `.catflow` and `.catdata` files also get JSON schema validation, with field suggestions. ## Local preview with fixtures The **CatSuite: Test with a local fixture** command runs the script in an **isolated QuickJS preview**, with local fixtures and simulated host APIs. In the preview you inspect: - the registered tabs; - the findings generated; - the request changes; - the emitted artifacts. > [!IMPORTANT] > The preview does not send live HTTP requests and does not run external tools. Validate the real behavior separately, in your authorized CatSuite environment. ## Packaging and signing The **CatSuite: Build signed .catplug** command creates the plugin's final package with your **signing identity**. The source script goes through the project build before it reaches the app, and the installed CatSuite must support the package format and the SDK version the plugin requests. The signing identity is managed by three commands: | Command | What it does | |---|---| | **CatSuite: Show signing identity** | Shows the identity used to sign your packages. | | **CatSuite: Export protected identity backup** | Creates an encrypted backup of the identity, to keep or move to another machine. | | **CatSuite: Restore identity from backup** | Restores the identity from a protected backup. | > [!TIP] > Keep the identity backup somewhere safe. It lets you keep signing packages as the same author after you change computers. ## Inspecting packages and recognizing authors The **CatSuite: Inspect CatSuite file** command opens compiled packages and shows the package integrity and the author fingerprint. The inspection tells two things apart: - **valid signature** — the package was not changed after it was signed; - **recognized author** — you have already confirmed that the fingerprint belongs to a trusted author. Use **CatSuite: Recognize this package author** after checking the fingerprint with the author through a trusted channel, and **CatSuite: Remove recognized author** to undo it. The inspector also opens password-protected packages. To edit an existing plugin without touching the original, use **CatSuite: Create editable package copy**: the extension turns the package into a project copy and preserves the original package and its origin information. > [!WARNING] > A valid signature does not mean the author is trustworthy. Check the fingerprint before recognizing an unfamiliar author. ## Files CatSuite Studio understands | File | What it is for | |---|---| | `.catjs` or textual `.catplug` | JavaScript source for development | | `manifest.json` | Plugin identity, entry script, permissions, destinations and hashes | | `catsuite.projeto.json` | CatSuite Studio project configuration | | Compiled `.catplug` | Plugin package for inspection and import into the app | | `.catflow` | Workflow definition, with validation and inspection | | `.catdata` | Exported CatSuite data, for inspection | ## Every command Open the command palette (`Ctrl+Shift+P` on Windows and Linux, `Cmd+Shift+P` on macOS) and type **CatSuite** to see the list. | Command | What it does | |---|---| | **CatSuite Atelier** | Opens the extension's main panel. | | **Create extension** | New project wizard from a template. | | **New CatPlug script** | Creates a standalone script, with no project. | | **Open script in editor** | Opens the project's entry script. | | **Validate project** | Checks manifest, permissions, SDK usage, hashes and workflows. | | **Update manifest hashes** | Recalculates the file hashes in the manifest. | | **Insert SDK feature** | Inserts an SDK feature snippet at the cursor. | | **Create example workflow** | Generates an example `.catflow`. | | **Test with a local fixture** | Runs the isolated preview with fixtures. | | **Build signed .catplug** | Packages and signs the plugin. | | **Inspect CatSuite file** | Opens a CatSuite package or file in the inspector. | | **Create editable package copy** | Turns a package into an editable project, preserving the original. | | **Show signing identity** | Shows the signing identity. | | **Export protected identity backup** | Exports the encrypted identity. | | **Restore identity from backup** | Restores the identity from a backup. | | **Recognize this package author** | Marks the author's fingerprint as recognized. | | **Remove recognized author** | Removes an author from the recognized list. | | **Apply CatSuite style** | Applies the CatSuite look to the editor. | | **Restore previous style** | Returns to the theme you used before. | | **Apply CatSuite file icons** | Turns on the CatSuite file icons. | | **Choose language** | Switches the language of the extension panels. | | **Open CatSuite Studio settings** | Opens the extension settings. | | **Refresh** | Reloads the extension views. | ## Settings Run **CatSuite: Open CatSuite Studio settings** or search for `catsuite` in the VS Code settings. | Option | Values | Default | What it does | |---|---|---|---| | `catsuite.idioma` | `sistema`, `pt-BR`, `en` | `sistema` | Panel, prompt and help language. VS Code command labels follow the editor language. | | `catsuite.validacaoContinua` | `true`, `false` | `true` | Validates manifest, JavaScript and workflow while you edit. | | `catsuite.estiloPainel` | `catsuite`, `editor` | `catsuite` | Style of the CatSuite Studio panels. It does not change the global theme. | | `catsuite.autor` | text | empty | Suggested author for new plugins. | | `catsuite.sugestoesGlobais` | `true`, `false` | `true` | Shows `cat.` suggestions and `catplug` templates in any file, including files outside projects. | ```json { "catsuite.idioma": "en", "catsuite.validacaoContinua": true, "catsuite.estiloPainel": "catsuite", "catsuite.autor": "Lab Team", "catsuite.sugestoesGlobais": false } ``` ## Themes, icons and language CatSuite Studio ships two color themes and a file icon theme: - **CatSuite Cyber** — the app's black-and-yellow look; - **CatSuite Comfort** — an alternative palette for those who prefer less contrast; - **CatSuite icons** — dedicated icons for the ecosystem files. Use **CatSuite: Apply CatSuite style** and **CatSuite: Apply CatSuite file icons** to turn them on, and **CatSuite: Restore previous style** to return to your theme. The panels work in **Brazilian Portuguese** and **English**: choose with **CatSuite: Choose language** or let them follow the editor language. ## CatSuite Studio or the web IDE? | Situation | Best option | |---|---| | Trying out a quick idea, with nothing to install | [Web IDE](https://netcattest.com/catsuite/en/docs/extensions/ide) | | Working on a computer where you cannot install extensions | [Web IDE](https://netcattest.com/catsuite/en/docs/extensions/ide) | | Larger projects, versioned with Git | CatSuite Studio | | Building packages signed with your author identity | CatSuite Studio | | Inspecting received packages and recognizing authors | CatSuite Studio | ## Common problems **`cat.` suggestions do not appear.** Check that the `catsuite.sugestoesGlobais` option is on, or that the file is inside a CatSuite project. **I cannot create the project, test or sign.** These actions require a trusted workspace. Mark the folder as trusted in VS Code and try again. **The app rejected the package.** Check that your CatSuite version supports extensions and the SDK version the plugin requests, run **CatSuite: Validate project** and build the package again. **Validation reports mismatched hashes.** Run **CatSuite: Update manifest hashes** after changing the project files. **I changed computers and lost the identity.** Restore it with **CatSuite: Restore identity from backup**, using the protected backup you exported earlier. ## Next step - [Web extension IDE](https://netcattest.com/catsuite/en/docs/extensions/ide) - [JavaScript API reference](https://netcattest.com/catsuite/en/docs/extensions/api) - [The .catplug package manifest](https://netcattest.com/catsuite/en/docs/extensions/manifest) - [Downloads and SDK](https://netcattest.com/catsuite/en/docs/downloads) --- # Visual workflows with .catflow > Build graph-based analyses with steps, parsers, conditions and joins; revision-based approvals, traceable artifacts, checkpoints and limits. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/workflows - Section: Visual workflows - Updated: 2026-10-05 - Other language (pt-BR): https://netcattest.com/catsuite/docs/fluxos Visual workflows turn analysis routines into reproducible graphs. Every block receives typed artifacts, produces new artifacts and records duration, inputs, outputs, hashes and versions. ## Get started 1. Open **Settings → Extensions → Workflows**. 2. Install the laboratory templates and open a workflow. 3. Review its approval and run the fixture. 4. Tap the output of a step and then the input of the next one; only compatible types are accepted. A condition offers `true` and `false` routes, and a join waits for the selected inputs. Drag, zoom, arrange or duplicate blocks. The properties panel sits on the side on larger screens and at the bottom on phones. ## Block types | Block | Role | |---|---| | `capture` | captured traffic input | | `filter` | selects artifacts | | `condition` | splits the flow into `true` and `false` | | `join` | merges branches | | `parser` | interprets content by MIME type | | `request` | sends approved requests | | `crawler` | walks pages with GET and HEAD | | `storage` | persists results | | `report` | consolidates a report | | `connector` | runs a [CatBridge](https://netcattest.com/catsuite/en/docs/catbridge) capability | | `extension` | runs a step registered by an extension | ## Artifacts | Type | Typical content | |---|---| | `http` | complete HTTP message | | `endpoint` | observed URL, with origin | | `jwt` | decoded claims, without signature verification | | `secret` | masked secret candidate | | `analysis` | structured analysis | | `finding` | finding with severity and confidence | | `record` | generic record | | `javascript` | static JavaScript source | | `openapi` | OpenAPI specification | The host generates identity, SHA-256, origin, versions, sources and protection for every artifact. Copying an input creates new evidence linked to the previous one, and metadata provided by the script never replaces the host’s. ## Register steps and parsers ```js cat.pipeline.registerStep({ id: 'lab.inspect', title: {'pt-BR': 'Inspecionar', en: 'Inspect'}, inputs: ['http'], outputs: ['http', 'analysis'] }, async ctx => { for (const input of ctx.inputs) { if (ctx.signal.aborted) return; ctx.emit('http', input.data); ctx.emit('analysis', {url: input.data.url, confidence: 'observed'}); } ctx.progress(1); }); cat.parsers.register({ id: 'lab.json', title: {'pt-BR': 'Ler JSON', en: 'Parse JSON'}, inputs: ['http'], outputs: ['record'], mimeTypes: ['application/json'] }, ctx => { for (const input of ctx.inputs) { if (!input.data.body.complete) throw new Error('E_BODY'); ctx.emit('record', JSON.parse(cat.bytes.toText(input.data.body.bytes))); } }); ``` Declare `pipeline.step` or `parsers` in the manifest and, to receive HTTP, also `traffic.read`. Only declared types can be emitted. ## Step context | Field | Description | |---|---| | `ctx.inputs` | input artifacts | | `ctx.config` | the step’s own configuration | | `ctx.runId`, `ctx.nodeId` | run and block identity | | `ctx.revisionId` | approved revision being executed | | `ctx.protection` | `PUBLIC`, `PROTECTED` or `SECRET` | | `ctx.restored` | state from the last checkpoint | | `ctx.checkpoint(state)` | stores up to 32 KiB of JSON | | `ctx.emit(type, data)` | emits an artifact | | `ctx.progress(value)` | progress from 0 to 1 | | `ctx.signal.aborted` | signals cancellation | ## Checkpoints and resuming ```js cat.pipeline.registerStep({ id: 'lab.resume', title: {'pt-BR': 'Retomar', en: 'Resume'}, inputs: ['record'], outputs: ['record'] }, async ctx => { let done = ctx.restored?.done || 0; for (; done < ctx.inputs.length; done++) { if (ctx.signal.aborted) return; ctx.emit('record', ctx.inputs[done].data); await ctx.checkpoint({done: done + 1}); } }); ``` Results, operations and checkpoints are written incrementally. Resuming reuses completed steps. An operation with an unknown outcome is never resent automatically; retrying it requires explicit authorization after reviewing possible duplicated effects. Checkpoints do not make external transactions idempotent by themselves. ## Approval and revisions The Flow ID is permanent. The revision is the SHA-256 of the executable definition, dependencies and effective policy; name and visual position are not part of that hash. Saving or exporting without executable changes keeps the activation. Changing code, settings, scope, methods, protection, capabilities or limits requires new approval, and previous revisions are archived. Sends require `network=true`, a run with sends enabled, an allowed destination and a matching capability. Generated traffic has `source=workflow`, `flowOrigin` and `pluginOrigin`, and never restarts the workflow. ## Failures and history - A failure blocks its dependents; independent branches may still finish. - A branch that was not chosen is skipped. - History shows duration, progress, inputs, outputs, errors, hashes and versions. - Comparison highlights added or removed results and version changes. - Replaying creates a new run that starts without network access. ## Limits | Resource | Default | Ceiling | |---|---|---| | Concurrent workflows | 2 | 4 | | Blocks per workflow | 32 | 128 | | Connections | 64 | 256 | | Queue | 128 | 512 | | Artifacts per run | 1,000 | 5,000 | Analyses use two 32 MiB environments, separate from the four proxy environments. A run lasts up to 15 minutes and connector tasks up to 10 minutes. Saturation is recorded and never suspends proxy forwarding. ## Included templates | Template | Steps | |---|---| | Identity audit | Capture → JWT → Secrets → Authorization → Report | | API map | Crawler → JavaScript → Endpoints → OpenAPI → Report | | Branches | Condition on Authorization, JWT and secrets branches, join and report | | API audit | Capture → httpx → Katana → join → OpenAPI comparison → Schemathesis → report | > [!NOTE] > Templates start in laboratory mode, with no sends. Numeric identifiers found by the identity audit are IDOR/BOLA hypotheses and do not demonstrate unauthorized access. --- # Security, vault and data protection > Extension isolation, PUBLIC, PROTECTED and SECRET levels, biometric vault, Ed25519 signatures, the CATSEAL2 envelope, backups and recovery. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/security - Section: Security - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/seguranca ## Isolation Extensions run on QuickJS inside a separate Android service, with their own process and UID. Every extension has limited environment, memory and time, plus exclusive SQLite data. Workflow analyses use another isolated service. Engine failures suspend extensions and keep the proxy’s current decisions. ## Protection levels In build 1.5.0+102, workflows run while the app is in the foreground. Leaving pauses execution; resuming is explicit and does not automatically repeat operations with an unknown outcome. | Level | When leaving the foreground | |---|---| | `PUBLIC` | pauses and preserves confirmed progress for explicit resume | | `PROTECTED` | pauses, saves encrypted progress and releases analysis environments | | `SECRET` | also unloads environments and wipes controlled keys and buffers | PROTECTED and SECRET require biometrics and an explicit resume. Protection is inherited by derived results and cannot be lowered by an extension. Credential references and operational authentication headers require SECRET, and private content leaves the interface when locking. ## Biometric vault The vault requires compatible strong biometrics, Android Keystore and a `CryptoObject`. The authenticated master key wraps a random key per extension or workflow. Code, settings, SQLite, logs, findings and derived results are encrypted. Enabling protection migrates existing data with a transaction and a recovery journal. ## Integrity and signatures - `hashes` covers every package resource with SHA-256. - The Ed25519 signature covers canonical JSON: sorted keys, preserved arrays and normalized decimal numbers; the signature itself is excluded from the signed input. - The manifest stores `signature.algorithm`, `publicKey` and `value` in Base64. - A valid signature proves integrity and key identity, not trust in the author. Recognizing the author is a separate decision. - Invalid signatures are rejected. Legacy unsigned files go to review; approving them creates a locally signed revision that keeps the unverified origin. ## Password-protected files When exporting with a password, the `CATSEAL2` envelope uses Argon2id with 64 MiB, three operations and one lane, libsodium 1.0.22 and AES-256-GCM. | Part | Detail | |---|---| | Header | 48 bytes: magic, version and parameters, a 16-byte salt and a 12-byte nonce | | Authentication | header authenticated as AAD and a 16-byte tag | | Content | everything encrypted, including names and metadata | | Password | at least 12 characters, up to 1,024 UTF-8 bytes, never stored | Different parameters are rejected before key derivation. Portable data files and backups support up to 64 MiB. ## Backups and recovery Create a backup after authenticating. It includes the package, settings, storage, complete findings, logs, traffic audit and related workflows with their histories and artifacts. Registered credentials and pairing certificates are left out. Restoring is a confirmed, transactional replacement: extensions and workflows come back disabled, with classification and encryption preserved and new local keys. A password backup allows recovering content when the previous biometric key was invalidated. Without a backup, a lost key cannot be rebuilt. > [!WARNING] > If a workflow combines several protected extensions and the biometric key was invalidated, restore each extension’s backup before the workflow. ## Traffic audit **Logs → Traffic changes** shows the original message, the extension’s output and the message after manual editing. The audit keeps the last 50 records per extension, with previews of up to 4 KiB and hashes. ## Responsible use CatSuite is designed for your own environments, learning, CTFs and explicitly authorized testing. Nothing is sent without your action, and every new capability goes through your approval. --- # CatBridge, the optional connector > What CatBridge is, how to download it for Windows and Linux, how numeric code pairing works, the isolated architecture and Protocol 2 with signed messages. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/catbridge - Section: CatBridge - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/catbridge **CatBridge** is an optional, portable connector written in Go that runs on **your** computer or server and executes reviewed command-line tools on behalf of an approved [visual workflow](https://netcattest.com/catsuite/en/docs/workflows). The app works without it; there is no account, store or server operated by CatSuite. > [!IMPORTANT] > An extension never chooses binaries, arguments, paths or images. It asks for a **typed capability** (for example `http.probe`) and receives normalized results. The CatBridge supervisor builds the command, validates the scope and returns only verified JSON. ## When to use it - You want to strengthen a workflow with well-known tools without leaving CatSuite. - The target is yours or you have explicit authorization, and the destinations fit a closed scope. - You can run a process on your computer and make it reachable by the phone on the same network. If you only need to observe and change traffic, create tabs, save data or record findings, none of that requires CatBridge: use the [SDK API](https://netcattest.com/catsuite/en/docs/extensions/api) directly. ## How to get it CatBridge is distributed ready to use in the official CatSuite repository, with no Go required: | System | Download | |---|---| | Windows 64-bit | [catbridge-windows-amd64.zip](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-windows-amd64.zip) | | Linux 64-bit | [catbridge-linux-amd64.tar.gz](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-linux-amd64.tar.gz) | | Checksums | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/SHA256SUMS.txt) | | Source code | [catbridge folder on GitHub](https://github.com/netcattest/catsuite/tree/main/catbridge) | The steps to download, start and pair it are in [Install and pair CatBridge](https://netcattest.com/catsuite/en/docs/catbridge/install). ## Numeric code pairing Pairing does not use a QR Code. On start, CatBridge shows the address and a **24-digit code in six groups** in the terminal. In CatSuite, open **Extensions → Connections → Pair CatBridge**, enter the address and paste or type the code. - The code lasts **two minutes** and pairs **a single device**. - The app authenticates the Bridge identity **first**, and only then sends the code through the authenticated HTTPS channel. - The code is not retained, and an incorrect code cannot install a connection. - Every device gets its own certificate, and the connector's TLS is pinned by fingerprint. ## Layered architecture | Layer | Role | |---|---| | Extension (QuickJS) | Asks for a typed capability inside an approved workflow step. It gets no socket, shell or network. | | CatSuite app | Approves the revision, signs the authorization, intersects scopes and validates every response before any effect. | | CatBridge supervisor | Builds the typed command, reserves the budget and controls the executors. The only component with Docker access. | | Trusted broker | The tools' only network path: it validates method, path, scope, DNS, redirects, rate and TLS. | | Executor (container) | Runs the tool unprivileged, with a read-only file system, networking disabled and restricted IPC. | Redirects and discoveries **do not** broaden the scope. The task's internal certificate is never presented as the target's certificate, and the broker separately validates the original server's TLS. ## Capability catalog The Bridge publishes a signed catalog with the capabilities, the executors pinned by version and hash, and the state of each one on your computer: | State | Meaning | |---|---| | `available` | Ready to run. | | `not-installed` | The executor has not been prepared on this host yet. | | `incompatible` | The executor present does not match the expected contract. | | `not-authorized` | The capability is not authorized for this connection. | | `unavailable` | Unavailable right now. | | `planned` | Expected, but not available on this Bridge. | Only `available` allows execution. The full catalog is in [Capabilities and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools). ## Protocol 2 Every message, including errors, uses the restricted **HTTP Message Signatures** profile ([RFC 9421](https://www.rfc-editor.org/rfc/rfc9421.html)) with ECDSA P-256 and SHA-256, plus `Content-Digest` ([RFC 9530](https://www.rfc-editor.org/rfc/rfc9530.html)). - The signature covers method, target, body, identity, message and the request–response binding. - A random nonce and a validity of up to 60 seconds block replays; the Bridge journal persists across restarts. - Signature and digest are verified **before** JSON parsing and before any effect. - Protocol 1 is rejected. Existing Protocol 2 connections keep working. - The signed authorization binds device, task, Flow ID, revision, step, capability, targets, data and budget. Changing any item revokes the approval. The device key lives in the Android Keystore; the server key lives in the computer's identity folder. The Bridge's local state is encrypted with AES-256-GCM. ## Using it in a step ```js cat.pipeline.registerStep({ id: 'lab.probe', title: {'pt-BR': 'Sondar serviços', en: 'Probe services'}, inputs: ['endpoint'], outputs: ['analysis'] }, async ctx => { const catalog = await cat.connectors.capabilities(ctx.config.connector); const capability = catalog.catalog.find(item => item.id === 'http.probe'); if (!capability || capability.state !== 'available') throw new Error('E_CAPABILITY_UNAVAILABLE'); const result = await cat.connectors.run({ connector: ctx.config.connector, capability: 'http.probe', tool: 'httpx', id: 'probe-1', targets: ctx.inputs.map(item => item.data.url).filter(Boolean), parameters: ctx.config.parameters }); ctx.emit('analysis', result); }); ``` Declare `connector.run` and `requiresSdk: "1.3.0"` or later in the manifest. The block configuration must declare the same connector, capability, tool and parameters as the call. To stop a task, use `cat.connectors.cancel(id)` with the same identifier passed to `run`. Idempotent IDs do not repeat tasks after a reconnection. ## Continuity - Private tasks depend on an authorization that is renewed periodically; if it stops being renewed, the task pauses. - When you leave the app, CatSuite pauses the workflows and asks the remote tasks to pause. - After a server restart, a task with an unknown outcome stays interrupted and is only repeated by explicit choice. ## Results Results arrive in signed pages of up to 50 records or 512 KiB, with verifiable receipts, versions and executable hashes. Credential values and parameters recognized as secret are redacted. > [!NOTE] > A tool signal is evidence for review, not proof of exploitation. CatBridge grants no access to arbitrary commands and does not update tools automatically. ## Next step - [Install and pair CatBridge](https://netcattest.com/catsuite/en/docs/catbridge/install) - [Capabilities and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools) - [Visual workflows](https://netcattest.com/catsuite/en/docs/workflows) --- # Install and pair CatBridge > How to download CatBridge for Windows or Linux, start the service, pair your phone with the 24-digit numeric code, use the flags and revoke devices safely. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/catbridge/install - Section: CatBridge - Updated: 2026-10-06 - Other language (pt-BR): https://netcattest.com/catsuite/docs/catbridge/instalar **CatBridge** is a portable program that runs on **your** computer or server and connects CatSuite to the command-line tools you authorize. The app works without it; there is no account, store or server operated by CatSuite. You download the connector, choose the scope and pair each phone with a **24-digit numeric code**, with no QR Code. See the overview in [CatBridge, the optional connector](https://netcattest.com/catsuite/en/docs/catbridge). > [!IMPORTANT] > Use CatBridge only on targets you own or are authorized to test. The connector does not change your firewall, does not install tools and grants no access to arbitrary commands. ## Before you start - A CatSuite version with **numeric pairing** (CatSuite 1.3.7+100 or later), with the extension module enabled. - A computer reachable by the phone on the **same network** or on a private network you configure. - The ready-made distribution **does not require Go**. Go 1.26 or later is only needed to build from source. - External tools are optional: CatBridge **starts without any tool**. In that state, pairing and the capability query work, and missing executors show up as unavailable. ## 1. Download CatBridge CatBridge is distributed ready to use, as a portable package, in the official CatSuite repository: | System | Download | |---|---| | Windows 64-bit | [catbridge-windows-amd64.zip](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-windows-amd64.zip) | | Linux 64-bit | [catbridge-linux-amd64.tar.gz](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/catbridge-linux-amd64.tar.gz) | | Checksums | [SHA256SUMS.txt](https://github.com/netcattest/catsuite/releases/download/tools-1.2.0/SHA256SUMS.txt) | | Source code | [catbridge folder on GitHub](https://github.com/netcattest/catsuite/tree/main/catbridge) | The package includes the executable, instructions in both languages, the licenses, the capability contract catalog, template examples and the executor preparation scripts. ### Check the integrity Before running it, compare the SHA-256 of the downloaded file with the value published in `SHA256SUMS.txt`. ```powershell Get-FileHash .\catbridge-windows-amd64.zip -Algorithm SHA256 ``` ```bash sha256sum -c --ignore-missing SHA256SUMS.txt ``` > [!WARNING] > Download only from the official address `github.com/netcattest/catsuite`. If the hash does not match, delete the file and download it again: a tampered executable can compromise your computer and your lab. ### Extract and open the folder On Windows, the package extracts a `CatBridge` folder with the `catbridge.exe` executable. On Linux, a `catbridge` folder with the `catbridge` executable. ```powershell Expand-Archive .\catbridge-windows-amd64.zip -DestinationPath . Set-Location .\CatBridge ``` ```bash tar -xzf catbridge-linux-amd64.tar.gz cd catbridge ``` ### Build from source (optional) If you prefer to build it, clone the repository and generate the executable inside the `catbridge` folder. It requires Go 1.26 or later. ```powershell git clone https://github.com/netcattest/catsuite.git Set-Location .\catsuite\catbridge go build -buildvcs=false -trimpath -ldflags="-s -w" -o catbridge.exe . ``` ```bash git clone https://github.com/netcattest/catsuite.git cd catsuite/catbridge go build -buildvcs=false -trimpath -ldflags="-s -w" -o catbridge . ``` ## 2. Start the service Choose your computer's local address that the phone can reach and start the service with the `serve` command: ```powershell .\catbridge.exe serve -state .\private-state -listen 0.0.0.0:8743 -public https://192.168.1.20:8743 -lang en ``` ```bash ./catbridge serve -state ./private-state -listen 0.0.0.0:8743 -public https://192.168.1.20:8743 -lang en ``` Replace `192.168.1.20` with your computer's IP. On the first run, the identity folder and certificates are created locally. A system lock prevents two servers from using the same folder at once. The `-lang en` option shows the terminal messages in English. On start, the terminal shows the address and the pairing code in six groups of four digits: ```text Address: https://192.168.1.20:8743 Pairing code: 4821 0937 5512 6604 1879 3346 Open Extensions > Connections > Pair CatBridge. The code expires in two minutes and works once. ``` ### Command-line options | Option | Default | What it does | |---|---|---| | `-state` | the user's default `CatBridge` folder | Identity folder. Use the **same folder** in every command. | | `-listen` | `127.0.0.1:8743` | Local address and port the service listens on. Use `0.0.0.0:8743` or the local network IP to accept the phone. | | `-public` | `https://127.0.0.1:8743` | Address the **phone** uses to reach the Bridge. It is stored in the identity. | | `-scope` | empty | Allowed destinations, separated by commas. The device scope and the connector scope are **intersected**. | | `-nuclei` | empty | Absolute path to the Nuclei executable. | | `-templates` | empty | Manifest of the reviewed Nuclei templates. | | `-tool-lock` | empty | Signed manifest of the prepared executors. | | `-tool-key` | empty | Fingerprint of the key that signed the executor manifest. | | `-docker-host` | empty | Docker endpoint defined by the administrator. | | `-runtime-network` | `bridge` | Egress network of the executors' network broker. | | `-upstream-ca` | empty | Additional trusted CA for the broker. | | `-device` | empty | Device identifier, used by the `revoke` command. | | `-lang` | `pt-BR` | Language of the terminal messages: `pt-BR` or `en`. | > [!NOTE] > With the default `-listen 127.0.0.1:8743`, the service only accepts connections from the computer itself. To pair a phone on the network, pass `0.0.0.0:8743` or the local IP and open the port in your firewall; CatBridge does not change the firewall. ## 3. Pair the phone 1. In CatSuite, enable the extension module in **Settings → Extensions**. 2. Open **Extensions → Connections → Pair CatBridge**. 3. Enter the **address** shown in the terminal, for example `https://192.168.1.20:8743`. 4. Paste or type the **24-digit code**. Spaces between the groups are accepted. 5. Confirm. The app installs the connection and issues the device certificate. No QR Code, account or third-party service is needed. ### How pairing protects the connection - The code is **cryptographically random**, lasts **two minutes** and pairs **a single device**. - The app **authenticates the Bridge identity first**, and only then sends the code through the authenticated HTTPS channel. - The code is **not retained** with the installed connection. - An incorrect code **cannot install** a connection. - The Bridge limits attempts: **16 per IP address and 128 in total per 60-second window**. Beyond that, it answers with the `E_PAIRING_RATE` error. After pairing, every operation uses mTLS: the device presents the certificate issued by the local CA, and Android validates the hostname, validity and **pin** of the server certificate. ### Generate a new code The code expires in two minutes. To generate another one without stopping the server, open **another terminal** in the same folder and run the `pair` command with the same identity folder and address: ```powershell .\catbridge.exe pair -state .\private-state -public https://192.168.1.20:8743 -lang en ``` ```bash ./catbridge pair -state ./private-state -public https://192.168.1.20:8743 -lang en ``` ### Pair the Android emulator The standard Android emulator reaches the computer at `10.0.2.2`. Use a separate identity folder for it: ```powershell .\catbridge.exe serve -state .\private-emulator -listen 127.0.0.1:8743 -public https://10.0.2.2:8743 -lang en ``` ### Change the Bridge address Keep `-public` equal to the address the device uses: the Bridge identity contains that address. If you need to change the hostname or the public IP, use a **new identity folder** and pair again. ## 4. Use it in a workflow With the device paired, open **Extensions → Connections** to see the connection state and the available capabilities. Capabilities only run inside an approved [workflow step](https://netcattest.com/catsuite/en/docs/workflows), when the extension declares `connector.run`. The code example is in [CatBridge, the optional connector](https://netcattest.com/catsuite/en/docs/catbridge) and the full catalog in [Capabilities and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools). ## Revoke a device Removing the connection in the app revokes the certificate when the Bridge is reachable and always deletes the local key. To revoke a disconnected device, use the `revoke` command on the computer: ```powershell .\catbridge.exe revoke -state .\private-state -public https://192.168.1.20:8743 -device DEVICE_IDENTIFIER ``` ```bash ./catbridge revoke -state ./private-state -public https://192.168.1.20:8743 -device DEVICE_IDENTIFIER ``` Server-side revocation blocks that device immediately on the next operations. ## Linux executors (optional) The `http.probe`, `web.crawl` and `api.schema.test` tools and the ecosystem adapters run in Linux containers, behind a network broker. Use **Docker Desktop with the Linux engine** on Windows or **Docker Engine** on a Linux server of yours. Only the trusted supervisor touches Docker; the containers get no Docker socket, no general folders and no host network. Preparation is an administrative host operation, done by you and never by the app. It requires Docker with the Linux engine, Python 3.12 or later and the `cryptography` library. The script already ships in the package's `runtime` folder: ```bash python runtime/prepare.py --output runtime/prepared --go go --docker docker ``` Preparation verifies the official tool checksums, pins the base image by digest, generates dependencies with hashes and installs offline. Then start the service with the signed manifest and the fingerprint stored in `runtime/prepared/author.sha256`: ```powershell .\catbridge.exe serve -state .\private-state -listen 0.0.0.0:8743 -public https://192.168.1.20:8743 -scope https://api.example.test -tool-lock .\runtime\prepared\tools.lock.json -tool-key FINGERPRINT ``` Approvals use **digests**, not mutable tags. Any change to the images, the binary or the supervisor produces a new identity and requires reviewing the affected approvals. For local Nuclei, add `-nuclei` with the absolute path and `-templates` with the reviewed manifest (see [Capabilities and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools)). ## Protect the identity - The device key lives in the **Android Keystore**; the server key lives in the computer's **identity folder**. - CatBridge local state is encrypted with **AES-256-GCM**. Grant access to the identity folder only to the responsible user. - Keep the state folder, keys, certificates, codes and logs in a private location and restrict server access to the network you need. - API credentials and pairings are **excluded** from portable backups. ## Compatibility | Item | Status | |---|---| | Numeric pairing | Requires CatSuite 1.3.7+100 or later. The Bridge only generates new numeric codes. | | Existing Protocol 2 connections | Keep working, with no new pairing. | | Legacy signed pairing data channel | Remains compatible. | | SDK | SDK 1.3 capabilities and the SDK 1.4 ecosystem adapters. | | Protocol 1 | Not accepted. | ## Common problems **The code expired.** Each code lasts two minutes. Generate another with the `pair` command in a second terminal, without stopping the server. **The app reports `E_PAIRING_RATE`.** There were too many attempts in a short time. Wait a minute and try again with a new code. **The phone cannot reach the Bridge.** Check that `-listen` is not `127.0.0.1`, that both devices are on the same network and that the port is open in the firewall. **I changed the computer's IP.** The identity stores the `-public` address. Use a new identity folder and pair again. **Capabilities show up as unavailable.** The Bridge started without tools. Prepare the executors or provide Nuclei and the reviewed templates. ## Next step - [Capabilities and tools](https://netcattest.com/catsuite/en/docs/catbridge/tools) - [Visual workflows](https://netcattest.com/catsuite/en/docs/workflows) - [Downloads and SDK](https://netcattest.com/catsuite/en/docs/downloads) --- # Capability catalog and tools > CatBridge typed capabilities, pinned executors, the read-only, external-approved and active-approved profiles, budgets, reviewed templates and the data each tool receives. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/catbridge/tools - Section: CatBridge - Updated: 2026-10-05 - Other language (pt-BR): https://netcattest.com/catsuite/docs/catbridge/ferramentas An extension never chooses binaries, arguments or images. It requests a **typed capability** and the [CatBridge](https://netcattest.com/catsuite/en/docs/catbridge) supervisor builds the command, reserves the budget and returns only verified JSON. Each capability has an **executor pinned by version and hash**; modifying the executable invalidates approved capabilities. > [!NOTE] > The catalog distinguishes **implementation** from **availability**. A capability may exist in the code and show up as `planned`, `not-installed` or `unavailable` until you prepare the matching executor on your computer. ## Initial capabilities (SDK 1.3) | Capability | Pinned executor | Result | |---|---|---| | `http.probe` | httpx 1.12.0 | HTTP services, status, title, selected headers and observed technologies | | `web.crawl` | Katana 1.7.0 | Pages, forms, parameters and static JavaScript candidates | | `api.schema.test` | Schemathesis 4.29.1 | Coverage, checks, observed failures, seed and reduced case | | `nuclei.scan` | Admin's reviewed install | Results from approved HTTP templates | ## Ecosystem capabilities (SDK 1.4) The stage 2 to 5 adapters require contract 2 and `.catflow` 5. API v1 and the signed Protocol 2 stay compatible. | Capability | Pinned executor | |---|---| | `assets.subdomains.discover` | subfinder 2.16.0, Amass 5.1.1 | | `dns.resolve` / `dns.enumerate` | dnsx 1.3.1 | | `dns.permute` | AlterX 0.1.0 | | `urls.history` | gau 2.2.4, waybackurls 0.1.0 | | `assets.search` | Uncover 1.2.1 | | `net.ports.discover` | naabu 2.6.1, Nmap 7.991 | | `net.services.fingerprint` | Nmap 7.991 | | `web.paths.fuzz` / `http.parameters.fuzz` / `web.vhosts.fuzz` | ffuf 2.3.0 | | `http.parameters.discover` | Arjun 2.2.7 | | `web.xss.analyze` | Dalfox 3.2.3 | | `api.sqli.validate` | SQLmap 1.10 | | `jwt.analyze` | JWT Tool 2.3.0 | | `tls.assess` | testssl.sh 3.2.4 | | `web.server.assess` | Nikto 2.6.1 | | `code.secrets.scan` | Gitleaks 8.30.1, Trufflehog 3.97.9 | | `code.sast.scan` | Semgrep 1.179.0 | Some profiles query selected public sources: subfinder uses crt.sh and CertSpotter; Uncover uses Shodan InternetDB by IP, with no credentials; gau and waybackurls use the Wayback Machine — historical URLs do **not** prove active services. DNS accepts A, AAAA, CNAME, MX, NS and TXT; TTL and DNSSEC are not considered verified. ## Execution profiles - `read-only` — offline operations and DNS lookups. - `external-approved` — queries to approved external sources. - `active-approved` — active tests against approved destinations. - `mutation-approved` — Schemathesis only, after you explicitly select the operations and obtain a new approval. In the ecosystem, HTTP is limited to **GET**. Discoveries and redirects do **not** widen the scope. ## Budgets and limits Limits apply to the whole task and are reserved before each batch: | Limit | Value | |---|---| | Targets per task | up to 25 (httpx accepts 50; Schemathesis uses one base URL) | | Network operations | up to 500 | | Rate | 5 requests/s, 2 connections | | Time | 120 s (httpx/Katana) · 300 s (Schemathesis) · 10 min (Nuclei) | | Results | 1,000 per task | | Katana | `depth` up to 2 and `pages` up to 25, no browser or JavaScript execution | | Schemathesis | `operations`/`paths` up to 20; `examples` up to 25; integer `seed` | | TCP ports | up to 32 per task, one target per task | | TLS | one port per step | Cancellation does **not** return a reservation whose consumption is unknown. Completed batches (up to five destinations and five templates) are reused; repeating a batch with an unknown result requires an explicit choice. ## Reviewed templates (Nuclei) The manifest is a list of `id`, `path`, `sha256` and `name` in pt-BR/en. Update the hash **only** after you review the YAML. ```json { "templates": [ { "id": "aurora-cache", "path": "examples/aurora-cache.yaml", "sha256": "…", "name": {"pt-BR": "Cache do Aurora", "en": "Aurora cache"} } ] } ``` Only **HTTP GET/HEAD**, `{{BaseURL}}`-based targets, matchers and extractors are accepted. Code, executable JavaScript, headless, DNS, OAST, external workflows, raw requests and configured redirects are **not** accepted. Headers that change host or framing are refused. Hashes are verified before **each** run. ## Data the tool receives - The default `endpoints-only` profile does **not** forward cookies, tokens or bodies. - `selected-headers` shares up to **16 headers / 16 KiB** explicitly chosen in the step and included in the approval. - `Cookie` and `Authorization` require explicit selection and **SECRET** classification; host/framing headers are refused. - Selected values live in a private temporary file removed when the task ends. Bodies are **never** sent to Nuclei. ## Resources sent to the workflow Some adapters use resources you upload in signed chunks of up to 64 KiB, bound to device, flow, revision and classification; the hash is part of the immutable approval. | Resource | Limit | |---|---| | Dictionary (wordlist) | 2 to 500 unique entries up to 128 characters | | File snapshot | 100 files, 256 KiB per file, 1 MiB total | | JWT | SECRET resource up to 16 KiB | Absolute paths, directory traversal and symbolic links are refused. ## Results and evidence Results arrive in signed pages of up to **50 records or 512 KiB**, with verifiable receipts, versions and hashes of the executable and templates. Credential values and parameters recognized as secret are hidden. > [!WARNING] > A tool signal is **evidence for review**, not proof of exploitation. A Schemathesis contract failure, for example, is recorded as an informational, observed finding — it does not prove a vulnerability. ## Next step - [Install and pair CatBridge](https://netcattest.com/catsuite/en/docs/catbridge/install) - [Visual workflows](https://netcattest.com/catsuite/en/docs/workflows) - [Error reference](https://netcattest.com/catsuite/en/docs/reference/errors) --- # SDK error codes > The stable E_* codes returned by CatSuite extensions, packages, workflows and connectors, with the meaning of each one. - Language: en - Canonical URL: https://netcattest.com/catsuite/en/docs/reference/errors - Section: Reference - Updated: 2026-10-05 - Other language (pt-BR): https://netcattest.com/catsuite/docs/referencia/erros SDK errors use stable `E_*` codes, with translated descriptions in the interface. Use the code to handle failures in your JavaScript and to search the logs. ```js try { await cat.http.send({url: 'https://api.aurora.test/timeout'}); } catch (error) { if (error.code === 'E_TIMEOUT') { cat.log({'pt-BR': 'Tempo esgotado.', en: 'Timed out.'}, 'warning'); } } ``` ## Package and manifest | Code | Meaning | |---|---| | `E_PACKAGE` | invalid package | | `E_MANIFEST` | invalid manifest | | `E_TRANSLATION` | the package must include Brazilian Portuguese and English | | `E_VERSION` | incompatible package or SDK version | | `E_ENTRY` | invalid JavaScript entry file | | `E_HASH` | package integrity does not match the manifest | | `E_PATH` | the package contains a forbidden path | | `E_SIZE` | the size limit was exceeded | | `E_SETTINGS` | invalid `settingsSchema` | | `E_SIGNATURE` | invalid signature | | `E_UNSIGNED` | legacy unsigned file; review and approve it to create a locally signed revision | ## Execution | Code | Meaning | |---|---| | `E_SERVICE` | extension engine unavailable | | `E_RUNTIME` | extension execution failed | | `E_SYNTAX` | the JavaScript code contains a syntax error | | `E_EVENT` | invalid event or handler | | `E_HOOK_ASYNC` | mutation handlers must be synchronous | | `E_TIMEOUT` | execution timed out | | `E_MEMORY` | the memory limit was exceeded | | `E_QUEUE` | the execution queue is full | | `E_LIMIT` | the extension or resource limit was reached | | `E_DISABLED` | the extension is disabled | | `E_SUSPENDED` | the extension was suspended after consecutive failures | | `E_COMMAND` | invalid or unavailable command | | `E_UI` | invalid user interface component | ## Permissions and destinations | Code | Meaning | |---|---| | `E_PERMISSION` | the extension does not have permission for this operation | | `E_APPROVAL` | review permissions before enabling | | `E_HOST` | destination outside the allowed scope | | `E_PRIVATE_DESTINATION` | the destination resolved to a private address without explicit scope | | `E_PROXY_LOOP` | the request points to CatSuite’s own proxy | | `E_METHOD` | invalid method list | ## HTTP | Code | Meaning | |---|---| | `E_HTTP` | invalid HTTP message | | `E_HEADER` | invalid HTTP header | | `E_BODY` | this HTTP body cannot be modified | | `E_CANCELLED` | request cancelled | | `E_EXTERNAL` | the simulated API returned an error | | `E_LABORATORY` | enable laboratory mode in the extension settings | ## Data and credentials | Code | Meaning | |---|---| | `E_STORAGE` | the storage limit was exceeded | | `E_FINDING` | invalid finding | | `E_CREDENTIAL` | credential unavailable | | `E_CREDENTIAL_PROTECTION` | operational credentials require SECRET protection | | `E_RECOVERY` | secure recovery could not be completed | ## Workflows and connectors | Code | Meaning | |---|---| | `E_STEP` | invalid or unregistered step | | `E_PARSER` | invalid or duplicated parser | | `E_CHECKPOINT` | invalid checkpoint or larger than 32 KiB | | `E_FLOW` | invalid workflow definition | | `E_JOB` | the remote task is unavailable; review its outcome before resending | | `E_CONNECTOR` | failure talking to the connector | | `E_PAIRING` | invalid pairing | | `E_CAPABILITY_UNAVAILABLE` | the capability is not available on the connector | | `E_SCHEMA_OPERATION` | invalid OpenAPI operation selection |