
Un framework de listas de palabras para satisfacer tus caprichos con tus listas de palabras. Para investigadores de seguridad, bug bounty y hackers.
Un generador de wordlists, divisor, fusionador, buscador, guardador, creador de permutaciones y combinaciones de palabras, aplica diferentes codificaciones/decodificaciones y todo lo que necesites.
¡Matador de frustraciones! y Personalizable.
* y **Usa Go o descarga las últimas builds
go install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest
A partir de la versión v2.2 cook guarda cook-ingredients en $home/.config/cook/cook-ingredients
Para cambiarlo crea una variable de ruta llamada
COOK=[TU RUTA]
Sin lo básico, todo es complejo.

Ponles cualquier nombre y úsalos para generar el patrón. Esto será más útil cuando apliques codificación por columnas usando métodos.
cook -start intigriti,bugcrowd -sep _,- -end users.rar,secret.zip / start sep end
Nota: debes incluir el parámetro en el patrón, de lo contrario no imprimirá nada.
Cook depende de cook-ingredients, que son colecciones de archivos .yaml con conjuntos de palabras, funciones, puertos, wordlists de assetnotes, seclist, fuzzdb, 15+ etc.
my.yaml
cook -dob date[17,Sep,1994] elliot _,-, dob
my.yamlEdita my.yaml manualmente o usa estos comandos.
Si la palabra clave no existe, la creará. De lo contrario, la actualizará y agregará el nuevo valor en la misma variable.
# Sintaxis
cook add [palabra_clave]=[valor1, valor2, ..., valorN] in [categoría]
# Comando
cook add nombre_unico=palabra1,palabra2,palabra3 in lists
cook delete [palabra_clave]
usa : después del nombre del parámetro.
cook -f: live.txt f
cook -f: https://example.com/wordlist.txt f
Cook ha obtenido múltiples repositorios y puede usar directamente wordlists de estos repositorios...
assetnotes, seclist, fuzzdb, etc.
Usando métodos puedes codificar, decodificar, invertir, dividir, ordenar, extraer y hacer mucho más...
Los métodos pueden aplicarse al resultado final o por columnas
-m/-method para aplicar métodos al resultado final-mc/-methodcol para aplicar por columnas.param.nombremétodo aplicar a cualquier parámetro; explicaremos esto de los parámetros más adelante.
.md5.b64e.urle aplica varios métodos uno tras otro.Patrón generado > hash md5 > codificación base64 > codificación URL.,md5,sha1,sha256 aplica diferentes codificaciones al mismo patrón generado.Patrón generado > hash md5Patrón generado > hash sha1Patrón generado >
Enfoque especial en estos 2 métodos, te serán de gran ayuda cada vez que uses cualquier wordlist.
-m smart▶ cook adminNew,admin_new -m smart
Salida:
admin
New
admin
new
-m smartjoin[<case>:<char>]Rompe y vuelve a unir con el carácter suministrado.
▶ cook adminNew,admin-old -m smartjoin[:_]
Salida:
admin_New
admin_old
Aplicar mayúsculas sobre lo separado
Aquí aplicamos camelcase
▶ cook suppose_this_is_long_text -m smartjoin[c:_]
Salida:
suppose_This_Is_Long_Text
cook help methodssort - Ordenarlos
sortu - Ordenar con valores únicos solamente
reverse - Invertir cadena
leet - a->4, b->8, e->3 ...
leet[0] o leet[1]
smart - Separar palabras según convenciones de nomenclatura
redirectUri, redirect_uri, redirect-uri -> [redirect, uri]
smartjoin - Esto dividirá las palabras según convenciones de nomenclatura &
param.smartjoin[c,_] (mayúsculas, unión)
redirect-uri, redirectUri, redirect_uri -> redirect_Uri
u upper - Mayúsculas
l lower - Minúsculas
t title - Título (capitalizar)
split - split[carácter]
splitindex - splitindex[carácter:índice]
replace - Reemplazar todo replace[esto:esto]
json - Extraer campo JSON
json[clave] o json[clave:subclave:sub-subclave]
fb filebase - Extraer nombre de archivo de una ruta o URL
s scheme - Extraer http, https, gohper, ws, etc. de la URL
user - Extraer nombre de usuario de la URL
pass - Extraer contraseña de la URL
h host - Extraer host de la URL
p port - Extraer puerto de la URL
ph path - Extraer ruta de la URL
f fragment - Extraer fragmento de la URL
q query - Extraer toda la consulta de la URL
k keys - Extraer claves de la URL
v values - Extraer valores de la URL
d domain - Extraer dominio de la URL
tld - Extraer tld de la URL
alldir - Extraer todos los directorios de la ruta de la URL
sub subdomain - Extraer subdominio de la URL
allsubs - Extraer subdominio de la URL
b64e b64encode - Codificar Base64
b64d b64decode - Decodificar Base64
charcode - Dar codificación charcode
- charcode[0]
abc
- charcode[1] con punto y coma
abc
hexe hexencode - Codificar cadena hexadecimal
hexd hexdecode - Decodificar cadena hexadecimal
jsone jsonescape - Escapar JSON
jsonu jsonunescape - Desescapar JSON
urle urlencode - Codificar caracteres reservados URL
utf16 - Codificador UTF-16 (Little Endian)
utf16be - Codificador UTF-16 (Big Endian)
urld urldecode - Decodificar URL
urleall urlencodeall - Codificar todos los caracteres URL
xmle xmlescape - Escapar XML
xmlu xmlunescape - Desescapar XML
unicodee unicodeencodeall - Codificar cadena con escape Unicode (todos los caracteres)
unicoded unicodedecode - Decodificar cadena con escape Unicode
md5 - Suma MD5
sha1 - Checksum SHA1
sha224 - Checksum SHA224
sha256 - Checksum SHA256
sha384 - Checksum SHA384
sha512 - Checksum SHA512
Algunos casos de uso generales para comprender cook.
Usa la bandera -append:
cook -l: live.txt -p: payloads.txt l / p -append 2
# Varias columnas
cook col1 col2 col3 col4 col5 -append 2,5
Nota: A veces es confuso encontrar el índice de la columna, entonces usa -col
Si quieres empezar a imprimir datos para cada permutación, usa la bandera -min
Nota: A veces es confuso encontrar el índice de la columna, entonces usa -col
Genera un patrón y combínalo con otras herramientas usando TUBERÍA (PIPE).
cook [Patrón generado] | [Cualquier herramienta con entrada por tubería]
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 [salida generada] | x8 -u https://target.com
cook example.com seclists-tlds.txt | dnsx -v
¿Demasiado poderoso? Pero a diario te encuentras con cosas raras de BB, como un gran archivo JSON del objetivo. Quizás quieras extraer, unir, fusionar o lo que sea. Puedes usar cook de manera inteligente según tu caso de uso.
Como BBH, a menudo nos encontramos con archivos JSON. Tal vez leas algo y quieras guardar una wordlist en tu colección.
Supongamos que lees este blog sobre vulnerabilidades de nombres cortos de IIS https://blog.assetnote.io/2020/09/18/finding-hidden-files-folders-iis-bigquery/.
Aquí Assetnote compartió UN GRAN ARCHIVO ZIP. Ahora necesitas algo que pueda guardar este archivo y puedas recuperarlo cuando lo necesites.
Guárdalo así..., esto guardará el archivo en my.yaml
cook add shub_zip_files=[URL] in files
O guárdalo manualmente en my.yaml,
shub_zip_files: [https://storage.googleapis.com/zipfilesbq/zipfiles.json]
Nota: cook ya lo ha guardado en las wordlists por defecto, puedes usar
cook shub_zip_filespara acceder a él
▸ El archivo contiene datos como estos, pero esto no es directamente ú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 necesitas:
▸ Extraer el campo JSON path
▸ extraer filebase de path
▸ luego dividirlo según convenciones de nomenclatura
▸ Con cook no solo podemos extraerlo, podemos extraer filebase de la ruta y ordenar único, luego usar smartjoin para crear diferentes permutaciones.
cook -z shub_zip_files z.json[path].fb.sortu.smartjoin[c:_]
Y así fue como nació cook, mientras fuzzeaba nombres cortos de IIS y luego le añadí otras características.
* y *** para repetición horizontal.** para repetición vertical.*10-1 o esto *1-10.
Puedes usar Cook como biblioteca en tus proyectos Go.
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Crear una nueva instancia de cook
cookInst := cook.New(&cook.COOK{
Pattern: []string{"a,b,c", "1,2,3"},
PrintResult: false, // No imprimir en stdout
})
// Generar el patrón
cookInst.Generate()
fmt.Println("Patrones generados:", cookInst.Final)
}
Para generar múltiples patrones sin reinicializar recursos cada vez:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Crear un generador que inicializa los recursos compartidos una vez
generator := cook.NewGenerator()
// Generar múltiples patrones de manera eficiente
list1 := generator.Generate([]string{"a,b,c", "1,2,3"})
list2 := generator.Generate([]string{"admin", "password-2023"})
fmt.Println("Patrón 1:", list1)
fmt.Println("Patrón 2:", list2)
}
El generador también admite la generación concurrente de patrones:
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))
// Generar patrones concurrentemente
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()
// Usar los resultados
for i, r := range results {
fmt.Printf("Patrón %d generó %d resultados\n", i, len(r))
}
}
Busca en cook-ingredients usando la biblioteca:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
cookInst := cook.NewWithoutConfig()
results := cookInst.Search("api")
fmt.Printf("Patrones de API buscados: %v\n", results)
}
cook file1 =/= file2, asegurarse de que los caracteres funcionen directamente con todos los terminales.| Categoría | Descripción |
|---|
lists | Array de valores para usar directamente al ser invocados |
files | Array de urls |
ports | Rangos de números |
raw-files | Array de archivos locales |
functions | Funciones usadas para generar patrones |
hash sha256| Columnas | Separadas por espacio |
| Valores | Separados por coma |
| Parámetros | Puedes darle cualquier nombre al parámetro, usa - antes de cualquier cosa para convertirlo en parámetro -param valor |
| Cadenas sin procesar | Usa ` antes y después de la cadena para evitar el análisis de cook. Útil cuando necesitas usar alguna palabra clave como una palabra. |
| Entrada de tubería | Toma entrada de tubería usando - como valor de cualquier parámetro. |
| Entrada de archivo | Usa : después del nombre del parámetro para tomar entrada de archivo. cook -f: live.txt f |
| Funciones | Solo se pueden llamar mediante parámetros. |
| Métodos | Se pueden usar en parámetros o en la salida final. |
| Bandera | Uso |
|---|
| -peek | Mira la salida usando -peek 50 para las primeras 50 líneas |
| -a, -append | Añade a las líneas anteriores, en lugar de permutaciones |
| -c, -col | Imprime los números de columna y sus valores |
| -conf, -config | Información de configuración |
| -mc, -methodcol | Aplica métodos por columnas -mc 0:md5,b64e; 1:reverse Para todas las columnas separa -mc md5,b64e |
| -m, -method | Aplica métodos a la salida final |
| -h, -help | Ayuda |
| -min | Número mínimo de columnas a imprimir |