
إطار عمل لقوائم الكلمات لتلبية اهتماماتك مع قوائم الكلمات الخاصة بك. مخصص لباحثي الأمن، صائدي الثغرات، والقراصنة.
أداة قوية جداً لتوليد قوائم الكلمات، تقسيمها، دمجها، البحث عنها، حفظها، إنشاء التباديل والتوافيق للكلمات، تطبيق ترميز/فك ترميز مختلف وكل ما تحتاجه.
قاتل الإحباط! وقابلة للتخصيص!
* و **استخدم Go أو حمّل أحدث الإصدارات
go install -v github.com/glitchedgitz/cook/v2/cmd/cook@latest
من الإصدار v2.2 يحفظ cook ملفات cook-ingredients في $home/.config/cook/cook-ingredients
للتغيير، أنشئ متغير مسار باسم
COOK=[المسار الذي تريده]
بدون الأساسيات، كل شيء معقد.

أطلق عليها أي اسم واستخدمها لتوليد النمط. سيكون هذا أكثر فائدة عند تطبيق الترميز على كل عمود باستخدام الطرق.
cook -start intigriti,bugcrowd -sep _,- -end users.rar,secret.zip / start sep end
ملاحظة: يجب تضمين الوسيط في النمط، وإلا فلن يطبع شيئًا.
يعتمد Cook على cook-ingredients، وهي مجموعة ملفات .yaml تحتوي على مجموعات كلمات، دوال، منافذ، قوائم كلمات من assetnotes، seclist، fuzzdb، 15+ إلخ.
my.yaml
cook -dob date[17,Sep,1994] elliot _,-, dob
my.yamlحرّر my.yaml يدويًا أو استخدم هذه الأوامر.
إذا كانت الكلمة المفتاحية غير موجودة ستنشئها. وإلا فستحدثها وتضيف القيمة الجديدة في نفس المتغير.
# الصيغة
cook add [الكلمة المفتاحية]=[القيمة1, القيمة2, ..., القيمةN] in [التصنيف]
# الأمر
cook add unique_name=word1,word2,word3 in lists
cook delete [الكلمة المفتاحية]
استخدم : بعد اسم الوسيط.
cook -f: live.txt f
cook -f: https://example.com/wordlist.txt f
قام Cook بجلب مستودعات متعددة ويمكنه استخدام قوائم الكلمات مباشرة من هذه المستودعات...
assetnotes، seclist، fuzzdb، إلخ.
باستخدام الطرق يمكنك الترميز، فك الترميز، عكس، تقسيم، فرز، استخراج والقيام بالكثير...
يمكن تطبيق الطرق على المخرجات النهائية أو على كل عمود على حدة
-m/-method لتطبيق الطرق على المخرجات النهائية-mc/-methodcol لتطبيقها على كل عمود.param.methodname تطبيق على أي وسيط على حدة، وسنشرح هذا لاحقًا.
.md5.b64e.urle تطبيق طرق متعددة واحدة تلو الأخرى.النمط المولد > تجزئة md5 > ترميز base 64 > ترميز URL.,md5,sha1,sha256 تطبيق ترميزات مختلفة على نفس النمط المولد.النمط المولد > تجزئة md5النمط المولد > تجزئة sha1النمط المولد >
تركيز خاص على هاتين الطريقتين، ستكونان مفيدتين جدًا كلما استخدمت أي قائمة كلمات.
-m smart▶ cook adminNew,admin_new -m smart
المخرجات:
admin
New
admin
new
-m smartjoin[<حالة>:<حرف>]يقوم بفصل ثم ربط مرة أخرى بالحرف المقدم.
▶ cook adminNew,admin-old -m smartjoin[:_]
المخرجات:
admin_New
admin_old
تطبيق حالات على المقاطع المفصولة
هنا طبقنا حالة الجمل (camelcase)
▶ cook suppose_this_is_long_text -m smartjoin[c:_]
المخرجات:
suppose_This_Is_Long_Text
cook help methodssort - ترتيب
sortu - ترتيب مع قيم فريدة فقط
reverse - عكس السلسلة
leet - a->4, b->8, e->3 ...
leet[0] أو leet[1]
smart - فصل الكلمات حسب اصطلاحات التسمية
redirectUri, redirect_uri, redirect-uri -> [redirect, uri]
smartjoin - سيتم تقسيم الكلمات من اصطلاحات التسمية &
param.smartjoin[c,_] (حالة, ربط)
redirect-uri, redirectUri, redirect_uri -> redirect_Uri
u upper - أحرف كبيرة
l lower - أحرف صغيرة
t title - حالة العنوان (أول حرف كبير)
split - split[حرف]
splitindex - splitindex[حرف:فهرس]
replace - استبدال الكل replace[هذا:بهذا]
json - استخراج حقل JSON
json[مفتاح] أو json[مفتاح:مفتاح فرعي:مفتاح فرعي فرعي]
fb filebase - استخراج اسم الملف من المسار أو URL
s scheme - استخراج http, https, gohper, ws إلخ من URL
user - استخراج اسم المستخدم من URL
pass - استخراج كلمة المرور من URL
h host - استخراج المضيف من URL
p port - استخراج المنفذ من URL
ph path - استخراج المسار من URL
f fragment - استخراج الجزء (fragment) من URL
q query - استخراج الاستعلام بالكامل من URL
k keys - استخراج المفاتيح من URL
v values - استخراج القيم من URL
d domain - استخراج النطاق من URL
tld - استخراج TLD من URL
alldir - استخراج جميع الدلائل من مسار URL
sub subdomain - استخراج النطاق الفرعي من URL
allsubs - استخراج النطاق الفرعي من URL
b64e b64encode - ترميز Base64
b64d b64decode - فك ترميز Base64
charcode - إعطاء ترميز (charcode)
- charcode[0]
abc
- charcode[1] مع فاصلة منقوطة
abc
hexe hexencode - ترميز السلسلة بالنظام الست عشري
hexd hexdecode - فك ترميز السلسلة من النظام الست عشري
jsone jsonescape - هروب JSON
jsonu jsonunescape - إلغاء هروب JSON
urle urlencode - ترميز الأحرف المحجوزة في URL
utf16 - ترميز UTF-16 (Little Endian)
utf16be - ترميز UTF-16 (Big Endian)
urld urldecode - فك ترميز URL
urleall urlencodeall - ترميز جميع الأحرف في URL
xmle xmlescape - هروب XML
xmlu xmlunescape - إلغاء هروب XML
unicodee unicodeencodeall - ترميز كل الأحرف بهروب يونيكود (جميع الأحرف)
unicoded unicodedecode - فك ترميز هروب يونيكود
md5 - مجموع MD5
sha1 - مجموع SHA1
sha224 - مجموع SHA224
sha256 - مجموع SHA256
sha384 - مجموع SHA384
sha512 - مجموع SHA512
بعض حالات الاستخدام العامة لفهم cook.
استخدم الخيار -append:
cook -l: live.txt -p: payloads.txt l / p -append 2
# أعمدة متعددة
cook col1 col2 col3 col4 col5 -append 2,5
ملاحظة: في بعض الأحيان يكون من المحيّر العثور على فهرس العمود، استخدم -col
إذا كنت تريد البدء في طباعة البيانات لكل تبديلة، استخدم الخيار -min
ملاحظة: في بعض الأحيان يكون من المحيّر العثور على فهرس العمود، استخدم -col
قم بتوليد نمط وادمجه مع أدوات أخرى باستخدام PIPE.
cook [النمط المولد] | [أي أداة تدخل عبر الأنبوب]
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 [المخرجات المولدة] | x8 -u https://target.com
cook example.com seclists-tlds.txt | dnsx -v
هل هو قوي جدًا؟ لكن كل يوم تواجه أشياء غريبة في مجال BB، مثل ملف JSON كبير من الهدف؟ ربما تريد استخراج، ضم، دمج أو أي شيء. يمكنك استخدام cook بذكاء حسب حالتك.
كمختبر BBH، غالبًا ما نواجه ملفات JSON. ربما تقرأ وتجد قائمة كلمات لحفظها في مجموعتك.
لنقل أنك قرأت هذه المدونة عن نقاط الضعف في IIS Shortname https://blog.assetnote.io/2020/09/18/finding-hidden-files-folders-iis-bigquery/.
هنا Assetnote شارك ملف ZIP كبير، الآن تحتاج شيئًا يمكنه حفظ هذا الملف ويمكنك استدعاؤه عند الحاجة.
احفظه هكذا...، هذا سيحفظ الملف في my.yaml
cook add shub_zip_files=[URL] in files
أو احفظه يدويًا في my.yaml،
shub_zip_files: [https://storage.googleapis.com/zipfilesbq/zipfiles.json]
ملاحظة: لقد حفظه cook بالفعل في قوائم الكلمات الافتراضية، يمكنك استخدام
cook shub_zip_filesللوصول إليه
▸ الملف يحتوي على بيانات كهذه، لكن هذا ليس مفيدًا مباشرة.
{"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"}
...
لنقل أنك تحتاج إلى:
▸ استخراج حقل JSON path
▸ استخراج filebase من path
▸ ثم تقسيمه بناءً على اصطلاحات التسمية
▸ باستخدام cook ليس فقط يمكننا استخراجها، بل يمكننا استخراج اسم الملف من المسار وفرز فريد ثم استخدام smartjoin لإنشاء تباديل مختلفة.
cook -z shub_zip_files z.json[path].fb.sortu.smartjoin[c:_]
وهكذا أيضًا وُلد cook، أثناء فحص IIS Shortnames وأضفت لاحقًا ميزات أخرى.
* و *** للتكرار الأفقي.** للتكرار العمودي.*10-1 أو هذا *1-10.
يمكنك استخدام Cook كمكتبة في مشاريع Go الخاصة بك.
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// إنشاء كائن cook جديد
cookInst := cook.New(&cook.COOK{
Pattern: []string{"a,b,c", "1,2,3"},
PrintResult: false, // لا تطبع إلى stdout
})
// توليد النمط
cookInst.Generate()
fmt.Println("الأنماط المولدة:", cookInst.Final)
}
لتوليد أنماط متعددة دون إعادة تهيئة الموارد في كل مرة:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
// إنشاء مولد يقوم بتهيئة الموارد المشتركة مرة واحدة
generator := cook.NewGenerator()
// توليد أنماط متعددة بكفاءة
list1 := generator.Generate([]string{"a,b,c", "1,2,3"})
list2 := generator.Generate([]string{"admin", "password-2023"})
fmt.Println("النمط 1:", list1)
fmt.Println("النمط 2:", list2)
}
يدعم المولد أيضًا توليد الأنماط بشكل متزامن:
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))
// توليد الأنماط بشكل متزامن
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()
// استخدام النتائج
for i, r := range results {
fmt.Printf("النمط %d أنتج %d نتيجة\n", i, len(r))
}
}
ابحث في cook-ingredients باستخدام المكتبة:
package main
import (
"fmt"
"github.com/glitchedgitz/cook/v2/pkg/cook"
)
func main() {
cookInst := cook.NewWithoutConfig()
results := cookInst.Search("api")
fmt.Printf("الأنماط التي تم البحث عنها في API: %v\n", results)
}
cook file1 =/= file2، وتأكد من أن الرموز تعمل مباشرة مع جميع المحطات.| التصنيف | الوصف |
|---|
lists | مصفوفة من القيم لاستخدامها مباشرة عند الاستدعاء |
files | مصفوفة من عناوين URL |
ports | نطاقات من الأرقام |
raw-files | مصفوفة من الملفات المحلية |
functions | تُستخدم الدوال لتوليد الأنماط |
تجزئة sha256| الأعمدة | مفصولة بمسافة |
| القيم | مفصولة بفاصلة |
| الوسائط | يمكنك إعطاء الوسيط أي اسم، استخدم - قبل أي شيء لجعله وسيطًا -param value |
| النصوص الخام | استخدم ` قبل وبعد النص لإيقاف تحليل cook. مفيد عندما تحتاج لاستخدام أي كلمة مفتاحية ككلمة عادية. |
| الإدخال عبر الأنبوب | استخدم - كقيمة لأي وسيط لأخذ الإدخال عبر الأنبوب. |
| إدخال ملف | استخدم : بعد اسم الوسيط لأخذ إدخال ملف. cook -f: live.txt f |
| الدوال | يمكن استدعاؤها باستخدام الوسائط فقط. |
| الطرق | يمكن استخدامها على الوسائط أو على المخرجات النهائية |
| الخيار | الاستخدام |
|---|
| -peek | انظر إلى المخرجات باستخدام -peek 50 لأول 50 سطر |
| -a, -append | ألحق بالسطور السابقة، بدلاً من التباديل |
| -c, -col | اطبع أرقام الأعمدة وقيمها |
| -conf, -config | معلومات الإعدادات |
| -mc, -methodcol | طبق الطرق على كل عمود -mc 0:md5,b64e; 1:reverse لجميع الأعمدة بشكل منفصل -mc md5,b64e |
| -m, -method | طبق الطرق على المخرجات النهائية |
| -h, -help | المساعدة |
| -min | الحد الأدنى لعدد الأعمدة للطباعة |