
Un framework de wordlists pour satisfaire vos envies avec vos wordlists. Pour les chercheurs en sécurité, chasseurs de bugs et hackers.
Un générateur de wordlist surpuissant, capable de diviser, fusionner, rechercher, sauvegarder, créer des permutations et combinaisons de mots, appliquer différents encodages/décodages et tout ce dont vous avez besoin.
Tueur de frustration ! & Personnalisable !
* et **Utilisez Go ou téléchargez les dernières versions
go install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest
À partir de la version v2.2, cook enregistre cook-ingredients dans $home/.config/cook/cook-ingredients
Pour changer, créez une variable de chemin nommée
COOK=[VOTRE CHEMIN]
Sans les bases, tout est complexe.

Nommez-les comme vous voulez et utilisez-les pour générer le motif. Cela sera plus utile lorsque vous appliquerez un encodage colonne par colonne à l'aide des méthodes.
cook -start intigriti,bugcrowd -sep _,- -end users.rar,secret.zip / start sep end
Remarque : vous devez inclure le paramètre dans le motif, sinon rien ne sera affiché.
Cook dépend de cook-ingredients, qui sont des collections de fichiers .yaml contenant des jeux de mots, fonctions, ports, wordlists provenant de assetnotes, seclist, fuzzdb, 15+ etc.
my.yaml
cook -dob date[17,Sep,1994] elliot _,-, dob
my.yamlModifiez my.yaml manuellement ou utilisez ces commandes.
Si le mot-clé n'existe pas, il sera créé. Sinon, il sera mis à jour et la nouvelle valeur sera ajoutée à la même variable.
# Syntaxe
cook add [mot-clé]=[valeur1, valeur2, ..., valeurN] dans [catégorie]
# Commande
cook add nom_unique=mot1,mot2,mot3 in lists
cook delete [mot-clé]
Utilisez : après le nom du paramètre.
cook -f: live.txt f
cook -f: https://example.com/wordlist.txt f
Cook a récupéré plusieurs dépôts et peut directement utiliser les wordlists de ces dépôts...
assetnotes, seclist, fuzzdb, etc.
Grâce aux méthodes, vous pouvez encoder, décoder, inverser, diviser, trier, extraire et bien plus encore...
Les méthodes peuvent être appliquées sur la sortie finale ou colonne par colonne
-m/-method pour appliquer des méthodes sur la sortie finale-mc/-methodcol pour appliquer colonne par colonne.param.nomdelaméthode s'applique à n'importe quel paramètre (nous verrons ce principe avec les paramètres plus tard).
.md5.b64e.urle applique plusieurs méthodes l'une après l'autre.Motif généré > hachage md5 > encodage base 64 > encodage URL.,md5,sha1,sha256 applique différents encodages au même motif généré.Motif généré > hachage md5Motif généré > hachage sha1Motif généré >
Un accent particulier sur ces deux méthodes, elles vous seront d'une grande aide à chaque fois que vous utilisez une wordlist.
-m smart▶ cook adminNew,admin_new -m smart
Sortie :
admin
New
admin
new
-m smartjoin[<case>:<char>]Il brise et ré-assemble avec le caractère fourni.
▶ cook adminNew,admin-old -m smartjoin[:_]
Sortie :
admin_New
admin_old
Appliquer des casses sur les mots séparés
Ici, nous avons appliqué le camelCase
▶ cook suppose_this_is_long_text -m smartjoin[c:_]
Sortie :
suppose_This_Is_Long_Text
cook help methodssort - Trier
sortu - Trier avec valeurs uniques uniquement
reverse - Inverser la chaîne
leet - a->4, b->8, e->3 ...
leet[0] ou leet[1]
smart - Séparer les mots selon les conventions de nommage
redirectUri, redirect_uri, redirect-uri -> [redirect, uri]
smartjoin - Sépare les mots des conventions de nommage &
param.smartjoin[c,_] (case, join)
redirect-uri, redirectUri, redirect_uri -> redirect_Uri
u upper - Majuscules
l lower - Minuscules
t title - Première lettre en majuscule
split - split[char]
splitindex - splitindex[char:index]
replace - Remplacer tout replace[ceci:parceci]
json - Extraire un champ JSON
json[clé] ou json[clé:sous-clé:sous-sous-clé]
fb filebase - Extraire le nom de fichier d'un chemin ou d'une URL
s scheme - Extraire http, https, gohper, ws, etc. d'une URL
user - Extraire le nom d'utilisateur d'une URL
pass - Extraire le mot de passe d'une URL
h host - Extraire l'hôte d'une URL
p port - Extraire le port d'une URL
ph path - Extraire le chemin d'une URL
f fragment - Extraire le fragment d'une URL
q query - Extraire toute la requête d'une URL
k keys - Extraire les clés d'une URL
v values - Extraire les valeurs d'une URL
d domain - Extraire le domaine d'une URL
tld - Extraire le TLD d'une URL
alldir - Extraire tous les répertoires du chemin d'une URL
sub subdomain - Extraire le sous-domaine d'une URL
allsubs - Extraire tous les sous-domaines d'une URL
b64e b64encode - Encodage Base64
b64d b64decode - Décodage Base64
charcode - Donne l'encodage charcode
- charcode[0]
abc
- charcode[1] avec point-virgule
abc
hexe hexencode - Encodage hexadécimal d'une chaîne
hexd hexdecode - Décodage hexadécimal d'une chaîne
jsone jsonescape - Échappement JSON
jsonu jsonunescape - Déséchappement JSON
urle urlencode - Encodage URL des caractères réservés
utf16 - Encodage UTF-16 (Little Endian)
utf16be - Encodage UTF-16 (Big Endian)
urld urldecode - Décodage URL
urleall urlencodeall - Encodage URL de tous les caractères
xmle xmlescape - Échappement XML
xmlu xmlunescape - Déséchappement XML
unicodee unicodeencodeall - Encodage d'échappement Unicode d'une chaîne (tous les caractères)
unicoded unicodedecode - Décodage d'échappement Unicode d'une chaîne
md5 - Somme MD5
sha1 - Somme de contrôle SHA1
sha224 - Somme de contrôle SHA224
sha256 - Somme de contrôle SHA256
sha384 - Somme de contrôle SHA384
sha512 - Somme de contrôle SHA512
Quelques cas d'usage généraux pour comprendre Cook.
Utilisez le drapeau -append :
cook -l: live.txt -p: payloads.txt l / p -append 2
# Colonnes multiples
cook col1 col2 col3 col4 col5 -append 2,5
Remarque : Parfois il est difficile de trouver l'index d'une colonne, utilisez alors -col
Si vous voulez commencer à afficher les données à chaque permutation, utilisez le drapeau -min
Remarque : Parfois il est difficile de trouver l'index d'une colonne, utilisez alors -col
Générez un motif et combinez-le avec d'autres outils via un PIPE.
cook [Motif généré] | [N'importe quel outil acceptant une entrée par pipe]
cook liste_utilisateurs : liste_mots_de_passe -m b64e | ffuf -u https://target.com -w - -H "Authorization: Basic FUZZ"
cook https://target.com/**100 | ffuf -u FUZZ -w -
cook [sortie générée] | x8 -u https://target.com
cook example.com seclists-tlds.txt | dnsx -v
Trop puissant ? Mais tous les jours, vous tombez sur des trucs bizarres en Bug Bounty, comme un gros fichier JSON provenant d'une cible ? Peut-être voulez-vous extraire, joindre, fusionner ou autre. Vous pouvez utiliser Cook intelligemment selon votre cas d'usage.
En tant que chasseur de bugs, nous rencontrons souvent des fichiers JSON. Peut-être lisez-vous un blog pour trouver une wordlist à enregistrer dans votre collection.
Prenons ce blog sur les vulnérabilités IIS Shortname : https://blog.assetnote.io/2020/09/18/finding-hidden-files-folders-iis-bigquery/.
Assetnote a partagé un GROS FICHIER ZIP. Vous avez besoin de quelque chose qui puisse sauvegarder ce fichier et que vous puissiez le rappeler quand vous en avez besoin.
Enregistrez-le comme ceci... cela sauvegardera le fichier dans my.yaml
cook add shub_zip_files=[URL] in files
Ou enregistrez-le manuellement dans my.yaml :
shub_zip_files: [https://storage.googleapis.com/zipfilesbq/zipfiles.json]
Remarque : cook a déjà enregistré ce fichier dans ses wordlists par défaut, vous pouvez utiliser
cook shub_zip_filespour y accéder
▸ Le fichier contient des données comme celles-ci, mais ce n'est pas directement utilisable.
{"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"}
...
Disons que vous avez besoin de :
▸ Extraire le champ JSON path
▸ Extraire le filebase du path
▸ Puis le diviser selon les conventions de nommage
▸ Avec Cook, non seulement nous pouvons l'extraire, mais nous pouvons aussi extraire le filebase du chemin, trier les uniques, puis utiliser smartjoin pour créer différentes permutations.
cook -z shub_zip_files z.json[path].fb.sortu.smartjoin[c:_]
Et c'est aussi ainsi que Cook est né, en fuzzoant les IIS Shortnames et plus tard j'ai ajouté d'autres fonctionnalités.
* et *** pour la répétition horizontale.** pour la répétition verticale.*10-1 ou ceci *1-10.
Vous pouvez utiliser Cook comme bibliothèque dans vos projets Go.
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Créer une nouvelle instance de cook
cookInst := cook.New(&cook.COOK{
Pattern: []string{"a,b,c", "1,2,3"},
PrintResult: false, // Ne pas afficher sur stdout
})
// Générer le motif
cookInst.Generate()
fmt.Println("Motifs générés :", cookInst.Final)
}
Pour générer plusieurs motifs sans réinitialiser les ressources à chaque fois :
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// Créer un générateur qui initialise les ressources partagées une fois
generator := cook.NewGenerator()
// Générer plusieurs motifs efficacement
liste1 := generator.Generate([]string{"a,b,c", "1,2,3"})
liste2 := generator.Generate([]string{"admin", "password-2023"})
fmt.Println("Motif 1 :", liste1)
fmt.Println("Motif 2 :", liste2)
}
Le générateur supporte également la génération concurrente de motifs :
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))
// Générer les motifs de manière concurrente
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()
// Utiliser les résultats
for i, r := range results {
fmt.Printf("Le motif %d a généré %d résultats\n", i, len(r))
}
}
Recherchez dans cook-ingredients en utilisant la bibliothèque :
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
cookInst := cook.NewWithoutConfig()
results := cookInst.Search("api")
fmt.Printf("Motifs API trouvés : %v\n", results)
}
append comme ceci cook fichier1 =/= fichier2, assurez-vous que les caractères fonctionnent directement avec tous les terminaux.| Catégorie | Description |
|---|
lists | Tableau de valeurs à utiliser directement lorsqu'elles sont appelées |
files | Tableau d'URLs |
ports | Plages de nombres |
raw-files | Tableau de fichiers locaux |
functions | Les fonctions sont utilisées pour générer des motifs |
hachage sha256| Colonnes | Séparées par un espace |
| Valeurs | Séparées par une virgule |
| Paramètres | Vous pouvez donner n'importe quel nom à un paramètre, utilisez - avant quelque chose pour en faire un paramètre -param valeur |
| Chaînes brutes | Utilisez ` avant et après la chaîne pour stopper l'analyse de Cook. Utile quand vous devez utiliser un mot-clé comme un mot ordinaire. |
| Entrée par pipe | Prenez une entrée par pipe en utilisant - comme valeur d'un paramètre. |
| Entrée fichier | Utilisez : après le nom du paramètre pour prendre une entrée fichier. cook -f: live.txt f |
| Fonctions | Peuvent être appelées uniquement via les paramètres. |
| Méthodes | Peuvent être utilisées sur les paramètres ou sur la sortie finale |
| Drapeau | Utilisation |
|---|
| -peek | Aperçu de la sortie en utilisant -peek 50 pour les 50 premières lignes |
| -a, -append | Ajoute aux lignes précédentes, au lieu de permutations |
| -c, -col | Affiche les numéros de colonnes et leurs valeurs |
| -conf, -config | Informations de configuration |
| -mc, -methodcol | Applique les méthodes colonne par colonne -mc 0:md5,b64e; 1:reverse Pour toutes les colonnes, séparez -mc md5,b64e |
| -m, -method | Applique les méthodes à la sortie finale |
| -h, -help | Aide |
| -min | Nombre minimum de colonnes à afficher |