
Uma framework de wordlists para satisfazer seus fetiches com suas wordlists. Para pesquisadores de segurança, bug bounty e hackers.
Um gerador de wordlists superpoderoso, divisor, mesclador, localizador, salvador, cria permutações e combinações de palavras, aplica diferentes codificações/decodificações e tudo que você precisa.
Eliminador de frustração! & Personalizável!
* and **Use Go ou baixe as últimas versões
go install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest
A partir da versão v2.2 o cook salva os cook-ingredients em $home/.config/cook/cook-ingredients
Para alterar, crie uma variável de caminho chamada
COOK=[SEU CAMINHO]
Sem o básico, tudo é complexo.

Dê a eles qualquer nome e use-os para gerar o padrão. Isso será mais útil quando você aplicar codificação por coluna usando methods.
cook -start intigriti,bugcrowd -sep _,- -end users.rar,secret.zip / start sep end
Nota: você deve incluir o parâmetro no padrão, caso contrário, não imprimirá nada.
O Cook depende de cook-ingredients, que são coleções de arquivos .yaml de conjuntos de palavras, funções, portas, wordlists do assetnotes, seclist, fuzzdb, 15+ etc.
my.yaml
cook -dob date[17,Sep,1994] elliot _,-, dob
my.yamlEdite my.yaml manualmente ou use estes comandos.
Se keyword não existir, será criada. Caso contrário, será atualizada e o novo valor será adicionado na mesma variável.
# Sintaxe
cook add [keyword]=[valor1, valor2, ..., valorN] in [categoria]
# Comando
cook add unique_name=word1,word2,word3 in lists
cook delete [keyword]
Use : após o nome do parâmetro.
cook -f: live.txt f
cook -f: https://example.com/wordlist.txt f
O Cook buscou múltiplos repositórios e pode usar diretamente wordlists desses repositórios...
assetnotes, seclist, fuzzdb, etc.
Usando métodos você pode codificar, decodificar, inverter, dividir, ordenar, extrair e pode fazer muito mais...
Os métodos podem ser aplicados na saída final ou por coluna
-m/-method para aplicar métodos na saída final-mc/-methodcol para aplicar por coluna.param.methodname aplicar a qualquer parâmetro, exemplificaremos essa questão de parâmetro depois.
.md5.b64e.urle aplica vários métodos um após o outro.Padrão gerado > hash md5 > codificação base 64 > Codificação URL.,md5,sha1,sha256 aplica codificações diferentes ao mesmo padrão gerado.Padrão gerado > hash md5Padrão gerado > hash sha1Padrão gerado >
Foco especial nestes 2 métodos, eles serão de grande ajuda sempre que você usar qualquer wordlist.
-m smart▶ cook adminNew,admin_new -m smart
Output:
admin
New
admin
new
-m smartjoin[<case>:<char>]Ele quebra e junta novamente com o caractere fornecido.
▶ cook adminNew,admin-old -m smartjoin[:_]
Output:
admin_New
admin_old
Aplicar Cases sobre os separados
Aqui aplicamos camelCase
▶ cook suppose_this_is_long_text -m smartjoin[c:_]
Output:
suppose_This_Is_Long_Text
cook help methodssort - Ordená-los
sortu - Ordená-los com apenas valores únicos
reverse - Inverter string
leet - a->4, b->8, e->3 ...
leet[0] ou leet[1]
smart - Separar palavras com convenções de nomenclatura
redirectUri, redirect_uri, redirect-uri -> [redirect, uri]
smartjoin - Isso vai dividir as palavras das convenções de nomenclatura &
param.smartjoin[c,_] (case, join)
redirect-uri, redirectUri, redirect_uri -> redirect_Uri
u upper - Maiúsculas
l lower - Minúsculas
t title - Capitalizado
split - split[char]
splitindex - splitindex[char:index]
replace - Substituir Tudo replace[isto:poristo]
json - Extrair campo JSON
json[key] ou json[key:subkey:sub-subkey]
fb filebase - Extrair nome do arquivo do caminho ou URL
s scheme - Extrair http, https, gohper, ws, etc. da URL
user - Extrair username da URL
pass - Extrair password da URL
h host - Extrair host da URL
p port - Extrair porta da URL
ph path - Extrair caminho da URL
f fragment - Extrair fragmento da URL
q query - Extrair toda a query da URL
k keys - Extrair chaves da URL
v values - Extrair valores da URL
d domain - Extrair domínio da URL
tld - Extrair tld da URL
alldir - Extrair todos os diretórios do caminho da URL
sub subdomain - Extrair subdomínio da URL
allsubs - Extrair subdomínio da URL
b64e b64encode - Codificar Base64
b64d b64decode - Decodificar Base64
charcode - Codificação charcode
- charcode[0]
abc
- charcode[1] com ponto e vírgula
abc
hexe hexencode - Codificar string em hexadecimal
hexd hexdecode - Decodificar string hexadecimal
jsone jsonescape - Escape JSON
jsonu jsonunescape - Unescape JSON
urle urlencode - Codificar URL com caracteres reservados
utf16 - Codificador UTF-16 (Little Endian)
utf16be - Codificador UTF-16 (Big Endian)
urld urldecode - Decodificar URL
urleall urlencodeall - Codificar URL todos os caracteres
xmle xmlescape - Escape XML
xmlu xmlunescape - Unescape XML
unicodee unicodeencodeall - Codificação Unicode escape string (todos os caracteres)
unicoded unicodedecode - Decodificação Unicode escape string
md5 - Soma MD5
sha1 - Checksum SHA1
sha224 - Checksum SHA224
sha256 - Checksum SHA256
sha384 - Checksum SHA384
sha512 - Checksum SHA512
Alguns casos de uso gerais para compreender o funcionamento do cook.
Use a flag -append:
cook -l: live.txt -p: payloads.txt l / p -append 2
# Múltiplas colunas
cook col1 col2 col3 col4 col5 -append 2,5
Nota: Às vezes é confuso encontrar o índice da coluna, então use -col
Se você quiser começar a imprimir dados a cada permutação, use a flag -min
Nota: Às vezes é confuso encontrar o índice da coluna, então use -col
Gere um padrão e combine com outras ferramentas usando PIPE.
cook [Padrão Gerado] | [Qualquer ferramenta com entrada por pipe]
cook usernames_list : passwords_list -m b64e | ffuf -u https://target.com -w - -H "Authorization: Basic FUZZ"
cook https://target.com/**100 | ffuf -u FUZZ -w -
cook [saída gerada] | x8 -u https://target.com
cook example.com seclists-tlds.txt | dnsx -v
Muito poderoso? Mas todos os dias você se depara com coisas estranhas de BB, como um grande arquivo json do alvo? Talvez você queira extrair, juntar, mesclar ou o que for. Você pode usar o cook de forma inteligente conforme seu caso de uso.
Como BBH, frequentemente encontramos arquivos JSON. Talvez você leia algo e queira salvar a wordlist em sua coleção.
Digamos que você leu este blog sobre vulnerabilidades IIS Shortname https://blog.assetnote.io/2020/09/18/finding-hidden-files-folders-iis-bigquery/.
Aqui o Assetnote compartilhou um GRANDE ARQUIVO ZIP. Agora você precisa de algo que possa salvar este arquivo e que você possa recuperá-lo quando necessário.
Salve assim..., isso salvará o arquivo em my.yaml
cook add shub_zip_files=[URL] in files
Ou salve manualmente em my.yaml,
shub_zip_files: [https://storage.googleapis.com/zipfilesbq/zipfiles.json]
Nota: o cook já o salvou nas wordlists padrão, você pode usar
cook shub_zip_filespara acessá-lo
▸ O arquivo contém dados assim, mas isso não é diretamente útil.
{"repo_name":"cocowool/RoseCMS","ref":"refs/heads/1","path":"user_guide/_downloads/ELDocs.tmbundle.zip","mode":"33261","id":"f7a11b364ca918379b48ad525798148e7470b6b1"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/fast.zip","mode":"33188","id":"f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/store.zip","mode":"33188","id":"e2add30dc0e3129dc89e20a71abe7314052d0002"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/ultra.zip","mode":"33188","id":"86a8ec776107c075ce2c7f803472aa97dc25cbf7"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/normal.zip","mode":"33188","id":"b4602c94ee000ee54c71c9302b9db956b3fd9f0e"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/fastest.zip","mode":"33188","id":"f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a"}
{"repo_name":"xuguanfeng/practise","ref":"refs/heads/1","path":"node_modules/selenium-webdriver/node_modules/adm-zip/test/assets/maximum.zip","mode":"33188","id":"86a8ec776107c075ce2c7f803472aa97dc25cbf7"}
...
Digamos que você precise:
▸ Extrair campo json path
▸ extrair filebase de path
▸ depois dividi-lo com base em convenções de nomenclatura
▸ Com o cook não só podemos extraí-lo, podemos extrair filebase do path e ordenar único, depois usar smartjoin para criar diferentes permutações.
cook -z shub_zip_files z.json[path].fb.sortu.smartjoin[c:_]
E é assim que o cook também nasceu, enquanto fuzzing de IIS Shortnames e depois adicionei outras funcionalidades.
* e *** para repetição horizontal.** para repetição vertical.*10-1 ou *1-10.
Você pode usar o Cook como biblioteca em seus projetos Go.
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Cria uma nova instância do cook
cookInst := cook.New(&cook.COOK{
Pattern: []string{"a,b,c", "1,2,3"},
PrintResult: false, // Não imprimir no stdout
})
// Gera o padrão
cookInst.Generate()
fmt.Println("Padrões gerados:", cookInst.Final)
}
Para gerar vários padrões sem reinicializar recursos a cada vez:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Cria um gerador que inicializa os recursos compartilhados uma vez
generator := cook.NewGenerator()
// Gera vários padrões de forma eficiente
list1 := generator.Generate([]string{"a,b,c", "1,2,3"})
list2 := generator.Generate([]string{"admin", "password-2023"})
fmt.Println("Padrão 1:", list1)
fmt.Println("Padrão 2:", list2)
}
O gerador também suporta geração concorrente de padrões:
package main
import (
"fmt"
"sync"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
generator := cook.NewGenerator()
patterns := [][]string{
{"user-1-5", "pass-1-3"},
{"admin", "Admin-2023-2025"},
}
var wg sync.WaitGroup
results := make([][]string, len(patterns))
// Gera padrões concorrentemente
for i, pattern := range patterns {
wg.Add(1)
go func(idx int, p []string) {
defer wg.Done()
results[idx] = generator.Generate(p)
}(i, pattern)
}
wg.Wait()
// Usa os resultados
for i, r := range results {
fmt.Printf("Padrão %d gerou %d resultados\n", i, len(r))
}
}
Pesquise os cook-ingredients usando a biblioteca:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
cookInst := cook.NewWithoutConfig()
results := cookInst.Search("api")
fmt.Printf("Padrões de API pesquisados: %v\n", results)
}
cook file1 =/= file2, garantir que caracteres funcionem diretamente em todos os terminais.| Categoria | Descrição |
|---|
lists | Array de valores para usar diretamente quando chamado |
files | Array de urls |
ports | Intervalos de números |
raw-files | Array de arquivos locais |
functions | Funções usadas para gerar padrões |
hash sha256| Colunas | Separadas por espaço |
| Valores | Separados por vírgula |
| Parâmetros | Você pode dar qualquer nome ao parâmetro, use - antes de qualquer coisa para torná-lo parâmetro -param valor |
| Strings Raw | Use ` antes e depois da string para interromper a análise do cook. Útil quando você precisa usar qualquer palavra-chave como uma palavra. |
| Entrada Pipe | Use - como valor de qualquer parâmetro para entrada pipe. |
| Arquivo | Use : após o nome do parâmetro para entrada de arquivo. cook -f: live.txt f |
| Funções | Podem ser chamadas apenas usando parâmetros. |
| Métodos | Podem ser usados em parâmetros ou na saída final |
| Flag | Uso |
|---|
| -peek | Espiar a saída usando -peek 50 para as primeiras 50 linhas |
| -a, -append | Anexar às linhas anteriores, em vez de permutações |
| -c, -col | Imprimir números das colunas e seus valores |
| -conf, -config | Informações de Configuração |
| -mc, -methodcol | Aplicar métodos por coluna -mc 0:md5,b64e; 1:reverse Para todas as colunas separar -mc md5,b64e |
| -m, -method | Aplicar métodos à saída final |
| -h, -help | Ajuda |
| -min | Número mínimo de colunas para imprimir |