مضى على الشبكة و يوم من العطاء.

حل تحدّي bandit المرحلة رقم 10 --> 11

BAYANBAYAN is verified member.

الرقابة والتنظيم
.:: الرقابة والتنظيم ::.
.:: طاقم المشرفين ::.

السمعة:

بسم الله الرحمن الرحيم

وصف التّحدي :
كلمة المرور للمرحلة التالية مخزنة في الملف data.txt، تم ترميزه باستخدام Base64


حلّ التّحدّي :
نبدأ الحل باسم الله، كما اعتدنا علينا تسجيل الدخول إلى السيرفر الخاص بالتحديات، باسم المستخدم bandit10
Bash:
ssh [email protected] -p 2220
بعد تسجبل الدخول دعنا نجرب قراءة محتوى الملف data.txt
Bash:
cat data.txt
1724345993637.webp

وكما تلاحظ ظهرت لدنيا كلمات مقروءة ولكن دون معنى ومنتهية بـ == ، ويفترض أن هذه الكلمات تم ترميزها بطريقة ما كما هو مذكور بوصف التحدّي، وأن نوع الترميز المُستخدم هو Base64
وكل ما علينا فعله الآن هو فك هذا التشفير أو بمعنى أدق فك هذا الترميز لاستراجع النص الأصلي، والذي سيكون عبارة عن كلمة مرورو المرحلة التاليه.

يمكن عمل ذلك بطريقتان:
طريقة الحل الأولى: باستخدام سطر الأوامر عن طريق الأمر cat data.txt | base64 -d
Bash:
cat data.txt | base64 -d
1724526989121.webp

حيث أن d- ترمز ل decode وهو يعني فك الترميز وكما تعرفنا سابقا على الـ pipline حيث أنه يعمل كأنبوب يأخد مخرجات الأمر الأول وهو cat ، كمدخلات للأمر الثاني وهو base64، ف هنا سيتم قراءة محتوى الملف باستخدام الأمر cat حيث انه يعرض محتوياته على شكل مخرجيات على سطر الاوامر وهذه المحتويات سيتم اخدها كمدخلات للـ base64 ليتم فك ترميزها كما هو موضَّح بالصورة أعلاه.

طريقة الحل الثانية: باستخدام أدوات لفك التشفير والترميز أونلاين مثل الموقع التالي:
https://www.base64decode.org/

1724527255762.webp

حيث نأخد محتوى الملف ونلصقه وتقوم الأداة بفك ترميزه بكل سهولة، ويمكنك البحث عن هذه الأدوات باستخدام محرك البحث Google عن طريقة مثلا كتابة ما يلي " online decoder "
وسيعرض لك صديقنا Google وفرة من المواقع.


التوضيح:
كنت قد شرحت مفهوم ترميز المعلومات أو الـ Encoding بالمقال التالي، حيث يمكنك الاطلاع عليه لمعرفة مفهومه بشكل عام

توضيح الـ Encoding


- ما هو الـ encoding :
هي عملية تحويل البيانات نفسها من شكل لآخر فقط ، والاشكال الأخرى يمكن اعتبارها ك لُغات أخرى، مثلًا الكلام الذي نكتبه على الكيبورد نفسه يتم تحويله لـ لغة يستطيع فهمها الحاسوب وتُسمى بالباينري وتحتمل قيمتين هم 0 1 ، فهكذا هو ما زال نفس الكلام بنفس المعنى لكن فقط تمت ترجمته او تحويله لـ لغة اخر بفهمها الحاسوب حتى يستطيع التعامل معها ويعالجها ويخزنها الـخ …

- بعض أنواع الـ encoding
( ASCII , Base64 , HTML , HEX , URL )

- مصطلحات بعالم الـ Encoding :
بداية علينا معرفة أن عملية تحويل الداتا من شكل لـ آخر نسمّيها بعمليَّة الـ encoding، وأن عملية ترجيعها للأصل والتي هي بعكس الـ encoding نسمّيها decoding، وهي عملية يمكن عكسها بسهولة ولذلك نقول عنها انها reversible أي يُمكن ان يتم عكسها واسترجاع النّص الأصليّ).

والآن دعونا نأخذ صورة عامّة عن ترميز Base64 :
هو طريقة لترميز البيانات الثنائية (مثل الصور أو الملفات) إلى نصوص قابلة للقراءة بواسطة البشر human - readable، وذلك باستخدام مجموعة محددة من 64 رمزًا. حيث يُستخدم هذا الترميز بشكل شائع في نقل البيانات عبر بروتوكولات الإنترنت التي تتعامل مع النصوص، مثل البريد الإلكتروني وHTTP.

خطوات ترميز Base64:

1. تقسيم البيانات:
- يتم تقسيم البيانات الثنائية إلى مجموعات من 24 بت (3 بايت).

2. تقسيم البتات:
- تُقسم كل مجموعة من 24 بت إلى أربع مجموعات من 6 بت.

3. تحويل البتات إلى رموز:
- كل مجموعة من 6 بت تُحول إلى قيمة عشرية تتراوح بين 0 و63.
- تُستخدم هذه القيمة كفهرس للوصول إلى جدول Base64 الذي يحتوي على 64 رمزًا مختلفًا (A-Z, a-z, 0-9, +, /)، موضح أدناه.
1724527852340.webp

4. إضافة الحشوات إذا لزم الأمر:
- إذا لم تكن البيانات الأصلية مضاعفًا لـ3 بايت، يتم إضافة أصفار في النهاية لتكوين مجموعة كاملة من 24 بت.
- يتم استخدام رمز "=" كحشوة للإشارة إلى أن الترميز الأصلي كان أقل من 3 بايت وهو ما لاحظاه بالنص الأصلي وجود علامات استفهام بنهايته.

لنأخذ مثال عملي بسيط على ذلك :

لنفترض أن لدينا النص "Man" ونريد ترميزه باستخدام Base64:

1. تحويل النص إلى ثنائي:
- M: 01001101
- a: 01100001
- n: 01101110

2. دمج البايتات الثلاثة في سلسلة واحدة:
كود:
    01001101 01100001 01101110


3. تقسيم السلسلة المدمجة إلى مجموعات من 6 بت:
كود:
    (010011) (010110) (000101) (101110)

4. تحويل كل مجموعة من 6 بت إلى قيمة عشرية:
46 , 5 , 22, 19

5. استخدام القيم العشرية كفهرس للوصول إلى جدول Base64:
T, W, F, u

النص المشفر هو "TWFu".


مثال باستخدام الحشوات:

إذا كان لدينا نص بطول غير مضاعف لـ3، مثل "Ma" الذي يتكون فقط من حرفين:

1. تحويل النص إلى ثنائي:
- M: 01001101
- a: 01100001

2. دمج البايتين في سلسلة واحدة وإضافة أصفار للحشو لتكوين مجموعة كاملة من الـ24 بت:
كود:
    (01001101)(01100001)(00000000)

3. تقسيم السلسلة المدمجة إلى مجموعات من الـ6 بتات وتحويلها لقيم عشرية ثم رموز Base64 كما سبق.

4. إضافة "=" كحشوة لتعويض النقص في الطول الأصلي.

الى هنا بفضل الله ينتهي شرح هذه المرحلة، انتظروني بالمرحلة القادمة، دمتم بخير.
 

المرفقات

  • 1724527098582.webp
    1724527098582.webp
    10.2 KB · المشاهدات: 128
بارك الله فيك وجزاك الله كل خير
 
  • Love
التفاعلات: BAYAN
بسم الله الرحمن الرحيم

وصف التّحدي :
كلمة المرور للمرحلة التالية مخزنة في الملف data.txt، تم ترميزه باستخدام Base64


حلّ التّحدّي :
نبدأ الحل باسم الله، كما اعتدنا علينا تسجيل الدخول إلى السيرفر الخاص بالتحديات، باسم المستخدم bandit10
Bash:
ssh [email protected] -p 2220
بعد تسجبل الدخول دعنا نجرب قراءة محتوى الملف data.txt
Bash:
cat data.txt
مشاهدة المرفق 12811
وكما تلاحظ ظهرت لدنيا كلمات مقروءة ولكن دون معنى ومنتهية بـ == ، ويفترض أن هذه الكلمات تم ترميزها بطريقة ما كما هو مذكور بوصف التحدّي، وأن نوع الترميز المُستخدم هو Base64
وكل ما علينا فعله الآن هو فك هذا التشفير أو بمعنى أدق فك هذا الترميز لاستراجع النص الأصلي، والذي سيكون عبارة عن كلمة مرورو المرحلة التاليه.

يمكن عمل ذلك بطريقتان:
طريقة الحل الأولى: باستخدام سطر الأوامر عن طريق الأمر cat data.txt | base64 -d
Bash:
cat data.txt | base64 -d
مشاهدة المرفق 12915
حيث أن d- ترمز ل decode وهو يعني فك الترميز وكما تعرفنا سابقا على الـ pipline حيث أنه يعمل كأنبوب يأخد مخرجات الأمر الأول وهو cat ، كمدخلات للأمر الثاني وهو base64، ف هنا سيتم قراءة محتوى الملف باستخدام الأمر cat حيث انه يعرض محتوياته على شكل مخرجيات على سطر الاوامر وهذه المحتويات سيتم اخدها كمدخلات للـ base64 ليتم فك ترميزها كما هو موضَّح بالصورة أعلاه.

طريقة الحل الثانية: باستخدام أدوات لفك التشفير والترميز أونلاين مثل الموقع التالي:
https://www.base64decode.org/

مشاهدة المرفق 12918
حيث نأخد محتوى الملف ونلصقه وتقوم الأداة بفك ترميزه بكل سهولة، ويمكنك البحث عن هذه الأدوات باستخدام محرك البحث Google عن طريقة مثلا كتابة ما يلي " online decoder "
وسيعرض لك صديقنا Google وفرة من المواقع.


التوضيح:
كنت قد شرحت مفهوم ترميز المعلومات أو الـ Encoding بالمقال التالي، حيث يمكنك الاطلاع عليه لمعرفة مفهومه بشكل عام

توضيح الـ Encoding


- ما هو الـ encoding :
هي عملية تحويل البيانات نفسها من شكل لآخر فقط ، والاشكال الأخرى يمكن اعتبارها ك لُغات أخرى، مثلًا الكلام الذي نكتبه على الكيبورد نفسه يتم تحويله لـ لغة يستطيع فهمها الحاسوب وتُسمى بالباينري وتحتمل قيمتين هم 0 1 ، فهكذا هو ما زال نفس الكلام بنفس المعنى لكن فقط تمت ترجمته او تحويله لـ لغة اخر بفهمها الحاسوب حتى يستطيع التعامل معها ويعالجها ويخزنها الـخ …

- بعض أنواع الـ encoding
( ASCII , Base64 , HTML , HEX , URL )

- مصطلحات بعالم الـ Encoding :
بداية علينا معرفة أن عملية تحويل الداتا من شكل لـ آخر نسمّيها بعمليَّة الـ encoding، وأن عملية ترجيعها للأصل والتي هي بعكس الـ encoding نسمّيها decoding، وهي عملية يمكن عكسها بسهولة ولذلك نقول عنها انها reversible أي يُمكن ان يتم عكسها واسترجاع النّص الأصليّ).

والآن دعونا نأخذ صورة عامّة عن ترميز Base64 :
هو طريقة لترميز البيانات الثنائية (مثل الصور أو الملفات) إلى نصوص قابلة للقراءة بواسطة البشر human - readable، وذلك باستخدام مجموعة محددة من 64 رمزًا. حيث يُستخدم هذا الترميز بشكل شائع في نقل البيانات عبر بروتوكولات الإنترنت التي تتعامل مع النصوص، مثل البريد الإلكتروني وHTTP.

خطوات ترميز Base64:

1. تقسيم البيانات:
- يتم تقسيم البيانات الثنائية إلى مجموعات من 24 بت (3 بايت).

2. تقسيم البتات:
- تُقسم كل مجموعة من 24 بت إلى أربع مجموعات من 6 بت.

3. تحويل البتات إلى رموز:
- كل مجموعة من 6 بت تُحول إلى قيمة عشرية تتراوح بين 0 و63.
- تُستخدم هذه القيمة كفهرس للوصول إلى جدول Base64 الذي يحتوي على 64 رمزًا مختلفًا (A-Z, a-z, 0-9, +, /)، موضح أدناه.
مشاهدة المرفق 12919
4. إضافة الحشوات إذا لزم الأمر:
- إذا لم تكن البيانات الأصلية مضاعفًا لـ3 بايت، يتم إضافة أصفار في النهاية لتكوين مجموعة كاملة من 24 بت.
- يتم استخدام رمز "=" كحشوة للإشارة إلى أن الترميز الأصلي كان أقل من 3 بايت وهو ما لاحظاه بالنص الأصلي وجود علامات استفهام بنهايته.


لنأخذ مثال عملي بسيط على ذلك :

لنفترض أن لدينا النص "Man" ونريد ترميزه باستخدام Base64:

1. تحويل النص إلى ثنائي:
- M: 01001101
- a: 01100001
- n: 01101110

2. دمج البايتات الثلاثة في سلسلة واحدة:
كود:
    01001101 01100001 01101110


3. تقسيم السلسلة المدمجة إلى مجموعات من 6 بت:
كود:
    (010011) (010110) (000101) (101110)

4. تحويل كل مجموعة من 6 بت إلى قيمة عشرية:
46 , 5 , 22, 19

5. استخدام القيم العشرية كفهرس للوصول إلى جدول Base64:
T, W, F, u

النص المشفر هو "TWFu".



مثال باستخدام الحشوات:

إذا كان لدينا نص بطول غير مضاعف لـ3، مثل "Ma" الذي يتكون فقط من حرفين:

1. تحويل النص إلى ثنائي:
- M: 01001101
- a: 01100001

2. دمج البايتين في سلسلة واحدة وإضافة أصفار للحشو لتكوين مجموعة كاملة من الـ24 بت:
كود:
    (01001101)(01100001)(00000000)

3. تقسيم السلسلة المدمجة إلى مجموعات من الـ6 بتات وتحويلها لقيم عشرية ثم رموز Base64 كما سبق.

4. إضافة "=" كحشوة لتعويض النقص في الطول الأصلي.


الى هنا بفضل الله ينتهي شرح هذه المرحلة، انتظروني بالمرحلة القادمة، دمتم بخير.
يعطيكِ العافية يارب
 
  • Love
التفاعلات: BAYAN
بسم الله الرحمن الرحيم

وصف التّحدي :
كلمة المرور للمرحلة التالية مخزنة في الملف data.txt، تم ترميزه باستخدام Base64


حلّ التّحدّي :
نبدأ الحل باسم الله، كما اعتدنا علينا تسجيل الدخول إلى السيرفر الخاص بالتحديات، باسم المستخدم bandit10
Bash:
ssh [email protected] -p 2220
بعد تسجبل الدخول دعنا نجرب قراءة محتوى الملف data.txt
Bash:
cat data.txt
مشاهدة المرفق 12811
وكما تلاحظ ظهرت لدنيا كلمات مقروءة ولكن دون معنى ومنتهية بـ == ، ويفترض أن هذه الكلمات تم ترميزها بطريقة ما كما هو مذكور بوصف التحدّي، وأن نوع الترميز المُستخدم هو Base64
وكل ما علينا فعله الآن هو فك هذا التشفير أو بمعنى أدق فك هذا الترميز لاستراجع النص الأصلي، والذي سيكون عبارة عن كلمة مرورو المرحلة التاليه.

يمكن عمل ذلك بطريقتان:
طريقة الحل الأولى: باستخدام سطر الأوامر عن طريق الأمر cat data.txt | base64 -d
Bash:
cat data.txt | base64 -d
مشاهدة المرفق 12915
حيث أن d- ترمز ل decode وهو يعني فك الترميز وكما تعرفنا سابقا على الـ pipline حيث أنه يعمل كأنبوب يأخد مخرجات الأمر الأول وهو cat ، كمدخلات للأمر الثاني وهو base64، ف هنا سيتم قراءة محتوى الملف باستخدام الأمر cat حيث انه يعرض محتوياته على شكل مخرجيات على سطر الاوامر وهذه المحتويات سيتم اخدها كمدخلات للـ base64 ليتم فك ترميزها كما هو موضَّح بالصورة أعلاه.

طريقة الحل الثانية: باستخدام أدوات لفك التشفير والترميز أونلاين مثل الموقع التالي:
https://www.base64decode.org/

مشاهدة المرفق 12918
حيث نأخد محتوى الملف ونلصقه وتقوم الأداة بفك ترميزه بكل سهولة، ويمكنك البحث عن هذه الأدوات باستخدام محرك البحث Google عن طريقة مثلا كتابة ما يلي " online decoder "
وسيعرض لك صديقنا Google وفرة من المواقع.


التوضيح:
كنت قد شرحت مفهوم ترميز المعلومات أو الـ Encoding بالمقال التالي، حيث يمكنك الاطلاع عليه لمعرفة مفهومه بشكل عام

توضيح الـ Encoding


- ما هو الـ encoding :
هي عملية تحويل البيانات نفسها من شكل لآخر فقط ، والاشكال الأخرى يمكن اعتبارها ك لُغات أخرى، مثلًا الكلام الذي نكتبه على الكيبورد نفسه يتم تحويله لـ لغة يستطيع فهمها الحاسوب وتُسمى بالباينري وتحتمل قيمتين هم 0 1 ، فهكذا هو ما زال نفس الكلام بنفس المعنى لكن فقط تمت ترجمته او تحويله لـ لغة اخر بفهمها الحاسوب حتى يستطيع التعامل معها ويعالجها ويخزنها الـخ …

- بعض أنواع الـ encoding
( ASCII , Base64 , HTML , HEX , URL )

- مصطلحات بعالم الـ Encoding :
بداية علينا معرفة أن عملية تحويل الداتا من شكل لـ آخر نسمّيها بعمليَّة الـ encoding، وأن عملية ترجيعها للأصل والتي هي بعكس الـ encoding نسمّيها decoding، وهي عملية يمكن عكسها بسهولة ولذلك نقول عنها انها reversible أي يُمكن ان يتم عكسها واسترجاع النّص الأصليّ).

والآن دعونا نأخذ صورة عامّة عن ترميز Base64 :
هو طريقة لترميز البيانات الثنائية (مثل الصور أو الملفات) إلى نصوص قابلة للقراءة بواسطة البشر human - readable، وذلك باستخدام مجموعة محددة من 64 رمزًا. حيث يُستخدم هذا الترميز بشكل شائع في نقل البيانات عبر بروتوكولات الإنترنت التي تتعامل مع النصوص، مثل البريد الإلكتروني وHTTP.

خطوات ترميز Base64:

1. تقسيم البيانات:
- يتم تقسيم البيانات الثنائية إلى مجموعات من 24 بت (3 بايت).

2. تقسيم البتات:
- تُقسم كل مجموعة من 24 بت إلى أربع مجموعات من 6 بت.

3. تحويل البتات إلى رموز:
- كل مجموعة من 6 بت تُحول إلى قيمة عشرية تتراوح بين 0 و63.
- تُستخدم هذه القيمة كفهرس للوصول إلى جدول Base64 الذي يحتوي على 64 رمزًا مختلفًا (A-Z, a-z, 0-9, +, /)، موضح أدناه.
مشاهدة المرفق 12919
4. إضافة الحشوات إذا لزم الأمر:
- إذا لم تكن البيانات الأصلية مضاعفًا لـ3 بايت، يتم إضافة أصفار في النهاية لتكوين مجموعة كاملة من 24 بت.
- يتم استخدام رمز "=" كحشوة للإشارة إلى أن الترميز الأصلي كان أقل من 3 بايت وهو ما لاحظاه بالنص الأصلي وجود علامات استفهام بنهايته.


لنأخذ مثال عملي بسيط على ذلك :

لنفترض أن لدينا النص "Man" ونريد ترميزه باستخدام Base64:

1. تحويل النص إلى ثنائي:
- M: 01001101
- a: 01100001
- n: 01101110

2. دمج البايتات الثلاثة في سلسلة واحدة:
كود:
    01001101 01100001 01101110


3. تقسيم السلسلة المدمجة إلى مجموعات من 6 بت:
كود:
    (010011) (010110) (000101) (101110)

4. تحويل كل مجموعة من 6 بت إلى قيمة عشرية:
46 , 5 , 22, 19

5. استخدام القيم العشرية كفهرس للوصول إلى جدول Base64:
T, W, F, u

النص المشفر هو "TWFu".



مثال باستخدام الحشوات:

إذا كان لدينا نص بطول غير مضاعف لـ3، مثل "Ma" الذي يتكون فقط من حرفين:

1. تحويل النص إلى ثنائي:
- M: 01001101
- a: 01100001

2. دمج البايتين في سلسلة واحدة وإضافة أصفار للحشو لتكوين مجموعة كاملة من الـ24 بت:
كود:
    (01001101)(01100001)(00000000)

3. تقسيم السلسلة المدمجة إلى مجموعات من الـ6 بتات وتحويلها لقيم عشرية ثم رموز Base64 كما سبق.

4. إضافة "=" كحشوة لتعويض النقص في الطول الأصلي.


الى هنا بفضل الله ينتهي شرح هذه المرحلة، انتظروني بالمرحلة القادمة، دمتم بخير.
ماشاءالله على الشرح وتبسيط المصطلحات
الله يعطيكي العافيه🙏 على الشرح وبإنتظار باقي السلسلة
 
  • Love
التفاعلات: BAYAN

آخر المشاركات

عودة
أعلى