





السمعة:
- إنضم10 مايو 2023
- المشاركات 372
- الحلول 5
- مستوى التفاعل 605
- النقاط 93
- العمر 26
بسم الله الرحمن الرحيم
وصف التّحدي :
وصف التّحدي :
كملة المرور للمرحلة التالية مخزنة داخل ملف data.txt، وهو السطر الوحيد من الملف الموجود مرة واحدة فقط. |
حل التّحدي :
في هذه المرحلة ، كما هو مذكور بوصف التحدّي فإنه لدينا ملف يحتوي على بيانات نصية. والهدف هُنا هو استخراج الأسطر الفريدة فقط من هذا الملف.... حسنًا لنبدأ الحل فالأمر يبدو بسيطًا، حيث سنتعلم استخدام مجموعة من الأوامر الجديدة في نظام التشغيل لينكس للوصول لكلمة السر تلك!
سأقوم بشرح الحل بالتفصيل، لنتمكن سويًّا من مراجعة بعض الأوامر السابقة التي تعلمناها.
بداية لابد من الاتصال بالسيرفر الخاص بهذه التحديات كما تعلمنا بالمراحل السابقة :
كود:
ssh [email protected] -p 2220
الآن وقد أصبحنا داخل السيرفر بإسم المستخدم bandit8، نحتاج إلى عرض محتويات الملف data.txt، وكما تعلمنا سابقًا نقوم بذلك باستخدام الأمر cat :
كود:
cat data.txt
تذكير:
- cat: هذا الأمر يعرض محتوى الملفات النصية على شكل مُخرجات على سطر الأوامر ( terminal ).
بعد عرض المحتويات، نحتاج إلى ترتيب محتويات الملف باستخدام الأمر الجديد الذي سنتعمله اليوم وهو الأمر sort.
الأمر الخاص يترتيب محتويات ملف data.txt :
كود:
sort data.txt
- sort: يقوم هذا الأمر بترتيب الأسطر في الملف حسب الترتيب الرقمي أو الأبجدي. هذه الخطوة ضرورية لأن الأمر uniq الذي سنستخدمه تاليًأ يعمل فقط على البيانات المرتبة، وسيتم شرح ذلك بالتفصيل فقط تابعوا معي خطوة بخطوة.
والآن، بعد ترتيب الأسطر داخل الملف; نتقل للأمر التالي وهو أمر جديد سنتعمله اليوم، الأمر uniq حيث نستخدم الأمر uniq مع الخيار -u لاستخراج الأسطر الفريدة فقط والغير متكررة إطلاقًا، كما هو مذكور بوصف التحدي.
الأمر الخاص باستخراج الأسطر الفريدة والغير مكررة من محتويات ملف data.txt :
كود:
uniq -u
uniq: يقوم بإزالة الأسطر المكررة من الملف.
u- : يعرض فقط الأسطر الفريدة الموجودة مرة واحدة دون أي تكرار.
وسنوضح الفرق بالمثال التالي:
لنفترض أن لدينا ملف نصي يحتوي على الأسطر التالية:
kali parrot ubntu ubuntu kali RedHat |
فعندما نختار الأمر uniq فقط دون خيار u فإنه كما ذكرنا سيقوم بإزالة الأسطر المكررة، حيث سيحتفظ بنسخة واحدة فقط من كل سطر، حتى لو كان السطر مكررًا عدة مرات. الناتج سيكون كما يلي:
kali parrot ubuntu RedHat |
أما عند استخدام الأمر uniq مع u- سنقوم باستخراج الأسطر الفريدة فقط، والغير مكررة اطلاقًا، كما شرحت سابقًا وسنقوم بإزالة أي سطر يظهر أكثر من مرة. والناتج سيكون كما يلي:
parrot RedHat |
الآن، علينا أن نقوم بتطبيق الأمر sort مع الأمر uniq :
التوضيح:
تعلمنا أنه لتنفيذ الأمر uniq فلابد أن يتم تطبيقه على ملف مرتبة محتوياته باستخدام الأمر sort، حتى يستطيع حذف أي تكرار بأي أسطر.
فمثلًا:
تخيل أنك تعمل في مكتب وتحتاج إلى قائمة مُرتبة وواضحة بأسماء المُوظفين لتقوم بتوزيع مكافئات على المتميزين منهم. إذا كانت الأسماء غير مرتبة حسب الترتيب الأبجدي وكانت عشوائية ، فلن تتمكن من معرفة أي الأسماء مكررة بسهولة لتقوم بإزالتها من القائمة. لذا، عليك أن تقوم بترتيب القائمة أولاً ومن ثم يمكنك بسهولة تتبع أي الأسماء المتالية التي قد حصل بينهم أي تكرار .
ويمكنك ترتيب الملف ووضع محتوياته المرتبة بملف آخر، ومن ثم تنفيذ الأمر uniq على الملف المُرتب، حيث أنه على سبيل المثال sorted.txt --> اسم الملف الجديد بعد ترتيب محتوياته، ويمكنك تنفيذ الأمر كما يلي:
كود:
sort data.txt > sorted.txt[/SIZE][/CENTER][/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER][SIZE=5][CENTER]uniq -u sorted.txt
ولكن الأفضل أن تقوم بدمجهم بسطر واحد باستخدام اشارة الـ piping " | " كمان تعلمنا بالمرحلة السابقة.
رمز الـ “ | “ : ويمكن ان نطلق عليه pip من عملية الـ piping، من اسمه فهو يعمل كأنبوب توصيل بين أي أمرين على التيرمنال ( سطر الأوامر ) حيث يتم استخدام مُخرجات الأمر الذي قبل الـ piping “ | “ ، كمدخلات للأمر الذي بعده، فيربط بين الأمرين حيث يتم استخدام مُخرجات الأمر الأول لتطبيق الأمر الثاني عليها ( كمدخلات له ).
الآن، نقوم نقوم بدمج الأمر sort مع الأمر uniq في سطر واحد كما يلي:
كود:
sort data.txt | uniq -u[/SIZE][/CENTER][/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER][SIZE=5][CENTER]
لنحصل على كلمة المرور للمرحلة التالية:
الحمد لله، الى هُنا ينتهي شرح هذه المرحلة، انتظروني بالمراحل القادمة،

