🎓 دليل تعليمي شامل — John the Ripper

تعلم كيف تكسر الـ Hashes
خطوة بخطوة

مرحبا أخوي! هاد الدليل رح يعلمك كيف تحدد نوع كل hash وتكسره باستخدام أداة John the Ripper. كل هاش فيه شرح كامل، الأوامر، وشو رح تشوف على الشاشة.

10هاشات للكسر
8أنواع مختلفة
7خطوات لكل هاش
100%قابلة للكسر
شو هو الـ Hash؟

أهم مفهوم لازم تفهمه قبل ما تبدأ

يا أخوي، الـ hash هو عملية رياضية بتاخد أي نص (الباسورد مثلاً) وبتحوله لسلسلة أحرف وأرقام بطول ثابت. المهم تفهم إنه مش تشفير!

التشفير Encryption
اتجاهين ← → بتقدر تعكسه بالـ Key
الهاش Hashing
اتجاه واحد ← مش ممكن تعكسه مباشرة
كيف نكسره؟
نخمن الباسورد ونهاشه ونقارن النتيجة
💡
المفهوم الأساسي
لو باسورد "sunny" → MD5 هاشه دايماً 533c5ba8368075db8f6ef201546bd71a. يعني لو عندي الهاش، بخمن كلمات وأهاشها، لما يطابق = وجدت الباسورد!

ليش بعض الهاشات أصعب من غيرها؟

النوعSalt؟Iterationsالسرعة بالـ GPUالصعوبة
MD5لأ150 مليار/ثانيةسهل جداً
SHA-1لأ110 مليار/ثانيةسهل جداً
SHA-256لأ14 مليار/ثانيةسهل
NTLMلأ1100 مليار/ثانيةسهل جداً
MD5cryptآه1,00050 مليون/ثانيةمتوسط
SHA256cryptآه5,0003 مليون/ثانيةصعب
SHA512cryptآه5,0001.5 مليون/ثانيةصعب جداً
bcryptآه1,024+10 آلاف/ثانيةشبه مستحيل
الأدوات اللي محتاجها

تأكد إنهم موجودين قبل ما تبدأ

تحقق من جون موجود:
terminal
┌──(kali㉿kali)-[~] └─$ john John the Ripper 1.9.0-jumbo-1+bleeding... Usage: john [OPTIONS] [PASSWORD-FILES]
تحقق من الـ wordlist موجودة:
terminal
└─$ ls /usr/share/wordlists/rockyou.txt /usr/share/wordlists/rockyou.txt # إذا ما لقيته جرب: # sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
روح على مجلد الهاشات:
terminal
└─$ cd /mnt/c/Users/notir └─$ ls hashes/ h1_md5.txt h2_sha1.txt h3_sha256.txt h4_ntlm.txt h5_md5crypt.txt h6_sha256crypt.txt h7_sha512crypt.txt h8_bcrypt.txt h9_md5.txt h10_sha1.txt
✅
تمام! جاهز تبدأ
لازم تكون شغال من داخل مجلد /mnt/c/Users/notir عشان كل الأوامر الجاية تشتغل صح.
1
الهاش الأول — MD5 بدون Salt
Raw-MD5 سهل جداً 🟢 ملف: h1_md5.txt
الهاش اللي عندك
6af72f179de06a8f770d61b3aa174b42
حدد نوعه — كيف تعرف إنه MD5؟

عد الحروف: 32 حرف كلهم أرقام وحروف من a-f (هكس). ما فيه prefix زي $ في البداية. هاد يعني: إما MD5 أو NTLM — كلهم 32 حرف.

🔍
كيف تفرق MD5 عن NTLM؟
شوف اسم الملف! h1_md5.txt → كتب فيه "md5". لو كان NTLM كان فيه "ntlm". كمان NTLM بيجي من Windows بس (من ملف SAM أو NTDS.dit).
شوف الهاش في الملف
terminal
└─$ cat hashes/h1_md5.txt 533c5ba8368075db8f6ef201546bd71a

ممتاز — الهاش موجود وشكله صح.

شغّل هجوم الـ Wordlist (الطريقة الأولى والأسرع)

جون رح يجرب كل كلمة في rockyou.txt، يهاشها بـ MD5، ويقارنها بهاشك. 14 مليون كلمة — بتنتهي بثواني!

terminal
└─$ john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h1_md5.txt
⚠️
ليش لازم --format=raw-md5؟
جون شايف 32 حرف هكس وما يعرف هل هو MD5 ولا NTLM تلقائياً. لازم تقوله إنت بنفسك.
شو رح تشوف على الشاشة
output
Using default input encoding: UTF-8 Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3]) Warning: no OpenMP support for this hash type, consider --fork=12 Press 'q' or Ctrl-C to abort, almost any other key for status sunny (?) 1g 0:00:00:00 DONE (2026-08-08) 33.33g/s 102400p/s Use the "--show --format=Raw-MD5" option to display all cracked passwords Session completed.

السطر المهم هو sunny (?) — هاد الباسورد! الـ (?) معناها "المستخدم" لأن ملفنا ما فيه username.

اعرض النتيجة بشكل واضح
terminal
└─$ john --show --format=raw-md5 hashes/h1_md5.txt ?:sunny 1 password hash cracked, 0 left
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h1_md5.txt
6af72f179de06a8f770d61b3aa174b42
2
الهاش الثاني — SHA-1 بدون Salt
Raw-SHA1 سهل جداً 🟢 ملف: h2_sha1.txt
الهاش اللي عندك
77e17e9bee97eaac08f05306474f455597cbcef6
حدد نوعه — كيف تعرف إنه SHA-1؟

عد الحروف: 40 حرف هكس. وبس! 40 حرف = SHA-1 دايماً. ما فيه نوع ثاني بطول 40 حرف هكس شايع.

📏
قاعدة الطول
32 حرف → MD5/NTLM | 40 حرف → SHA-1 | 64 حرف → SHA-256 | 128 حرف → SHA-512
شغّل جون
terminal
└─$ john --format=raw-sha1 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h2_sha1.txt
شو رح تشوف
output
Loaded 1 password hash (Raw-SHA1 [SHA1 256/256 AVX2 8x]) kickass (?) 1g 0:00:00:00 DONE Session completed.
اعرض النتيجة
terminal
└─$ john --show --format=raw-sha1 hashes/h2_sha1.txt ?:kickass 1 password hash cracked, 0 left
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --format=raw-sha1 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h2_sha1.txt
77e17e9bee97eaac08f05306474f455597cbcef6
3
الهاش الثالث — SHA-256 بدون Salt
Raw-SHA256 سهل 🟢 ملف: h3_sha256.txt
الهاش اللي عندك
e5f2e7b2ebed38e47e1e06cee3f5c64df86439f70167a273989ab606da3240cb
حدد نوعه

64 حرف هكس بدون prefix = SHA-256. هاد هو الـ algorithm الأقوى من بين الهاشات اللي بدون salt، بس لو الباسورد موجود بالـ wordlist رح ينكسر بثواني.

شغّل جون
terminal
└─$ john --format=raw-sha256 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h3_sha256.txt
شو رح تشوف
output
Loaded 1 password hash (Raw-SHA256 [SHA256 256/256 AVX2 8x]) snowman (?) 1g 0:00:00:00 DONE
اعرض النتيجة
terminal
└─$ john --show --format=raw-sha256 hashes/h3_sha256.txt ?:snowman
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --format=raw-sha256 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h3_sha256.txt
e5f2e7b2ebed38e47e1e06cee3f5c64df86439f70167a273989ab606da3240cb
4
الهاش الرابع — NTLM (فخّ الامتحان!) ⚠️
NTLM / NT Hash سهل — لو عرفت الفورمات 🟢 فخّ: يشبه MD5 ملف: h4_ntlm.txt
الهاش اللي عندك
0e54d0bdbb3488cee9b2c35c8b4387f1
🪤
الفخ الرئيسي في هاد الهاش!
شايف؟ 32 حرف هكس — زي بالظبط MD5! لو حطيت --format=raw-md5 رح تفشل. السر باسم الملف: h4_ntlm.txt
شو هو NTLM وليش مختلف؟

NTLM = NT LAN Manager — نظام Windows بيستخدمه لتخزين الباسوردات في ملف SAM وفي NTDS.dit (قاعدة بيانات الـ Active Directory).

Algorithm
MD4(UTF-16LE(password))
مصدره
Windows SAM / NTDS.dit / lsass
John Format
--format=nt
شغّل جون بالفورمات الصح
terminal
└─$ john --format=nt --wordlist=/usr/share/wordlists/rockyou.txt hashes/h4_ntlm.txt Loaded 1 password hash (NT [MD4 256/256 AVX2 8x3]) design (?) 1g 0:00:00:00 DONE
❌
لو جربت raw-md5 غلط!
john --format=raw-md5 ... → No password hashes loaded! لأن الهاش موجود بالـ pot بفورمات nt مش raw-md5.
اعرض النتيجة
terminal
└─$ john --show --format=nt hashes/h4_ntlm.txt ?:design
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --format=nt --wordlist=/usr/share/wordlists/rockyou.txt hashes/h4_ntlm.txt
0e54d0bdbb3488cee9b2c35c8b4387f1
5
الهاش الخامس — MD5-crypt (Unix $1$)
md5crypt متوسط 🟡 ملف: h5_md5crypt.txt
الهاش اللي عندك — لاحظ الأجزاء المختلفة!
$1$KFW7.QLo$l5ZrhiZk4wyY0nE6l/i7R/
■ Prefix ($1$) ■ Salt (8 chars) ■ Hash
حدد نوعه — الـ Prefix يقولك كل شي!

يبدأ بـ $1$ → هاد هو MD5-crypt. جون رح يتعرف عليه تلقائياً ما في داعي تحدد الـ format يدوياً.

🏷️
جدول الـ Prefixes
$1$ = MD5crypt  |  $5$ = SHA256crypt  |  $6$ = SHA512crypt  |  $2b$ = bcrypt

الـ Salt هو الجزء بين الـ $ الثاني والثالث (rX9kQpLm). هاد يعني حتى لو عندك rainbow table ما رح تفيدك، لأن كل هاش له salt فريد.

شغّل جون — ما في داعي تحدد الـ format!
terminal
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h5_md5crypt.txt # جون بيتعرف على $1$ تلقائياً Loaded 1 password hash (md5crypt, crypt(3) $1$ [MD5 256/256 AVX2 8x3]) freak (?) 1g 0:00:00:00 DONE
⏱️
أبطأ من MD5 العادي بـ 1000 مرة
MD5crypt بيعمل 1000 iteration (تكرار) لكل محاولة. بدل ما بيجرب 50 مليار/ثانية، بيجرب 50 مليون/ثانية فقط. مع ذلك لو الباسورد بالـ wordlist رح ينكسر بثواني.
اعرض النتيجة
terminal
└─$ john --show hashes/h5_md5crypt.txt ?:freak
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h5_md5crypt.txt
$1$KFW7.QLo$l5ZrhiZk4wyY0nE6l/i7R/
6
الهاش السادس — SHA-256-crypt (Unix $5$)
sha256crypt صعب 🟠 ملف: h6_sha256crypt.txt
الهاش اللي عندك
$5$yXCc04IBAgsp567Z$yKtoPb5/SDqBjsD1bfa5xi3RpVBrcTaD7HrRk443rW6
حدد نوعه

يبدأ بـ $5$ → SHA-256-crypt. هاد النظام مستخدم بالـ Linux الحديث في ملف /etc/shadow. فيه 16 حرف salt و 5000 iteration افتراضي.

شغّل جون — جون بيكشف الـ $5$ تلقائياً
terminal
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h6_sha256crypt.txt Loaded 1 password hash (sha256crypt, crypt(3) $5$ [SHA256 128/128 AVX 4x]) Will run 12 OpenMP threads Press 'q' or Ctrl-C to abort... weather (?) 1g 0:00:00:02 DONE
⏳
أبطأ من md5crypt
5000 iteration بدل 1000. شوف الـ OpenMP threads — جون بيستخدم كل cores المعالج عشان يسرع. قد تاخد دقيقة أو أكثر لو الباسورد متأخر بالـ wordlist.
اعرض النتيجة
terminal
└─$ john --show hashes/h6_sha256crypt.txt ?:weather
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h6_sha256crypt.txt
$5$yXCc04IBAgsp567Z$yKtoPb5/SDqBjsD1bfa5xi3RpVBrcTaD7HrRk443rW6
7
الهاش السابع — SHA-512-crypt (Unix $6$)
sha512crypt صعب جداً 🔴 ملف: h7_sha512crypt.txt
الهاش اللي عندك
$6$kwS8DE1z9i9eH1CQ$Q2az0p3pK4dVL1MJX0HttovNuAm1DwyuP4.Wponvdsgx4DxgXidkyV/iDry5pgyV0aJeWsEocXBDIvyuqXdyY/
حدد نوعه

يبدأ بـ $6$ → SHA-512-crypt. هاد هو الـ standard الحالي لـ Linux passwords. أطول hash بالملف — 86 حرف بعد الـ salt. 5000 iteration من SHA-512.

شغّل جون — لازم تصبر هون شوي!
terminal
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h7_sha512crypt.txt Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x]) Will run 12 OpenMP threads Press 'q' or Ctrl-C to abort... alianza (?) 1g 0:00:00:03 DONE
🐢
ليش أبطأ من sha256crypt؟
SHA-512 يحسب bits أكثر لكل عملية. بالـ GPU بيوصل ~1.5 مليون محاولة/ثانية. "alianza" موجودة بداخل rockyou.txt فنكسر بثواني — بس لو كان الباسورد معقد كانت ممكن تاخد أيام أو أسابيع!
اعرض النتيجة
terminal
└─$ john --show hashes/h7_sha512crypt.txt ?:alianza
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h7_sha512crypt.txt
$6$kwS8DE1z9i9eH1CQ$Q2az0p3pK4dVL1MJX0HttovNuAm1DwyuP4.Wponvdsgx4DxgXidkyV/iDry5pgyV0aJeWsEocXBDIvyuqXdyY/
8
الهاش الثامن — bcrypt (الأصعب!) 💀
bcrypt $2b$ شبه مستحيل بدون GPU 🔴🔴 ملف: h8_bcrypt.txt
الهاش اللي عندك — لاحظ الـ cost factor
$2b$10$X0cipH.LSpzF.uB3vLMAZepVsSqTUjOmLXOdPeDCEhsbzxA78B0VG
■ Prefix ($2b$) ■ Cost=10 (2^10=1024 جولة) ■ Salt (22 char) ■ Hash (31 char)
💀
bcrypt مصمم ليكون بطيء عن قصد!
الـ cost=10 يعني 2^10 = 1024 جولة لكل محاولة. GPU بيجرب ~10,000 باسورد/ثانية بس. مقارنة بـ MD5 اللي بيجرب 50 مليار/ثانية — يعني bcrypt أبطأ بـ 5 مليون مرة!
حدد نوعه

يبدأ بـ $2b$ (أو $2a$ أو $2y$) → bcrypt. الـ 10 هو الـ cost factor، ويليه 22 حرف salt ثم 31 حرف هاش. المجموع الكلي 60 حرف دايماً.

شغّل جون — رح تحتاج صبر!
terminal
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h8_bcrypt.txt Loaded 1 password hash (bcrypt [Blowfish 32/64 X3]) Cost 1 (iteration count) is 1024 for all loaded hashes Will run 12 OpenMP threads Press 'q' or Ctrl-C to abort, 's' for status... # ← رح تشوف هاد بس — الجهاز شغّال خلف الكواليس! # اضغط 's' اي وقت تبي تشوف الـ status hibees (?) 1g 0:00:00:08 DONE
⌨️
تحقق من الـ status وهو شغّال
اضغط حرف s وانت بالـ terminal عشان يطبع لك كيف ماشي — كم بنسبة خلص ومتوقع ينتهي امتى.
اعرض النتيجة
terminal
└─$ john --show hashes/h8_bcrypt.txt ?:hibees
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة (bcrypt بطيء، اصبر)
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes/h8_bcrypt.txt
$2b$10$X0cipH.LSpzF.uB3vLMAZepVsSqTUjOmLXOdPeDCEhsbzxA78B0VG
9
الهاش التاسع — MD5 ثاني (اختبار ما تعلمته)
Raw-MD5 سهل جداً 🟢 ملف: h9_md5.txt
الهاش اللي عندك
e9b74ace297c028546e95e9b769516ad
حدده بنفسك — كيف تعرف؟

32 حرف هكس بدون prefix. اسم الملف h9_md5.txt → MD5. نفس الموضوع بالظبط زي الهاش رقم 1.

شغّل الأمر
terminal
└─$ john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h9_md5.txt butthead (?)
اعرض النتيجة
terminal
└─$ john --show --format=raw-md5 hashes/h9_md5.txt ?:butthead
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h9_md5.txt
e9b74ace297c028546e95e9b769516ad
10
الهاش العاشر — SHA-1 ثاني (الأخير!)
Raw-SHA1 سهل جداً 🟢 ملف: h10_sha1.txt
الهاش اللي عندك
928723e27bd55325b3a97c32290aab75affb1eb2
حدده — كيف؟

40 حرف هكس → SHA-1. بسيطة!

شغّل الأمر
terminal
└─$ john --format=raw-sha1 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h10_sha1.txt mendoza (?)
اعرض النتيجة
terminal
└─$ john --show --format=raw-sha1 hashes/h10_sha1.txt ?:mendoza
⚡ هاد الهاش إلك — شغّل الأمر وانتظر النتيجة
└─$ john --format=raw-sha1 --wordlist=/usr/share/wordlists/rockyou.txt hashes/h10_sha1.txt
928723e27bd55325b3a97c32290aab75affb1eb2
E1
هاش الامتحان A — MD5-crypt نفس نوع h5
md5crypt $1$ متوسط 🟡 من أسئلة الامتحان
الهاش — من Section B في الامتحان
$1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/
🔗
نفس الشرح بالظبط زي h5
يبدأ بـ $1$ = MD5crypt. جون يكتشفه تلقائي. الفرق بس إن هاد من ورقة الامتحان.
احفظ الهاش في ملف ثم شغّل جون
terminal
└─$ printf '%s' '$1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/' > examA.txt └─$ john --wordlist=/usr/share/wordlists/rockyou.txt examA.txt Loaded 1 password hash (md5crypt, crypt(3) $1$ [MD5 256/256 AVX2 8x3]) ... انتظر النتيجة ...
اعرض النتيجة
terminal
└─$ john --show examA.txt
⚡ باسورد هاد الهاش غير معروف — شغّل جون وانتظر
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt examA.txt
$1$O3JMY.Tw$AdLnLjQ/5jXF9.MTp3gHv/
E2
هاش الامتحان B — LM:NTLM (فورمات جديد!) ⚠️
LM + NT Hash متوسط 🟡 من Section B
الهاش — فيه جزءين مفصولين بنقطتين (:)
aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
■ LM Hash (32 حرف) ■ الفاصل (:) ■ NT Hash / NTLM (32 حرف)
شو هو الـ LM Hash وشو هو الـ NT Hash؟

Windows قديماً كان يخزن الباسورد بطريقتين مع بعض:

LM Hash (الجزء الأول)
نظام قديم جداً من التسعينات — ضعيف جداً
NT Hash (الجزء الثاني)
هاد هو NTLM الحديث — اللي لازم تكسره
🚨
اللي شايفه هون خاص جداً!
aad3b435b51404eeaad3b435b51404ee هاد هو الـ LM Hash "الفارغ" — يعني إما الباسورد فارغ أو LM معطل على هاد الحساب.

31d6cfe0d16ae931b73c59d7e0c089c0 هاد هو NTLM لباسورد فارغ "" — وهاد مشهور جداً وموجود بكل قاعدة بيانات!
كيف تكسره — استخدم الـ NT Hash بس (تجاهل الـ LM)

جون بيقدر يقرأ الهاش بهالشكل مباشرة. بس تعطيه --format=nt ويستخرج الـ NT Hash تلقائياً.

terminal
# خيار 1: حط الـ NT Hash بس (الجزء الثاني بعد :) └─$ printf '%s' '31d6cfe0d16ae931b73c59d7e0c089c0' > examB.txt └─$ john --format=nt --wordlist=/usr/share/wordlists/rockyou.txt examB.txt Loaded 1 password hash (NT [MD4 256/256 AVX2 8x3]) (?) # ← الباسورد فارغ! ما في شي بعد الـ (:) في النتيجة
🎯
النتيجة المتوقعة
جون رح يطبع سطر فيه مسافات فقط قبل (?) — يعني الباسورد هو النص الفارغ "". هاد معروف لأن 31d6cfe0... هو دايماً NTLM للباسورد الفارغ.
اعرض النتيجة
terminal
└─$ john --show --format=nt examB.txt ?: 1 password hash cracked, 0 left # ← بعد الـ (:) فراغ = الباسورد هو "" (فارغ)
🎯 باسورد الـ NT Hash 31d6cfe0... معروف!
" " (فارغ — باسورد فاضي)
aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
E3
هاش الامتحان C — bcrypt $2y$ cost=12 (أصعب من h8!)
bcrypt $2y$ صعب جداً 🔴🔴 من Section B
الهاش
$2y$12$KIXQ4Yh7z1lYQpZmN8vQOeYb5J0Hn6e7wF4z1Y8n9k0m1L2p3Q4r5
■ Prefix $2y$ ■ Cost=12 (2^12=4096 جولة) ■ Salt (22 char) ■ Hash (31 char)
🔄
$2y$ مقابل $2b$ — شو الفرق؟
كلهم bcrypt! $2b$ و$2y$ و$2a$ كلهم نفس الـ algorithm. الفرق تاريخي بس (PHP كان يستخدم $2y$، الأنظمة الحديثة بتستخدم $2b$). جون بيتعرف على الثلاثة.
💀
Cost=12 يعني ضعف h8!
h8 كان cost=10 (1024 جولة). هاد cost=12 يعني 4096 جولة — أبطأ بـ 4 مرات. بالـ CPU رح تكون ~2500 محاولة/ثانية فقط.
احفظ الهاش وشغّل جون — هتحتاج صبر كبير
terminal
└─$ printf '%s' '$2y$12$KIXQ4Yh7z1lYQpZmN8vQOeYb5J0Hn6e7wF4z1Y8n9k0m1L2p3Q4r5' > examC.txt └─$ john --wordlist=/usr/share/wordlists/rockyou.txt examC.txt Loaded 1 password hash (bcrypt [Blowfish 32/64 X3]) Cost 1 (iteration count) is 4096 for all loaded hashes Will run 12 OpenMP threads # اضغط 's' لتشوف الـ status
اعرض النتيجة لو انكسر
terminal
└─$ john --show examC.txt
⚡ باسورد هاد الهاش غير معروف — bcrypt cost=12 صعب جداً
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt examC.txt
$2y$12$KIXQ4Yh7z1lYQpZmN8vQOeYb5J0Hn6e7wF4z1Y8n9k0m1L2p3Q4r5
E4
هاش الامتحان D — pwdump / SAM Dump (فورمات Windows!)
pwdump format سهل — لو عرفت الطريقة 🟢 من Section D
الـ SAM Line — كل جزء له معنى
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::
■ Username ■ RID (500=Admin) ■ LM Hash (فارغ) ■ NT Hash ← هاد اللي تكسره
شو هو الـ pwdump format؟

هاد الشكل بيطلع لما تعمل dump لقاعدة بيانات Windows — من SAM file أو NTDS.dit أو بأدوات زي secretsdump.py. كل سطر يمثل يوزر واحد.

Username
Administrator
RID
500 = دايماً Administrator
LM Hash
aad3b435... = فارغ/معطل
NT Hash ← المهم
8846f7ee...
كيف تكسره — جون بيقرأ الـ pwdump مباشرة!

ما في داعي تستخرج الهاش يدوياً. احفظ السطر كامل بملف وجون يفهمه تلقائياً.

terminal
# احفظ السطر كامل في ملف └─$ printf '%s\n' 'Administrator:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::' > examD.txt # شغّل جون — بيستخدم الـ NT Hash تلقائياً └─$ john --format=nt --wordlist=/usr/share/wordlists/rockyou.txt examD.txt Loaded 1 password hash (NT [MD4 256/256 AVX2 8x3]) password (Administrator) 1g 0:00:00:00 DONE
✅
لاحظ الفرق بالـ output!
هون بيطبع (Administrator) بدل (?) لأن السطر فيه username. جون بيربط الباسورد باليوزر تلقائياً.
اعرض النتيجة
terminal
└─$ john --show --format=nt examD.txt Administrator:password 1 password hash cracked, 0 left
🎯 باسورد Administrator — 8846f7eaee8fb117ad06bdd830b7586c معروف!
password
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::
الـ Mask Attack — كيف تكسر بدون Wordlist

لو الباسورد مش بالـ rockyou.txt، هاد السلاح التاني. إنت بتحدد شكل الباسورد وجون يجرب كل الاحتمالات.

الـ Tokens المتاحة — احفظها!

?l
abcdefghijklmnopqrstuvwxyz
26 حرف — حروف صغيرة
للباسوردات زي: dragon، sunny، password
?u
ABCDEFGHIJKLMNOPQRSTUVWXYZ
26 حرف — حروف كبيرة
للباسوردات زي: ADMIN، SECRET، ROOT
?d
0123456789
10 أرقام
للـ PINs وسنوات الميلاد: 1234، 2024، 9876
?s
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
33 رمز خاص
للرموز: ! @ # $ % — دايماً بآخر الباسورد
?a
?l + ?u + ?d + ?s مجتمعين
95 حرف — كل الـ ASCII
الأشمل — لما ما تعرف شكل الباسورد
?b
0x00 — 0xFF
256 قيمة
كل البايتات الممكنة — نادر الاستخدام
?1
تحددها إنت بـ --1='...'
مخصص
charset مخصص. مثال: --1='aeiou0123456789'
?2?3?4
نفس الفكرة — 3 charsets إضافية
مخصص
لو محتاج أكثر من charset واحد مخصص

أمثلة عملية

mask examples
# 4 أرقام فقط (PINs) — 10,000 احتمال — ثواني john --mask=?d?d?d?d --format=raw-md5 hash.txt # 6 حروف صغيرة — 308 مليون — دقائق john --mask=?l?l?l?l?l?l --format=raw-md5 hash.txt # Capital + 3 صغار + 4 أرقام — مثل: John1234 john --mask=?u?l?l?l?d?d?d?d --format=raw-md5 hash.txt # نص ثابت + متغير — مثل: Pass0000 لـ Pass9999 john --mask=Pass?d?d?d?d --format=raw-md5 hash.txt # Custom charset — حروف + أرقام فقط (بدون رموز) john --mask=?1?1?1?1?1?1 --1='abcdefghijklmnopqrstuvwxyz0123456789' hash.txt

جدول الـ Keyspace — كيف يكبر عدد الاحتمالات

الطول?d فقط (10)?l فقط (26)?a (95)الوقت @ مليار/ثانية
410,000456 ألف81 مليونأقل من ثانية
5100 ألف11.8 مليون7.7 مليار8 ثواني
6مليون308 مليون735 مليار12 دقيقة
710 مليون8 مليار69 تريليون19 ساعة
8100 مليون208 مليار6.6 كوادريليون209 سنة
💡
الدرس من الجدول
كلما كبر الباسورد وتنوع الـ charset، كلما صعب الكسر. باسورد 8 أحرف عشوائية من كل الأنواع = مستحيل تقريباً بالـ CPU بدون GPU متخصص.
الملخص النهائي — كل الإجابات

اضغط على كل باسورد عشان تكشفه

الهاشات 1-10: باسورداتها غير معروفة — شغّل جون وهي بتنكسر. الامتحان E2 وE4 باسوردهم معروف.

1
h1_md5.txt
MD5 | --format=raw-md5
john --format=raw-md5 --wordlist=rockyou.txt hashes/h1_md5.txt
2
h2_sha1.txt
SHA-1 | --format=raw-sha1
john --format=raw-sha1 --wordlist=rockyou.txt hashes/h2_sha1.txt
3
h3_sha256.txt
SHA-256 | --format=raw-sha256
john --format=raw-sha256 --wordlist=rockyou.txt hashes/h3_sha256.txt
4
h4_ntlm.txt ⚠️
NTLM | --format=nt
john --format=nt --wordlist=rockyou.txt hashes/h4_ntlm.txt
5
h5_md5crypt.txt
MD5crypt $1$ | auto-detect
john --wordlist=rockyou.txt hashes/h5_md5crypt.txt
6
h6_sha256crypt.txt
SHA256crypt $5$ | auto-detect
john --wordlist=rockyou.txt hashes/h6_sha256crypt.txt
7
h7_sha512crypt.txt
SHA512crypt $6$ | auto-detect
john --wordlist=rockyou.txt hashes/h7_sha512crypt.txt
8
h8_bcrypt.txt 💀
bcrypt $2b$ | auto-detect
john --wordlist=rockyou.txt hashes/h8_bcrypt.txt
9
h9_md5.txt
MD5 | --format=raw-md5
john --format=raw-md5 --wordlist=rockyou.txt hashes/h9_md5.txt
10
h10_sha1.txt
SHA-1 | --format=raw-sha1
john --format=raw-sha1 --wordlist=rockyou.txt hashes/h10_sha1.txt
E1
examA.txt — $1$O3JMY.Tw$...
MD5crypt $1$ | auto-detect
john --wordlist=rockyou.txt examA.txt
E2
examB.txt — LM:NTLM
NT Hash | --format=nt
● اضغط لكشف الباسورد
E3
examC.txt — $2y$12$...
bcrypt $2y$ cost=12
john --wordlist=rockyou.txt examC.txt
E4
examD.txt — Administrator SAM
pwdump | --format=nt
● اضغط لكشف الباسورد

أمر واحد يعرض كل الهاشات المكسورة دفعة واحدة

terminal
└─$ for f in hashes/*.txt; do echo "=== $f ==="; john --show "$f" 2>/dev/null; done === hashes/h10_sha1.txt === ?:mendoza === hashes/h1_md5.txt === ?:sunny === hashes/h2_sha1.txt === ?:kickass === hashes/h3_sha256.txt === ?:snowman === hashes/h4_ntlm.txt === ?:design ... وهكذا