
Un framework per wordlist per soddisfare ogni tua esigenza con le tue wordlist. Per ricercatori di sicurezza, bug bounty e hacker.
Un generatore di wordlist, divisore, unificatore, cercatore, salvatore, creatore di permutazioni e combinazioni di parole, applicatore di diverse codifiche/decodifiche e tutto ciò di cui hai bisogno.
L'assassino della frustrazione! & Personalizzabile!
* e **Usa Go o scarica le ultime build
go install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest
Dalla versione v2.2 cook salva cook-ingredients in $home/.config/cook/cook-ingredients
Per cambiare, crea una variabile di percorso chiamata
COOK=[IL TUO PERCORSO]
Senza le basi, tutto è complicato.

Dai loro qualsiasi nome e usali per generare lo schema. Questo sarà più utile quando applichi la codifica per colonna usando metodi.
cook -start intigriti,bugcrowd -sep _,- -end users.rar,secret.zip / start sep end
Nota: devi includere il parametro nello schema, altrimenti non stamperà nulla.
Cook dipende da cook-ingredients, che sono raccolte di file .yaml contenenti set di parole, funzioni, porte, wordlist da assetnotes, seclist, fuzzdb, 15+ etc.
my.yaml
cook -dob date[17,Sep,1994] elliot _,-, dob
my.yamlModifica my.yaml manualmente o usa questi comandi.
Se la keyword non esiste la creerà. Altrimenti la aggiornerà e aggiungerà il nuovo valore nella stessa variabile.
# Sintassi
cook add [keyword]=[valore1, valore2, ..., valoreN] in [categoria]
# Comando
cook add nome_unico=parola1,parola2,parola3 in lists
cook delete [keyword]
usa : dopo il nome del parametro.
cook -f: live.txt f
cook -f: https://example.com/wordlist.txt f
Cook ha scaricato multipli repository e può usare direttamente wordlist da questi repos...
assetnotes, seclist, fuzzdb, etc.
Usando i metodi puoi codificare, decodificare, invertire, dividere, ordinare, estrarre e fare molto altro...
I metodi possono essere applicati sull'output finale o per colonna
-m/-method per applicare i metodi sull'output finale-mc/-methodcol per applicare per colonna.param.nomemetodo applica a qualsiasi parametro, spiegherò questa cosa dei parametri più avanti.
.md5.b64e.urle applica più metodi uno dopo l'altro.Pattern generato > hashing md5 > codifica base 64 > codifica URL.,md5,sha1,sha256 applica diverse codifiche allo stesso pattern generato.Pattern generato > hashing md5Pattern generato > hashing sha1Pattern generato >
Attenzione speciale a questi 2 metodi, saranno di grande aiuto ogni volta che usi qualsiasi wordlist.
-m smart▶ cook adminNew,admin_new -m smart
Output:
admin
New
admin
new
-m smartjoin[<caso>:<carattere>]Separa e riunisce con il carattere fornito.
▶ cook adminNew,admin-old -m smartjoin[:_]
Output:
admin_New
admin_old
Applica maiuscole/minuscole sulla separazione
Qui abbiamo applicato il camelCase
▶ cook suppose_this_is_long_text -m smartjoin[c:_]
Output:
suppose_This_Is_Long_Text
cook help methodssort - Ordinali
sortu - Ordinali con solo valori unici
reverse - Inverti stringa
leet - a->4, b->8, e->3 ...
leet[0] o leet[1]
smart - Separa parole in base alle convenzioni di denominazione
redirectUri, redirect_uri, redirect-uri -> [redirect, uri]
smartjoin - Divide le parole dalle convenzioni di denominazione &
param.smartjoin[c,_] (caso, unione)
redirect-uri, redirectUri, redirect_uri -> redirect_Uri
u upper - Maiuscolo
l lower - Minuscolo
t title - Con iniziale maiuscola
split - split[carattere]
splitindex - splitindex[carattere:indice]
replace - Sostituisci tutto replace[questo:conquesto]
json - Estrai campo JSON
json[chiave] o json[chiave:sottochiave:sotto-sottochiave]
fb filebase - Estrai nome file da percorso o URL
s scheme - Estrai http, https, gohper, ws, etc. dall'URL
user - Estrai nome utente dall'URL
pass - Estrai password dall'URL
h host - Estrai host dall'URL
p port - Estrai porta dall'URL
ph path - Estrai percorso dall'URL
f fragment - Estrai frammento dall'URL
q query - Estrai tutta la query dall'URL
k keys - Estrai chiavi dall'URL
v values - Estrai valori dall'URL
d domain - Estrai dominio dall'URL
tld - Estrai TLD dall'URL
alldir - Estrai tutte le directory dal percorso dell'URL
sub subdomain - Estrai sottodominio dall'URL
allsubs - Estrai sottodominio dall'URL
b64e b64encode - Codifica Base64
b64d b64decode - Decodifica Base64
charcode - Fornisce codifica charcode
- charcode[0]
abc
- charcode[1] con punto e virgola
abc
hexe hexencode - Codifica esadecimale stringa
hexd hexdecode - Decodifica esadecimale stringa
jsone jsonescape - Escape JSON
jsonu jsonunescape - Unescape JSON
urle urlencode - Codifica URL caratteri riservati
utf16 - Codificatore UTF-16 (Little Endian)
utf16be - Codificatore UTF-16 (Big Endian)
urld urldecode - Decodifica URL
urleall urlencodeall - Codifica URL tutti i caratteri
xmle xmlescape - Escape XML
xmlu xmlunescape - Unescape XML
unicodee unicodeencodeall - Codifica escape Unicode stringa (tutti i caratteri)
unicoded unicodedecode - Decodifica escape Unicode stringa
md5 - Somma MD5
sha1 - Checksum SHA1
sha224 - Checksum SHA224
sha256 - Checksum SHA256
sha384 - Checksum SHA384
sha512 - Checksum SHA512
Alcuni casi d'uso generali per comprendere cook.
Usa il flag -append:
cook -l: live.txt -p: payloads.txt l / p -append 2
# Colonne multiple
cook col1 col2 col3 col4 col5 -append 2,5
Nota: A volte è confusionario trovare l'indice della colonna, in tal caso usa -col
Se vuoi iniziare a stampare i dati per ogni permutazione, usa il flag -min
Nota: A volte è confusionario trovare l'indice della colonna, in tal caso usa -col
Genera pattern e combina con altri strumenti usando PIPE.
cook [Pattern generato] | [Qualsiasi strumento con input pipe]
cook lista_utenti : lista_password -m b64e | ffuf -u https://target.com -w - -H "Authorization: Basic FUZZ"
cook https://target.com/**100 | ffuf -u FUZZ -w -
cook [output generato] | x8 -u https://target.com
cook example.com seclists-tlds.txt | dnsx -v
Troppo potente? Ma ogni giorno ti imbatti in cose strane di BB, come un grande file JSON dal target? Forse vuoi estrarre, unire, fondere o qualsiasi altra cosa. Puoi usare cook in modo intelligente secondo il tuo caso d'uso.
Come BBH, ci imbattiamo spesso in file JSON. Forse leggi un wordlist da salvare nella tua collezione.
Diciamo che leggi questo blog sulle vulnerabilità IIS Shortname https://blog.assetnote.io/2020/09/18/finding-hidden-files-folders-iis-bigquery/.
Qui Assetnote ha condiviso BIG ZIP FILE, ora hai bisogno di qualcosa che possa salvare questo file e richiamarlo quando necessario.
Salvalo così..., questo salverà il file in my.yaml
cook add shub_zip_files=[URL] in files
O salva manualmente in my.yaml,
shub_zip_files: [https://storage.googleapis.com/zipfilesbq/zipfiles.json]
Nota: cook lo ha già salvato nelle wordlist predefinite, puoi usare
cook shub_zip_filesper accedervi
▸ Il file contiene dati come questi, ma non sono direttamente utili.
{"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"}
...
Supponiamo che tu abbia bisogno di:
▸ Estrarre il campo JSON path
▸ Estrarre filebase da path
▸ Poi dividerlo in base alle convenzioni di denominazione
▸ Con cook non solo possiamo estrarlo, possiamo estrarre filebase dal percorso e ordinare unico, poi usare smartjoin per creare diverse permutazioni.
cook -z shub_zip_files z.json[path].fb.sortu.smartjoin[c:_]
E questo è anche come è nato cook, mentre facevo fuzzing di IIS Shortnames e successivamente ho aggiunto altre funzionalità.
* e *** per la ripetizione orizzontale.** per la ripetizione verticale.*10-1 o questo *1-10.
Puoi usare Cook come libreria nei tuoi progetti Go.
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Crea una nuova istanza di cook
cookInst := cook.New(&cook.COOK{
Pattern: []string{"a,b,c", "1,2,3"},
PrintResult: false, // Non stampare su stdout
})
// Genera il pattern
cookInst.Generate()
fmt.Println("Pattern generati:", cookInst.Final)
}
Per generare più pattern senza reinizializzare le risorse ogni volta:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Crea un generatore che inizializza le risorse condivise una volta
generator := cook.NewGenerator()
// Genera più pattern efficientemente
list1 := generator.Generate([]string{"a,b,c", "1,2,3"})
list2 := generator.Generate([]string{"admin", "password-2023"})
fmt.Println("Pattern 1:", list1)
fmt.Println("Pattern 2:", list2)
}
Il generatore supporta anche la generazione concorrente di pattern:
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))
// Genera pattern in concorrenza
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 i risultati
for i, r := range results {
fmt.Printf("Pattern %d ha generato %d risultati\n", i, len(r))
}
}
Cerca cook-ingredients usando la libreria:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
cookInst := cook.NewWithoutConfig()
results := cookInst.Search("api")
fmt.Printf("Pattern API cercati: %v\n", results)
}
cook file1 =/= file2, assicurati che i caratteri funzionino direttamente con tutti i terminali.| Categoria | Descrizione |
|---|
lists | Array di valori da usare direttamente quando richiamati |
files | Array di url |
ports | Intervalli di numeri |
raw-files | Array di file locali |
functions | Funzioni usate per generare pattern |
hashing sha256| Colonne | Separate da spazio |
| Valori | Separati da virgola |
| Parametri | Puoi dare qualsiasi nome al parametro, usa - prima di qualsiasi cosa per renderlo un parametro -param valore |
| Stringhe raw | Usa ` prima e dopo la stringa per impedire il parsing di cook. Utile quando hai bisogno di usare una parola chiave come parola. |
| Input pipe | Prende input pipe usando - come valore di qualsiasi parametro. |
| Input file | Usa : dopo il nome del parametro per prendere input da file. cook -f: live.txt f |
| Funzioni | Possono essere chiamate solo tramite parametri. |
| Metodi | Possono essere usati sui parametri o sull'output finale |
| Flag | Utilizzo |
|---|
| -peek | Anteprima dell'output usando -peek 50 per le prime 50 righe |
| -a, -append | Aggiungi alle righe precedenti, invece di permutazioni |
| -c, -col | Stampa i numeri di colonna e i loro valori |
| -conf, -config | Informazioni di configurazione |
| -mc, -methodcol | Applica metodi per colonna -mc 0:md5,b64e; 1:reverse Per tutte le colonne separa -mc md5,b64e |
| -m, -method | Applica metodi all'output finale |
| -h, -help | Aiuto |
| -min | Numero minimo di colonne da stampare |