Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
katana — Uma estrutura de crawling e spidering de próxima geração. | Kitploit
Ferramentas/GitHubGitHub/projectdiscovery/katana
ReconhecimentoScanners de Vulnerabilidades WebAnálise Dinâmica de Código (DAST)Exploração de Aplicações WebTestes de Segurança de APIsColeta de InformaçõesSegurança WebTestes de PenetraçãoRastreadorSegurança de APITop em Segurança de API nº13
17.3k1.2k15há 4 horasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Top em Testes de Segurança de APIs nº13
Top em Rastreador nº1
Top em Análise Dinâmica de Código (DAST) nº13
Top em Coleta de Informações nº13
Top em Reconhecimento nº12
Top em Exploração de Aplicações Web nº14
Top em Segurança Web nº13
Top em Scanners de Vulnerabilidades Web nº13
GitHubprojectdiscovery/katana

katana

Uma estrutura de crawling e spidering de próxima geração.

Ver Repositório
Compartilhar

katana

Um framework de crawling e spidering de próxima geração

\n\n\n", "technologies": [ "Azure", "Amazon ECS", "Amazon Web Services", "Docker", "Azure CDN" ], "raw": "HTTP/1.1 200 OK\r\nContent-Length: 1256\r\nAccept-Ranges: bytes\r\nAge: 331239\r\nCache-Control: max-age=604800\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 20 Mar 2023 10:53:58 GMT\r\nEtag: "3147526947"\r\nExpires: Mon, 27 Mar 2023 10:53:58 GMT\r\nLast-Modified: Thu, 17 Oct 2019 07:18:26 GMT\r\nServer: ECS (dcb/7EA3)\r\nVary: Accept-Encoding\r\nX-Cache: HIT\r\n\r\n\n\n\n Example Domain\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 2em;\n background-color: #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n div {\n margin: 0 auto;\n width: auto;\n }\n }\n \n\n\n\n\n\n\n" } }

Recursos • Instalação • Uso • Escopo • Configuração • Filtros • Entre no Discord

Recursos

image

  • Crawling web rápido e totalmente configurável
  • Modo Padrão e Headless
  • Parsing / crawling de JavaScript
  • Preenchimento automático de formulários personalizável
  • Controle de escopo - Campo pré-configurado / Regex
  • Base de conhecimento - Classificação de tipo de página / formulário por ML (modelo baixado automaticamente)
  • Saída personalizável - Campos pré-configurados
  • ENTRADA - STDIN, URL e LISTA
  • SAÍDA - STDOUT, ARQUIVO e JSON

Instalação

katana requer Go 1.26+ para instalar com sucesso. Se você encontrar problemas de instalação, recomendamos tentar com a versão mais recente disponível do Go, pois a versão mínima necessária pode ter mudado. Execute o comando abaixo ou baixe um binário pré-compilado da página de releases.```console CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest

root@kitploit:~
**Mais opções para instalar / executar o katana-**

<details>
  <summary>Docker</summary>

> Para instalar / atualizar o docker para a tag latest -```sh
docker pull projectdiscovery/katana:latest

Para executar o katana no modo padrão usando o docker -```sh docker run projectdiscovery/katana:latest -u https://tesla.com

root@kitploit:~
> Para executar katana em modo headless usando docker -```sh
docker run projectdiscovery/katana:latest -u https://tesla.com -system-chrome -headless
Ubuntu

É recomendado instalar os seguintes pré-requisitos -```sh sudo apt update sudo apt install zip curl wget git snapd sudo snap refresh sudo snap install golang --classic

sudo install -d -m 0755 /etc/apt/keyrings curl -fsSL https://dl.google.com/linux/linux_signing_key.pub
| sudo gpg --dearmor -o /etc/apt/keyrings/google-chrome.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg]
http://dl.google.com/linux/chrome/deb/ stable main"
| sudo tee /etc/apt/sources.list.d/google-chrome.list > /dev/null

sudo apt update sudo apt install google-chrome-stable

root@kitploit:~
> install katana -```sh
go install github.com/projectdiscovery/katana/cmd/katana@latest

Uso```console

katana -h

root@kitploit:~
Isso exibirá ajuda para a ferramenta. Aqui estão todas as opções que ela suporta.```console
Katana is a fast crawler focused on execution in automation
pipelines offering both headless and non-headless crawling.

Usage:
  ./katana [flags]

Flags:
INPUT:
   -u, -list string[]     target url / list to crawl
   -resume string         resume scan using resume.cfg
   -e, -exclude string[]  exclude host matching specified filter ('cdn', 'private-ips', cidr, ip, regex)

CONFIGURATION:
   -r, -resolvers string[]       list of custom resolver (file or comma separated)
   -d, -depth int                maximum depth to crawl (default 3)
   -jc, -js-crawl                enable endpoint parsing / crawling in javascript file
   -jsl, -jsluice                enable jsluice parsing in javascript file (memory intensive)
   -ct, -crawl-duration value    maximum duration to crawl the target for (s, m, h, d) (default s)
   -kf, -known-files string      enable crawling of known files (all,robotstxt,sitemapxml), a minimum depth of 3 is required to ensure all known files are properly crawled.
   -mrs, -max-response-size int  maximum response size to read (default 4194304)
   -timeout int                  time to wait for request in seconds (default 10)
   -aff, -automatic-form-fill    enable automatic form filling (experimental)
   -fx, -form-extraction         extract form, input, textarea & select elements in jsonl output
   -retry int                    number of times to retry the request (default 1)
   -proxy string                 http/socks5 proxy to use
   -td, -tech-detect             enable technology detection
   -H, -headers string[]         custom header/cookie to include in all http request in header:value format (file)
   -config string                path to the katana configuration file
   -fc, -form-config string      path to custom form configuration file
   -flc, -field-config string    path to custom field configuration file
   -s, -strategy string          Visit strategy (depth-first, breadth-first) (default "depth-first")
   -iqp, -ignore-query-params    Ignore crawling same path with different query-param values
   -fsu, -filter-similar         filter crawling of similar looking URLs (e.g., /users/123 and /users/456)
   -fst, -filter-similar-threshold int  number of distinct values before a path position is treated as parameter (default 10)
   -tlsi, -tls-impersonate       enable experimental client hello (ja3) tls randomization
   -dr, -disable-redirects       disable following redirects (default false)
   -kb, -knowledge-base          enable knowledge base classification
   -kb-secrets                   enable secrets extractor in the knowledge base
   -kb-validate-secrets          validate detected secrets against their provider (sends live API calls)
   -kb-endpoints                 enable endpoints extractor (classifies REST/GraphQL/SOAP/XHR requests)
   -mdp, -max-domain-pages int   maximum number of pages to crawl per domain (default unlimited)

DEBUG:
   -health-check, -hc        run diagnostic check up
   -elog, -error-log string  file to write sent requests error log
   -pprof-server             enable pprof server

HEADLESS:
   -hl, -headless                    enable headless hybrid crawling (experimental)
   -sc, -system-chrome               use local installed chrome browser instead of katana installed
   -sb, -show-browser                show the browser on the screen with headless mode
   -ho, -headless-options string[]   start headless chrome with additional options
   -nos, -no-sandbox                 start headless chrome in --no-sandbox mode
   -cdd, -chrome-data-dir string     path to store chrome browser data
   -scp, -system-chrome-path string  use specified chrome browser for headless crawling
   -noi, -no-incognito               start headless chrome without incognito mode
   -cwu, -chrome-ws-url string       use chrome browser instance launched elsewhere with the debugger listening at this URL
   -xhr, -xhr-extraction             extract xhr request url,method in jsonl output
   -pls, -page-load-strategy string  page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic")
   -dwt, -dom-wait-time int          time in seconds to wait after page load when using domcontentloaded strategy (default 5)
   -csp, -captcha-solver-provider string  captcha solver provider (e.g. capsolver)
   -csk, -captcha-solver-key string       captcha solver provider api key

SCOPE:
   -cs, -crawl-scope string[]       in scope url regex to be followed by crawler
   -cos, -crawl-out-scope string[]  out of scope url regex to be excluded by crawler
   -fs, -field-scope string         pre-defined scope field (dn,rdn,fqdn) or custom regex (e.g., '(company-staging.io|company.com)') (default "rdn")
   -ns, -no-scope                   disables host based default scope
   -do, -display-out-scope          display external endpoint from scoped crawling

FILTER:
   -mr, -match-regex string[]             regex or list of regex to match on output url (cli, file)
   -fr, -filter-regex string[]            regex or list of regex to filter on output url (cli, file)
   -f, -field string                      field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) (Deprecated: use -output-template instead)
   -sf, -store-field string               field to store in per-host output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
   -em, -extension-match string[]         match output for given extension (eg, -em php,html,js,none)
   -ef, -extension-filter string[]        filter output for given extension (eg, -ef png,css)
   -ndef, -no-default-ext-filter bool     remove default extensions from the filter list
   -mdc, -match-condition string          match response with dsl based condition
   -fdc, -filter-condition string         filter response with dsl based condition
   -duf, -disable-unique-filter           disable duplicate content filtering
   -filter-page-type string[]      filter response with page type (e.g. error,captcha,parked)

RATE-LIMIT:
   -c, -concurrency int          number of concurrent fetchers to use (default 10)
   -p, -parallelism int          number of concurrent inputs to process (default 10)
   -rd, -delay int               request delay between each request in seconds
   -rl, -rate-limit int          maximum requests to send per second (default 150)
   -rlm, -rate-limit-minute int  maximum number of requests to send per minute
   -hrl, -host-rate-limit int    maximum requests to send per second per host
   -hrlm, -host-rate-limit-minute int  maximum number of requests to send per minute per host

UPDATE:
   -up, -update                 update katana to latest version
   -duc, -disable-update-check  disable automatic katana update check

OUTPUT:
   -o, -output string                file to write output to
   -output-template string      custom output template
   -sr, -store-response              store http requests/responses
   -srd, -store-response-dir string  store http requests/responses to custom directory
   -ncb, -no-clobber                 do not overwrite output file
   -sfd, -store-field-dir string     store per-host field to custom directory
   -or, -omit-raw                    omit raw requests/responses from jsonl output
   -ob, -omit-body                   omit response body from jsonl output
   -lof, -list-output-fields         list available fields for jsonl output format
   -eof, -exclude-output-fields      exclude fields from jsonl output
   -j, -jsonl                        write output in jsonl format
   -nc, -no-color                    disable output content coloring (ANSI escape codes)
   -silent                           display output only
   -v, -verbose                      display verbose output
   -debug                            display debug output
   -version                          display project version

Executando Katana

Entrada para katana

katana requer url ou endpoint para crawlear e aceita entradas únicas ou múltiplas.

A URL de entrada pode ser fornecida usando a opção -u, e múltiplos valores podem ser fornecidos usando entrada separada por vírgula; da mesma forma, a entrada file é suportada usando a opção -list e adicionalmente a entrada via pipe (stdin) também é suportada.

Entrada de URL```sh

katana -u https://tesla.com

root@kitploit:~
#### Entrada de múltiplas URLs (separadas por vírgula)```sh
katana -u https://tesla.com,https://google.com

Entrada de Lista```bash

$ cat url_list.txt

https://tesla.com https://google.com

root@kitploit:~
Extrair um arquivo .bin do GENEActiv sem precisar do software GENEActiv PC ou de uma conexão USB (via conversão de arquivo)

Ações Disponíveis:

- Extrair dados de arquivos .bin do GENEActiv, incluindo:
  - Recuperar campos de metadados (ex., Versão do Firmware do Dispositivo, Data de Extração, Dados de Calibração)
  - Analisar e gerar dados no formato **Pandas DataFrame**
  - Gerar valores de contagem **ActiGraph count** usando o pacote **GGIR** comumente utilizado
  - Relatar erros de dados, destacando anomalias (ex., temperaturas excessivas, tempo de não uso)
  - Saída autodocumentada via resumo em markdown (saída opcional)"```
katana -list url_list.txt

STDIN (Entrada via pipe)```sh

echo https://tesla.com | katana

root@kitploit:~
O **conceito central** é que você pode rapidamente```sh
cat domains | httpx | katana

Exemplo de execução do katana -```console katana -u https://youtube.com


/ /_____ / /___ ____ ___ _ / '/ _ / __/ _ / _ / _ / //_\,/_/_,////_,_/ v0.0.1

root@kitploit:~
  projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions. [WRN] Developers assume no liability and are not responsible for any misuse or damage. https://www.youtube.com/ https://www.youtube.com/about/ https://www.youtube.com/about/press/ https://www.youtube.com/about/copyright/ https://www.youtube.com/t/contact_us/ https://www.youtube.com/creators/ https://www.youtube.com/ads/ https://www.youtube.com/t/terms https://www.youtube.com/t/privacy https://www.youtube.com/about/policies/ https://www.youtube.com/howyoutubeworks?utm_campaign=ytgen&utm_source=ythp&utm_medium=LeftNav&utm_content=txt&u=https%3A%2F%2Fwww.youtube.com%2Fhowyoutubeworks%3Futm_source%3Dythp%26utm_medium%3DLeftNav%26utm_campaign%3Dytgen https://www.youtube.com/new https://m.youtube.com/ https://www.youtube.com/s/desktop/4965577f/jsbin/desktop_polymer.vflset/desktop_polymer.js https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-home-page-skeleton.css https://www.youtube.com/s/desktop/4965577f/cssbin/www-onepick.css https://www.youtube.com/s/_/ytmainappweb/_/ss/k=ytmainappweb.kevlar_base.0Zo5FUcPkCg.L.B1.O/am=gAE/d=0/rs=AGKMywG5nh5Qp-BGPbOaI1evhF5BVGRZGA https://www.youtube.com/opensearch?locale=en_GB https://www.youtube.com/manifest.webmanifest https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-watch-page-skeleton.css https://www.youtube.com/s/desktop/4965577f/jsbin/web-animations-next-lite.min.vflset/web-animations-next-lite.min.js https://www.youtube.com/s/desktop/4965577f/jsbin/custom-elements-es5-adapter.vflset/custom-elements-es5-adapter.js https://www.youtube.com/s/desktop/4965577f/jsbin/webcomponents-sd.vflset/webcomponents-sd.js https://www.youtube.com/s/desktop/4965577f/jsbin/intersection-observer.min.vflset/intersection-observer.min.js https://www.youtube.com/s/desktop/4965577f/jsbin/scheduler.vflset/scheduler.js https://www.youtube.com/s/desktop/4965577f/jsbin/www-i18n-constants-en_GB.vflset/www-i18n-constants.js https://www.youtube.com/s/desktop/4965577f/jsbin/www-tampering.vflset/www-tampering.js https://www.youtube.com/s/desktop/4965577f/jsbin/spf.vflset/spf.js https://www.youtube.com/s/desktop/4965577f/jsbin/network.vflset/network.js https://www.youtube.com/howyoutubeworks/ https://www.youtube.com/trends/ https://www.youtube.com/jobs/ https://www.youtube.com/kids/

root@kitploit:~
## Modo de Rastreamento

### Modo Padrão

A modalidade de rastreamento padrão utiliza a biblioteca http padrão do Go nos bastidores para lidar com requisições/respostas HTTP. Esta modalidade é muito mais rápida, pois não tem a sobrecarga do navegador. Ainda assim, analisa o corpo das respostas HTTP como ele é, sem qualquer renderização de JavaScript ou DOM, potencialmente perdendo endpoints renderizados pós-DOM ou chamadas assíncronas de endpoints que podem ocorrer em aplicações web complexas dependendo, por exemplo, de eventos específicos do navegador.

### Modo Headless

O modo headless conecta chamadas headless internas para lidar com requisições/respostas HTTP diretamente no contexto do navegador. Isso oferece duas vantagens:
- A impressão digital HTTP (TLS e user agent) identifica totalmente o cliente como um navegador legítimo
- Melhor cobertura, pois os endpoints são descobertos analisando a resposta bruta padrão, como na modalidade anterior, e também a renderizada pelo navegador com JavaScript ativado.

O rastreamento headless é opcional e pode ser ativado usando a opção `-headless`.

Aqui estão outras opções de CLI headless -```console
katana -h headless

Flags:
HEADLESS:
   -hl, -headless                    enable headless hybrid crawling (experimental)
   -sc, -system-chrome               use local installed chrome browser instead of katana installed
   -sb, -show-browser                show the browser on the screen with headless mode
   -ho, -headless-options string[]   start headless chrome with additional options
   -nos, -no-sandbox                 start headless chrome in --no-sandbox mode
   -cdd, -chrome-data-dir string     path to store chrome browser data
   -scp, -system-chrome-path string  use specified chrome browser for headless crawling
   -noi, -no-incognito               start headless chrome without incognito mode
   -cwu, -chrome-ws-url string       use chrome browser instance launched elsewhere with the debugger listening at this URL
   -xhr, -xhr-extraction             extract xhr requests
   -pls, -page-load-strategy string  page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic")
   -dwt, -dom-wait-time int          time in seconds to wait after page load when using domcontentloaded strategy (default 5)
   -csp, -captcha-solver-provider string  captcha solver provider (e.g. capsolver)
   -csk, -captcha-solver-key string       captcha solver provider api key

-no-sandbox

Executa o navegador Chrome headless com a opção no-sandbox, útil ao executar como usuário root.```console katana -u https://tesla.com -headless -no-sandbox

root@kitploit:~
*`-no-incognito`*
----

Executa o navegador Chrome em modo headless sem o modo anônimo, útil ao utilizar o navegador local.```console
katana -u https://tesla.com -headless -no-incognito

Para preservar cookies e outros dados de sessão do navegador entre execuções, combine -no-incognito com -chrome-data-dir para que o Katana reutilize o diretório de perfil do Chrome escolhido em vez de um temporário isolado.```console katana -u https://tesla.com -headless -no-incognito -chrome-data-dir /tmp/katana-profile

root@kitploit:~
*`-headless-options`*
----

Quando estiver realizando crawling em modo headless, opções adicionais do Chrome podem ser especificadas usando `-headless-options`, por exemplo -```console
katana -u https://tesla.com -headless -system-chrome -headless-options --disable-gpu,proxy-server=http://127.0.0.1:8080

-page-load-strategy

Controla como o katana aguarda o carregamento das páginas no modo headless. Diferentes estratégias são úteis para diferentes tipos de aplicações web:

EstratégiaDescrição
heuristic(padrão) Espera inteligente que se adapta ao comportamento da página - aguarda pelo evento de carga, inatividade de rede e estabilidade do DOM
loadAguarda apenas pelo evento de carga do navegador
domcontentloadedAguarda pelo evento DOMContentLoaded mais um tempo adicional (configurável via -dwt) para renderização de JavaScript
networkidleAguarda até que a atividade de rede pare
noneSem espera - retorna imediatamente após o início da navegação
katana -u https://tesla.com -headless -pls domcontentloaded
root@kitploit:~
A estratégia `domcontentloaded` é particularmente útil para Single Page Applications (SPAs) que nunca completam o carregamento totalmente devido a pedidos contínuos em segundo plano (websockets, polling, etc.).

*`-dom-wait-time`*
----

Quando se utiliza a estratégia de carregamento de página `domcontentloaded`, esta opção especifica quantos segundos esperar após o evento DOMContentLoaded ser acionado. Isso dá tempo para o JavaScript renderizar elementos interativos. O padrão é 5 segundos.```console
katana -u https://tesla.com -headless -pls domcontentloaded -dwt 10

Resolução de Captcha

Katana suporta detecção e resolução automática de captcha durante a navegação headless. Quando uma página de captcha é encontrada, o katana identifica o provedor de captcha, resolve-o através de um serviço externo e continua a navegação.

Tipos de captcha suportados: reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile, hCaptcha

-captcha-solver-provider

Opção para especificar o provedor de resolução de captcha. Atualmente suportado: capsolver.

-captcha-solver-key

Chave de API para o provedor de resolução de captcha.```console katana -u https://example.com -headless -csp capsolver -csk YOUR_API_KEY

root@kitploit:~
O provedor e a chave também podem ser definidos via variáveis de ambiente:```console
export CAPTCHA_SOLVER_PROVIDER=capsolver
export CAPTCHA_SOLVER_KEY=YOUR_API_KEY
katana -u https://example.com -headless

Controle de Escopo

O rastreamento pode ser interminável se não for escopado, por isso o katana vem com múltiplos suportes para definir o escopo do rastreamento.

-field-scope

Opção mais prática para definir escopo com nome de campo predefinido, sendo rdn a opção padrão para escopo de campo.

  • rdn - rastreamento escopado ao nome de domínio raiz e todos os subdomínios (ex.: *exemplo.com) (padrão)
  • fqdn - rastreamento escopado ao subdomínio fornecido (ex.: www.exemplo.com ou api.exemplo.com)
  • dn - rastreamento escopado à palavra-chave do nome de domínio (ex.: exemplo)```console katana -u https://tesla.com -fs dn
root@kitploit:~
*`-crawl-scope`*
------

Para controle avançado de escopo, a opção `-cs` pode ser usada que vem com suporte a **regex**.```console
katana -u https://tesla.com -cs login

Para múltiplas regras no escopo, entrada de arquivo com string multilinha / regex pode ser passada.```bash $ cat in_scope.txt

login/ admin/ app/ wordpress/

root@kitploit:~
### Instantâneos Extraídos

![ext](https://raw.githubusercontent.com/projectdiscovery/katana/dev/assets/image/ext.png)  
Os instantâneos extraídos estarão no diretório "VOL-[volume-id]-[datetime]" numerados cronologicamente.  
Formato de data e hora: yyyyMMddHHmm  
Para analisar com precisão os atributos de tempo, exporte no seu fuso horário local.

### Relatórios

![rpt](https://raw.githubusercontent.com/projectdiscovery/katana/dev/assets/image/rpt.png)  
Algumas informações do volume geradas automaticamente.

### Automação de Análise

Ferramentas WinMD: [WinMDCollect](https://github.com/projectdiscovery/katana/blob/dev/tools/WinMDCollect)  
Ferramentas de análise de saída WinMD (scripts Bash): [OutputAnalysis](https://github.com/projectdiscovery/katana/blob/dev/tools/OutputAnalysis)```console
katana -u https://tesla.com -cs in_scope.txt

-crawl-out-scope

Para definir o que não rastrear, a opção -cos pode ser usada e também suporta entrada regex.```console katana -u https://tesla.com -cos logout

root@kitploit:~
Para múltiplas regras fora do escopo, entrada de arquivo com string multilinha / regex pode ser passada.```bash
$ cat out_of_scope.txt

/logout
/log_out

(empty)```console katana -u https://tesla.com -cos out_of_scope.txt

root@kitploit:~
*`-no-scope`*
----

Katana tem como escopo padrão `*.domain`; para desabilitar isso, a opção `-ns` pode ser usada e também para rastrear a internet.```console
katana -u https://tesla.com -ns

-display-out-scope

Por padrão, quando a opção de escopo é usada, ela também se aplica aos links exibidos como saída, de modo que URLs externas são excluídas por padrão e para sobrescrever esse comportamento, a opção -do pode ser usada para exibir todas as URLs externas presentes nos URLs / Endpoints com escopo de destino.``` katana -u https://tesla.com -do

root@kitploit:~
Aqui estão todas as opções de CLI para o controle de escopo -```console
katana -h scope

Flags:
SCOPE:
   -cs, -crawl-scope string[]       in scope url regex to be followed by crawler
   -cos, -crawl-out-scope string[]  out of scope url regex to be excluded by crawler
   -fs, -field-scope string         pre-defined scope field (dn,rdn,fqdn) (default "rdn")
   -ns, -no-scope                   disables host based default scope
   -do, -display-out-scope          display external endpoint from scoped crawling

Configuração do Crawler

Katana vem com várias opções para configurar e controlar o crawl da forma que desejamos.

-depth

Opção para definir a profundidade para seguir as URLs durante o crawl, quanto maior a profundidade, maior o número de endpoints sendo rastreados + tempo de crawl.``` katana -u https://tesla.com -d 5

root@kitploit:~
*`-js-crawl`*
----

Opção para ativar a análise de arquivos JavaScript + rastreamento dos endpoints descobertos em arquivos JavaScript, desabilitada por padrão.```
katana -u https://tesla.com -jc

-crawl-duration

Opção para duração de crawling predefinida, desativada por padrão.``` katana -u https://tesla.com -ct 2

root@kitploit:~
*`-known-files`*
----
Opção para ativar a varredura dos arquivos `robots.txt` e `sitemap.xml`, desativada por padrão.```
katana -u https://tesla.com -kf robotstxt,sitemapxml

-automatic-form-fill

Opção para habilitar o preenchimento automático de formulários para campos conhecidos / desconhecidos, os valores de campos conhecidos podem ser personalizados conforme necessário, atualizando o arquivo de configuração do formulário em $HOME/.config/katana/form-config.yaml.

O preenchimento automático de formulários é um recurso experimental.``` katana -u https://tesla.com -aff

root@kitploit:~
Os valores de configuração de formulário suportam funções auxiliares DSL para geração dinâmica de dados. Todas as funções `rand_*` da biblioteca [projectdiscovery/dsl](https://github.com/projectdiscovery/dsl) estão disponíveis:```yaml
# $HOME/.config/katana/form-config.yaml
email: "rand_email()"
phone: "rand_phone()"
placeholder: "rand_first_name()"
password: 'rand_base(16, "")'
color: "#e66465"

-filter-similar

Opção para filtrar a varredura de URLs de aparência semelhante, normalizando segmentos de caminho variáveis. Isto detecta IDs, UUIDs, hashes, datas e outros valores dinâmicos, e também aprende padrões repetidos em tempo de execução. Por exemplo, /users/123 e /users/456 são tratados como o mesmo endpoint.``` katana -u https://tesla.com -fsu

root@kitploit:~
O limite de promoção (quantos valores distintos em uma posição de caminho antes de ser tratado como parâmetro) pode ser ajustado com `-fst`. Valores mais baixos são mais agressivos (menos URLs rastreados), valores mais altos são mais permissivos. O padrão é `10`.```
katana -u https://tesla.com -fsu -fst 5

-max-domain-pages

Opção para limitar o número de páginas rastreadas por domínio. Impede que qualquer domínio único consuma todo o orçamento de rastreamento, útil para sites grandes ou proteção contra armadilhas de rastreador.``` katana -u https://tesla.com -mdp 100

root@kitploit:~
## Classificação da Base de Conhecimento

Katana pode enriquecer resultados de rastreamento com uma **base de conhecimento** — classificação por aprendizado de máquina de cada página rastreada, alimentada por [dit](https://github.com/HappyHackingSpace/dit). Quando ativada, cada resposta é classificada por **tipo de página** (ex.: `login`, `error`, `captcha`, `parked`) e quaisquer formulários na página são identificados, com o resultado anexado ao campo `knowledgebase` da saída JSONL. Isso funciona em **todos os mecanismos** (padrão e headless).

> **Nota**: O modelo de classificação é **baixado automaticamente** na primeira utilização para `~/.dit/model.json` (do [Hugging Face](https://huggingface.co/datasets/happyhackingspace/dit)). Isso é um custo único, por máquina — execuções subsequentes reutilizam o modelo em cache. Nenhuma instalação manual de `dit` é necessária.

*`-knowledge-base`*
----

Ativa a classificação da base de conhecimento. A classificação de tipo de página e de formulários é adicionada ao campo `knowledgebase` de cada resultado.```console
katana -u https://example.com -kb -jsonl
  • Nilesh descobriu esta vulnerabilidade durante um teste de penetração de um contrato inteligente, onde a função de transferência de fundos do contrato inteligente verificava apenas a condição de igualdade e não a condição de limite inferior, resultando em uma transação que permitia a um atacante transferir fundos mesmo que o saldo fosse inferior ao montante da transferência.```json { "timestamp": "...", "request": { "...": "..." }, "response": { "...": "...", "knowledgebase": { "PageType": "login", "Forms": [{ "type": "login", "fields": { "username": "username or email", "password": "password" } }] } } }
root@kitploit:~
*`-filter-page-type`*
----

Filtrar resultados apenas para o(s) tipo(s) de página fornecido(s). Ativar isso implica `-kb` (o classificador é inicializado automaticamente).```console
katana -u https://example.com -fpt login,error

-kb-secrets

Ative o extrator de segredos na base de conhecimento, revelando segredos detectados (chaves de API, tokens, etc.) sob a chave secrets. Adicione -kb-validate-secrets para validar segredos detectados contra seu provedor — note que isso envia chamadas de API ao vivo.```console katana -u https://example.com -kb-secrets

root@kitploit:~
*`-kb-endpoints`*
----

Habilita o extrator de endpoints, que classifica requisições como REST, GraphQL, SOAP ou XHR sob a chave `endpoints`.```console
katana -u https://example.com -kb-endpoints

Rastreamento Autenticado

O rastreamento autenticado envolve a inclusão de cabeçalhos ou cookies personalizados em requisições HTTP para acessar recursos protegidos. Esses cabeçalhos fornecem informações de autenticação ou autorização, permitindo que você rastreie conteúdos/endpoints autenticados. Você pode especificar cabeçalhos diretamente na linha de comando ou fornecê-los como um arquivo com o katana para realizar o rastreamento autenticado.

Nota: O usuário precisa realizar manualmente a autenticação e exportar o cookie/sessão ou cabeçalho para um arquivo para usar com o katana.

-headers

Opção para adicionar um cabeçalho ou cookie personalizado à requisição.

Sintaxe dos cabeçalhos na especificação HTTP

Aqui está um exemplo de adição de um cookie à requisição:``` katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'

root@kitploit:~
Também é possível fornecer cabeçalhos ou cookies como um arquivo. Por exemplo:```
$ cat cookie.txt

Cookie: PHPSESSIONID=XXXXXXXXX
X-API-KEY: XXXXX
TOKEN=XX

Netexec

Netexec GitHub release (latest by date) GitHub issues GitHub pull requests

Netexec é um fork comunitário da ferramenta CrackMapExec obsoleta, projetado para pentesting e red teaming. Ele fornece poderosas capacidades de enumeração e exploração de rede.

Principais Características

  • Suporte a Protocolos: SMB, MSSQL, WinRM, LDAP e mais
  • Spray de Credenciais: Testar credenciais em vários protocolos
  • Execução de Comandos: Executar comandos em sistemas remotos
  • Sistema de Módulos: Extensível através de módulos da comunidade
  • Formatação de Saída: Saída em JSON, XML, texto simples
  • Integração: Funciona com Nessus, Metasploit e outras ferramentas``` katana -u https://tesla.com -H cookie.txt
root@kitploit:~
Existem mais opções para configurar quando necessário, aqui estão todas as opções de CLI relacionadas à configuração -```console
katana -h config

Flags:
CONFIGURATION:
   -r, -resolvers string[]       list of custom resolver (file or comma separated)
   -d, -depth int                maximum depth to crawl (default 3)
   -jc, -js-crawl                enable endpoint parsing / crawling in javascript file
   -ct, -crawl-duration int      maximum duration to crawl the target for
   -kf, -known-files string      enable crawling of known files (all,robotstxt,sitemapxml)
   -mrs, -max-response-size int  maximum response size to read (default 9223372036854775807)
   -timeout int                  time to wait for request in seconds (default 10)
   -aff, -automatic-form-fill    enable automatic form filling (experimental)
   -fx, -form-extraction         enable extraction of form, input, textarea & select elements
   -retry int                    number of times to retry the request (default 1)
   -proxy string                 http/socks5 proxy to use
   -H, -headers string[]         custom header/cookie to include in request
   -config string                path to the katana configuration file
   -fc, -form-config string      path to custom form configuration file
   -flc, -field-config string    path to custom field configuration file
   -s, -strategy string          Visit strategy (depth-first, breadth-first) (default "depth-first")
   -iqp, -ignore-query-params    Ignore crawling same path with different query-param values
   -fsu, -filter-similar         filter crawling of similar looking URLs (e.g., /users/123 and /users/456)
   -fst, -filter-similar-threshold int  number of distinct values before a path position is treated as parameter (default 10)
   -mdp, -max-domain-pages int   maximum number of pages to crawl per domain (default unlimited)

Conectando-se a uma Sessão Ativa do Navegador

O Katana também pode se conectar a uma sessão ativa do navegador na qual o usuário já está logado e autenticado, e utilizá-la para crawling. O único requisito para isso é iniciar o navegador com a depuração remota ativada.

Aqui está um exemplo de como iniciar o navegador Chrome com depuração remota ativada e usá-lo com o Katana -

passo 1) Primeiro, localize o caminho do executável do Chrome

Sistema OperacionalLocalização do Executável do ChromiumLocalização do Executável do Google Chrome
Windows (64-bit)C:\Program Files (x86)\Google\Chromium\Application\chrome.exeC:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Windows (32-bit)C:\Program Files\Google\Chromium\Application\chrome.exeC:\Program Files\Google\Chrome\Application\chrome.exe
macOS/Applications/Chromium.app/Contents/MacOS/Chromium/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Linux/usr/bin/chromium/usr/bin/google-chrome

passo 2) Inicie o Chrome com depuração remota ativada; ele retornará uma URL websocker. Por exemplo, no macOS, você pode iniciar o Chrome com depuração remota ativada usando o seguinte comando -```console $ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222

DevTools listening on ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6

root@kitploit:~
> Agora faça login no site que deseja rastrear e mantenha o navegador aberto.

**passo 3) Agora use a URL do websocket com o katana para se conectar à sessão ativa do navegador e rastrear o site**```console
katana -headless -u https://tesla.com -cwu ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6 -no-incognito

Nota: pode usar a opção -cdd para especificar um diretório de dados personalizado do Chrome para armazenar dados do navegador e cookies, mas isso não salva dados de sessão se o cookie for definido como Session apenas ou expirar após certo tempo.

Filtros

-field

[!WARNING] Obsoleto: use -output-template em vez disso. A flag de campo ainda é suportada para compatibilidade com versões anteriores.

Katana vem com campos integrados que podem ser usados para filtrar a saída para a informação desejada. A opção -f pode ser usada para especificar qualquer um dos campos disponíveis.``` -f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,key,value,kv,dir,udir)

root@kitploit:~
Aqui está uma tabela com exemplos de cada campo e saída esperada quando usado - 

| FIELD   | DESCRIPTION                 | EXAMPLE                                                      |
| ------- | --------------------------- | ------------------------------------------------------------ |
| `url`   | Endpoint URL                | `https://admin.projectdiscovery.io/admin/login?user=admin&password=admin` |
| `qurl`  | URL incluindo parâmetro de consulta | `https://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin` |
| `qpath` | Caminho incluindo parâmetro de consulta | `/login?user=admin&password=admin`                           |
| `path`  | Caminho da URL              | `https://admin.projectdiscovery.io/admin/login`              |
| `fqdn`  | Nome de domínio totalmente qualificado | `admin.projectdiscovery.io`                                  |
| `rdn`   | Nome do domínio raiz        | `projectdiscovery.io`                                        |
| `rurl`  | URL raiz                    | `https://admin.projectdiscovery.io`                          |
| `ufile` | URL com arquivo             | `https://admin.projectdiscovery.io/login.js`                 |
| `file`  | Nome do arquivo na URL      | `login.php`                                                  |
| `key`   | Chaves de parâmetro na URL  | `user,password`                                              |
| `value` | Valores de parâmetro na URL | `admin,admin`                                                |
| `kv`    | Chaves=Valores na URL       | `user=admin&password=admin`                                  |
| `dir`   | Nome do diretório da URL    | `/admin/`                                                    |
| `udir`  | URL com diretório           | `https://admin.projectdiscovery.io/admin/`                   |

Aqui está um exemplo de uso da opção field para exibir apenas todas as URLs com parâmetro de consulta -```
katana -u https://tesla.com -f qurl -silent

https://shop.tesla.com/en_au?redirect=no
https://shop.tesla.com/en_nz?redirect=no
https://shop.tesla.com/product/men_s-raven-lightweight-zip-up-bomber-jacket?sku=1740250-00-A
https://shop.tesla.com/product/tesla-shop-gift-card?sku=1767247-00-A
https://shop.tesla.com/product/men_s-chill-crew-neck-sweatshirt?sku=1740176-00-A
https://www.tesla.com/about?redirect=no
https://www.tesla.com/about/legal?redirect=no
https://www.tesla.com/findus/list?redirect=no

Custom Fields

Você pode criar campos personalizados para extrair e armazenar informações específicas das respostas das páginas usando regras de regex. Esses campos personalizados são definidos usando um arquivo de configuração YAML e são carregados do local padrão em $HOME/.config/katana/field-config.yaml. Alternativamente, você pode usar a opção -flc para carregar um arquivo de configuração de campos personalizados de um local diferente. Aqui está um exemplo de campo personalizado.```yaml

  • name: email type: regex regex:

    • '([a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+.[a-zA-Z0-9_-]+)'
    • '([a-zA-Z0-9+.-]+@[a-zA-Z0-9.-]+.[a-zA-Z0-9_-]+)'
  • name: phone type: regex regex:

    • '\d{3}-\d{8}|\d{4}-\d{7}'
root@kitploit:~
Ao definir campos personalizados, os seguintes atributos são suportados:

- **name** (obrigatório)

> O valor do atributo **name** é usado como o valor da opção `-field` na CLI.

- **type** (obrigatório)

> O tipo de atributo personalizado, opção atualmente suportada - `regex` 

- **part** (opcional)

> A parte da resposta da qual extrair as informações. O valor padrão é `response`, que inclui tanto o cabeçalho quanto o corpo. Outros valores possíveis são `header` e `body`.

- group (opcional)

> Você pode usar este atributo para selecionar um grupo específico correspondente na regex, por exemplo: `group: 1`

#### Executando katana usando campo personalizado:```console
katana -u https://tesla.com -f email,phone

-store-field

Para complementar a opção field, que é útil para filtrar a saída em tempo de execução, existe a opção -sf, -store-fields, que funciona exatamente como a opção field, exceto que, em vez de filtrar, armazena todas as informações no disco no diretório katana_field ordenado por URL alvo. Use -sfd ou -store-field-dir para armazenar dados em um local diferente.``` katana -u https://tesla.com -sf key,fqdn,qurl -silent

root@kitploit:~
``````bash
$ ls katana_field/

https_www.tesla.com_fqdn.txt
https_www.tesla.com_key.txt
https_www.tesla.com_qurl.txt

A opção -store-field pode ser útil para coletar informações para construir uma wordlist direcionada para vários propósitos, incluindo mas não se limitando a:

  • Identificar os parâmetros mais comumente usados
  • Descobrir caminhos frequentemente usados
  • Encontrar arquivos comumente usados
  • Identificar subdomínios relacionados ou desconhecidos

Filtros Katana

-extension-match

A saída do rastreamento pode ser facilmente filtrada para uma extensão específica usando a opção -em para garantir que apenas a saída contendo a extensão fornecida seja exibida.``` katana -u https://tesla.com -silent -em js,jsp,json

root@kitploit:~
Use o valor especial `none` para também incluir URLs sem uma extensão de arquivo na saída:```
katana -u https://tesla.com -silent -em js,jsp,json,none

-extension-filter

A saída do crawl pode ser facilmente filtrada para extensão específica usando a opção -ef, que garante remover todas as URLs que contêm a extensão fornecida.``` katana -u https://tesla.com -silent -ef css,txt,md

root@kitploit:~
*`-no-default-ext-filter`*
---

Katana filtra várias extensões por padrão. Isso pode ser desabilitado com a opção `-ndef`.```
katana -u https://tesla.com -silent -ndef

-match-regex

A flag -match-regex ou -mr permite filtrar URLs de saída usando expressões regulares. Ao usar esta flag, apenas URLs que correspondam à expressão regular especificada serão exibidas na saída.``` katana -u https://tesla.com -mr 'https://shop\.tesla\.com/*' -silent

root@kitploit:~
*`-filter-regex`*
---
A flag `-filter-regex` ou `-fr` permite filtrar URLs de saída utilizando expressões regulares. Ao utilizar esta flag, serão ignoradas as URLs que correspondam à expressão regular especificada.```
katana -u https://tesla.com -fr 'https://www\.tesla\.com/*' -silent

Filtragem Avançada

Katana suporta expressões baseadas em DSL para capacidades avançadas de correspondência e filtragem:

  • Para corresponder endpoints com código de status 200:```shell katana -u https://www.hackerone.com -mdc 'status_code == 200'
root@kitploit:~
- Para corresponder endpoints que contenham "default" e tenham um código de status diferente de 403:```shell
katana -u https://www.hackerone.com -mdc 'contains(endpoint, "default") && status_code != 403'
  • Para corresponder endpoints com tecnologias PHP:```shell katana -u https://www.hackerone.com -mdc 'contains(to_lower(technologies), "php")'
root@kitploit:~
- Para filtrar endpoints que estão rodando no Cloudflare:```shell
katana -u https://www.hackerone.com -fdc 'contains(to_lower(technologies), "cloudflare")'

As funções DSL podem ser aplicadas a qualquer chave na saída jsonl. Para mais informações sobre as funções DSL disponíveis, visite o projeto dsl.

Aqui estão opções adicionais de filtro -```console katana -h filter

Flags: FILTER: -mr, -match-regex string[] regex or list of regex to match on output url (cli, file) -fr, -filter-regex string[] regex or list of regex to filter on output url (cli, file) -f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) -sf, -store-field string field to store in per-host output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir) -em, -extension-match string[] match output for given extension (eg, -em php,html,js,none) -ef, -extension-filter string[] filter output for given extension (eg, -ef png,css) -ndef, -no-default-ext-filter bool remove default extensions from the filter list -mdc, -match-condition string match response with dsl based condition -fdc, -filter-condition string filter response with dsl based condition -duf, -disable-unique-filter disable duplicate content filtering

root@kitploit:~
## Limite de Taxa

É fácil ser bloqueado/banido durante o crawling se não seguir os limites dos sites alvo, o katana vem com múltiplas opções para ajustar o crawl para ir tão rápido/lento quanto quisermos.

*`-delay`*
-----```
katana -u https://tesla.com -delay 20

-concurrency

opção para controlar o número de urls por alvo a buscar ao mesmo tempo.``` katana -u https://tesla.com -c 20

root@kitploit:~
*`-parallelism`*
-----
opção para definir o número de alvos a processar ao mesmo tempo a partir da lista de entrada.```
katana -u https://tesla.com -p 20

-rate-limit

Máximo de requisições por segundo, aplicado globalmente a todos os hosts.``` katana -u https://tesla.com -rl 100

root@kitploit:~
*`-rate-limit-minute`*
-----
Máximo de requisições por minuto, aplicado globalmente em todos os hosts.```
katana -u https://tesla.com -rlm 500

-host-rate-limit

Máximo de requisições por segundo por host. Cada host tem seu próprio balde de limite de taxa, então um host lento não irá limitar os rápidos. Substitui o limite de taxa global quando definido. Katana também recua automaticamente com atraso exponencial e jitter quando um host retorna 429 ou 503.```console katana -u https://tesla.com -hrl 50

root@kitploit:~
*`-host-rate-limit-minute`*
-----
Máximo de requisições por minuto por host.```console
katana -u https://tesla.com -hrlm 200

Aqui estão todas as opções longas / curtas de CLI para controle de limite de taxa -```console katana -h rate-limit

Flags: RATE-LIMIT: -c, -concurrency int number of concurrent fetchers to use (default 10) -p, -parallelism int number of concurrent inputs to process (default 10) -rd, -delay int request delay between each request in seconds -rl, -rate-limit int maximum requests to send per second (default 150) -rlm, -rate-limit-minute int maximum number of requests to send per minute -hrl, -host-rate-limit int maximum requests to send per second per host -hrlm, -host-rate-limit-minute int maximum number of requests to send per minute per host

root@kitploit:~
## Saída

Katana suporta saída em arquivo tanto em formato de texto simples quanto JSON, que inclui informações adicionais como nome de `source`, `tag` e `attribute` para correlacionar o endpoint descoberto.

*`-output`*
---

Por padrão, katana gera os endpoints rastreados em formato de texto simples. Os resultados podem ser escritos em um arquivo usando a opção -output.```console
katana -u https://example.com -no-scope -output example_endpoints.txt

-output-template

A opção -output-template permite personalizar o formato de saída usando um modelo, proporcionando flexibilidade na definição da estrutura de saída. Esta opção substitui a flag obsoleta -field para filtrar a saída. Em vez de depender de campos predefinidos, você pode especificar um modelo personalizado diretamente na linha de comando para controlar como os dados extraídos são apresentados.

Exemplo de uso da opção -output-template:```sh katana -u https://example.com -output-template '{{email}} - {{url}}'

root@kitploit:~
Neste exemplo, `email` representa um [campo personalizado](#custom-fields) que extrai e exibe endereços de e-mail encontrados na origem `url`.

> [!NOTE]
> Se um campo especificado não existir ou não contiver um valor, ele será simplesmente omitido da saída.

Esta opção pode estruturar efetivamente a saída da maneira que melhor se adequa ao seu caso de uso, tornando a extração de dados mais intuitiva e personalizável.

*`-jsonl`*
---```console
katana -u https://example.com -jsonl | jq .

Licença

GNU General Public License v3.0```json { "timestamp": "2023-03-20T16:23:58.027559+05:30", "request": { "method": "GET", "endpoint": "https://example.com", "raw": "GET / HTTP/1.1\r\nHost: example.com\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\r\nAccept-Encoding: gzip\r\n\r\n" }, "response": { "status_code": 200, "headers": { "accept_ranges": "bytes", "expires": "Mon, 27 Mar 2023 10:53:58 GMT", "last_modified": "Thu, 17 Oct 2019 07:18:26 GMT", "content_type": "text/html; charset=UTF-8", "server": "ECS (dcb/7EA3)", "vary": "Accept-Encoding", "etag": ""3147526947"", "cache_control": "max-age=604800", "x_cache": "HIT", "date": "Mon, 20 Mar 2023 10:53:58 GMT", "age": "331239" }, "body": "\n\n\n Example Domain\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 2em;\n background-color: #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n div {\n margin: 0 auto;\n width: auto;\n }\n }\n \n\n\n\n

\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

<a href="https://www.iana.org/domains/example\">More information...

\n
\n

Example Domain

\n

This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.

\n

<a href="https://www.iana.org/domains/example\">More information...

\n

root@kitploit:~
*`-store-response`*
----

A opção `-store-response` permite escrever todas as requisições e respostas de endpoints rastreados em um arquivo de texto. Quando esta opção é usada, arquivos de texto contendo a requisição e resposta serão escritos no diretório **katana_response**. Se você desejar especificar um diretório personalizado, pode usar a opção `-store-response-dir`.```console
katana -u https://example.com -no-scope -store-response

(empty)```bash $ cat katana_response/index.txt

katana_response/example.com/327c3fda87ce286848a574982ddd0b7c7487f816.txt https://example.com (200 OK) katana_response/www.iana.org/bfc096e6dd93b993ca8918bf4c08fdc707a70723.txt http://www.iana.org/domains/reserved (200 OK)

root@kitploit:~
**Nota:**

*A opção `-store-response` não é suportada no modo `-headless`.*

*`-list-output-fields`*
----

A flag `-list-output-fields` ou `-lof` exibe todos os campos disponíveis que podem ser usados no formato de saída JSONL. Isso é útil para entender quais dados estão disponíveis ao usar modelos de saída personalizados ou ao excluir campos específicos.```console
katana -lof

-exclude-output-fields

A flag -exclude-output-fields ou -eof permite excluir campos específicos da saída JSONL. Isso é útil para reduzir o tamanho da saída ou focar em dados específicos, removendo campos indesejados.```console katana -u https://example.com -jsonl -eof raw,body

root@kitploit:~
Aqui estão opções adicionais de CLI relacionadas à saída -```console
katana -h output

OUTPUT:
   -o, -output string                file to write output to
   -sr, -store-response              store http requests/responses
   -srd, -store-response-dir string  store http requests/responses to custom directory
   -lof, -list-output-fields         list available fields for jsonl output format
   -eof, -exclude-output-fields      exclude fields from jsonl output
   -j, -json                         write output in JSON Lines format
   -nc, -no-color                    disable output content coloring (ANSI escape codes)
   -silent                           display output only
   -v, -verbose                      display verbose output
   -version                          display project version

Katana como biblioteca

katana pode ser usado como biblioteca criando uma instância da struct Option e preenchendo-a com as mesmas opções que seriam especificadas via CLI. Usando as opções, você pode criar crawlerOptions e assim um crawler padrão ou híbrido. O método crawler.Crawl deve ser chamado para rastrear a entrada.```go package main

import ( "math"

root@kitploit:~
"github.com/projectdiscovery/gologger"
"github.com/projectdiscovery/katana/pkg/engine/standard"
"github.com/projectdiscovery/katana/pkg/output"
"github.com/projectdiscovery/katana/pkg/types"

)

func main() { options := &types.Options{ MaxDepth: 3, // Maximum depth to crawl FieldScope: "rdn", // Crawling Scope Field BodyReadSize: math.MaxInt, // Maximum response size to read Timeout: 10, // Timeout is the time to wait for request in seconds Concurrency: 10, // Concurrency is the number of concurrent crawling goroutines Parallelism: 10, // Parallelism is the number of urls processing goroutines Delay: 0, // Delay is the delay between each crawl requests in seconds RateLimit: 150, // Maximum requests to send per second Strategy: "depth-first", // Visit strategy (depth-first, breadth-first) OnResult: func(result output.Result) { // Callback function to execute for result gologger.Info().Msg(result.Request.URL) }, } crawlerOptions, err := types.NewCrawlerOptions(options) if err != nil { gologger.Fatal().Msg(err.Error()) } defer crawlerOptions.Close() crawler, err := standard.New(crawlerOptions) if err != nil { gologger.Fatal().Msg(err.Error()) } defer crawler.Close() var input = "https://www.hackerone.com" err = crawler.Crawl(input) if err != nil { gologger.Warning().Msgf("Could not crawl %s: %s", input, err.Error()) } }

root@kitploit:~
## Relatar Problemas & Solicitações de Funcionalidades

Para manter o rastreamento de problemas e melhorar a eficiência da triagem:

**Todos os relatórios começam como [Discussões no GitHub](https://github.com/projectdiscovery/katana/discussions)**

- **Relatórios de Bugs** → [Iniciar uma Discussão de Perguntas e Respostas](https://github.com/projectdiscovery/katana/discussions/new?category=q-a)
- **Solicitações de Funcionalidades** → [Iniciar uma Discussão de Ideias](https://github.com/projectdiscovery/katana/discussions/new?category=ideas)  
- **Perguntas** → [Iniciar uma Discussão de Perguntas e Respostas](https://github.com/projectdiscovery/katana/discussions/new?category=q-a)

**Por que Discussões Primeiro?**
- **A comunidade pode ajudar** com perguntas rápidas e solução de problemas
- **Melhor triagem** - bugs/funcionalidades confirmados se tornam problemas rastreados  
- **Rastreador de problemas mais limpo** - foco apenas em itens acionáveis

Os mantenedores converterão discussões em problemas quando apropriado, após revisão adequada.

--------

<div align="center">

katana é feito com ❤️ pela equipe [projectdiscovery](https://projectdiscovery.io) e distribuído sob [Licença MIT](https://github.com/projectdiscovery/katana/blob/dev/LICENSE.md).


<a href="https://discord.gg/projectdiscovery"><img src="https://assets.kitploit.com/production/public/readmes/5826/d0624f94cb9ea6401be5a089bb694bc963c47fa82aa3b758c893e3b0bbfdf663.png" width="300" alt="Join Discord"></a>

</div>
Baixar ferramenta