TO DONATE : BTC => 1BU6R1C4AQ77LjLZswQNKFwAupw61i88Kn || PM => U4089661


اهم قوانين :1- منع الردود الباهتة مثل شكرااااا و أخواتها 2- لا يسمح بالمشاحنات الطائفية باآ شكل من الأشكال 3- عدم استعمال الألفاظ التافهة و الكلام البذىء 4- عدم وضع معرفات التواصل الأجتماعى بالردود 5- الأطلاع على كامل القوانين واجب 


العودة   الحماية للأبد -Security 4 Ever > قسم الدورات التعليميه > دورات الاعضاء > دورة البيرل Perl

دورة البيرل Perl خاص بدورة البيرل 2014

موضوع مغلق
 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 28-06-2014, 10:27 PM
الصورة الرمزية b0y
b0y
مراقب
 
حـالة التــواجـد : b0y غير متواجد حالياً
تاريخ التسجيل: Jan 2013
الجــــنــــــس: ذكـر
المشاركات: 747
شكراً:3,113
تم شكره 2,558 مرة في 509 مشاركة
معدل تقييم المستوى: 7
b0y على طريق التميز
افتراضي الدرس السادس: مدخل للتعابير القياسية



السلام عليكم و رحمة الله و بركاته


التعابير القياسية (regular expression أو إختصارا regex) هي مادة ليست حكر على البيرل وحده, فالعديد من اللغات و الأدوات (كالsed,awk) تستعمله.


في البيرل الطريقة البدائية لتطبيق الregex هي عبر =~ أو !~. فالأولى هي للتطابق, كأننا نفحص وجود شيء أما الثانية فالعكس.

يوجد لدينا 3 operator رئيسية في التعابيرل القياسية في البيرل:
  • Match Regular Expression - m//
  • Substitute Regular Expression - s///
  • Transliterate Regular Expression - tr///
طبعا ال / في هذه الoperator بالإمكان تغييره لأي delimiter آخر, ال# كمثال.

نبدأ مع ال Match Operator

هذا الoperator إسم على مسمى, فهو يستعمل لعملية الMatching لكلمة أو حرف أو جملة. مثلا نحن لدينا جملة:

“sec4ever to learn”

نحن نريد أن نفحص وجود الكلمة "sec" بالكود التالي:
كود:
$test = "sec4ever to learn";
if ($test =~ /sec/){
print "Match";
}else{
print "No Match";
}
عند تشغيله: سيطبع “Match”. فكما رأينا عند وجود الكلمة الناتج يأتي true و لذلك طبع Match.

كما ذكرنا سابقا فيمكننا تغيير الdelimiter فالمثال السابق بالإمكان كتابته ك:

1-
كود:
$test = "sec4ever to learn";
if ($test =~ m[sec]){
print "Match";
}else{
print "No Match";
}

2-
كود:
$test = "sec4ever to learn";
if ($test =~ m#sec#){
print "Match";
}else{
print "No Match"; }


3-
كود:
$test = "sec4ever to learn";
if ($test =~ m<sec>){
print "Match";
}else{
print "No Match";
}
جميع النتائج هي نفسها: “Match”. كما رأينا علينا إسمال الوثم m مع أي delimiter إلا ال// فهو معرف بm وحده أي إن // هي نفس m//.

طبعا لدينا modifiers غير الm:




بالنسبة للregex فلدينا العديد من الsyntax لكن قبل شرحهم, لدينا بعض الspecial variable خاص بالregex ف

$& هي للتطابق نفسه.

$` كل ما قبل التطابق.

$' كل ما بعد التطابق.

مثال:




الآن نرجع لصيغ التعابير القياسية:





ال Substitution Operator:

هذا الoperator معرف ب:s/// طبعا ال/ بالإمكان تغييره لأي delimiter

و ظيفته من إسمه هي الإستبدال

مثلا لدينا الجملة:

“I’m learning perl”

و أريد تغيير perl لphp بأستعمل الكود التالي:




ال Modifiers الخاصة بهذا المود هي نفسها للمود السابق.

ال Translation Operator

هي نفس ال Substitution operatorتقريبا, لكن الtranslation لا تستعمل التعابير القياسية.

الsyntax هي: tr/// و أيضا يمكننا تغيير الdelimiter.

مثال:

لدي الجملة:

“perl on sec4ever”

و أريد تغيير كل الأحرفe لo فالكود:




بدون الحرف الواحد يمكننا إستخدام range مثلا لتحويل جميع الأحرف من أحرف صغيرة لكبيرة يمكننا إستعمال:

tr/[a-z]/[A-Z]/ و هي نفس الuc function.

أو الlc function هي: tr/[A-Z]/[a-z]/

الآن نرجع للmatching operator

في عملية الmatching فالنتيجة تحفظ بشكل default بالمتغييرات $1 $2 ….

لكن يمكننا حفظها في متغييرات مثال:



الشرح هو مدخل لل
regex فالregex أكبر بكثير و معقد أكثر من الصيغ السابقة. لكن أتمنى أن يكون الشرح مفهوم لمن أراد التعمق أكثر فيوجد العديد من المراجع المفيدة.

التطبيق هو:

لدينا ملف /usr/local/cpanel/logs/error_log في السيبنل و هو يحتوي على باسووردات دخول خاطئة أو صحيحة في بعض الأحيان. صيغة السطر المطوب:

'user', 'blabla', 'pass', 'blablapass',

المطلوب هو إستخراج blablapass و وضعهم في الملف pass.txt.

تطبيقي على الملف المرفق:




بتطبيقي فتح الملف و قارنته سطر سطر على الregex و في حال التطابق يطبع الباس في ملفpass.txt.

هذا الأول أما الثاني فهو نفس الأول لكن يجب طبعات الpass مع uppercase و lowercase و الباس.

تطبيقي:




بالمناسبة يمكن إسعمال (.*?) لتطابق أي شيء إلا ال/s.


بالتوفيق و في أمان الله
 
الملفات المرفقة
نوع الملف: zip الدرس السادس.zip‏ (178.0 كيلوبايت, المشاهدات 6)
نوع الملف: zip error_log.zip‏ (19.0 كيلوبايت, المشاهدات 11)

 

 



اقتباس:
المشاركة الأصلية كتبت بواسطة ApOcalYpse مشاهدة المشاركة

فقط توقف عن طلب النتيجة و تخيلها و السعي خلفها و قم بما عليك القيام به
...
الناس تحب النتيجة و لكنها تكره الطريق الصعب الذي يوصل اليها
اقتباس:
المشاركة الأصلية كتبت بواسطة Sec4ever مشاهدة المشاركة

فيه حكمة مهمة جدا ينقصنا نحن المسلمون العمل بها حتى تكون لنا مكانة بين الأخرين :

يجب العمل قدر المستطاع و ليس قدر الحاجة .
اقتباس:
المشاركة الأصلية كتبت بواسطة UzunDz مشاهدة المشاركة

ثانيا فيه ادمغة من العرب وموجودين معنا هنا بالمنتدى ويقدمو مواضيع ما تجدها عند الأجانب والتقليل من شان العرب امام الأجانب يسمى جهل و نقص في الشخصية ونوعية هذا الكلام لا تفيدنا الا في الرجوع الى الوراء,, وان كنت شايف نفسك متوقف في كيفية صنع ليتر فهذا لا يعني ان الجميع متوقف هناك بمعنى آخر لا تتكلم بصيغة الجمع عن العرب لأنك تمثل نفسك فقط
اقتباس:
المشاركة الأصلية كتبت بواسطة chevr0sky مشاهدة المشاركة

أنصحك بالتشمير عن سواعدك و الكد و التعب و كذلك سهر الليالي فلا توجد خلطة أو وصفة توصلك إلى مبتغاك.

10 أعضاء قالوا شكراً لـ b0y على المشاركة المفيدة:
موضوع مغلق


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
[استفسار] الدرس السادس: مدخل للتعابير القياسية b0y دورة البيرل Perl 5 17-12-2014 10:44 PM
دورة php ~ الدرس السادس Switch Offensive دورة لغة ال php مقدمة من Offensive 18 24-11-2013 10:03 AM
استفسارات الدرس السادس Dr.abolalh دورة تعليم اختراق الاجهزة 0 27-02-2012 04:59 PM
استفسارات الدرس السادس FoX HaCkEr دورة الحمايه للابد لاختراق المواقع والسيرفرات 5 10-02-2011 04:42 AM
[الدرس السادس] دورة تعلم html FoX HaCkEr دورة ال HTML مقدمة من FoX HaCkEr 2 03-09-2010 03:31 AM


الساعة الآن 03:45 PM