Loading...

BTC Address to donate : [[address]]

Donation of [[value]] BTC Received. Thank You.
[[error]]

b0y مراقب
  • شكراً: 3113
  • تم شكره 2558 مرة في 509 مشاركة

السلام عليكم

للإستفسار و مناقشة التطبيق

بالتوفيق

حل التطبيقات

نبدأ مع الحل للتطبيق الأول:

كود:
open(LOG,"<".$ARGV[0]) or die $!;
open(OUT,">pass.txt") or die $!;
while(<LOG>)
{
chomp;
print OUT "$2\n" if $_ =~ /\'user\', \'(.*?)\', \'pass\', \'(.*?)\',/;
}
close(LOG,OUT);
في الأسطر:

open(LOG,"<".$ARGV[0]) or die $!;
open(OUT,">pass.txt") or die $!;
قمت بفتح الملف من المتغيير $ARGV[0] أي أول شيء يوضع بعد إسم الأداة عند التشغيل و قم بإستعمال or die $!, فالor ينفذ ما بعدها عندما يحدث خطأ في الopen ممكن لا يستطيع فتح الملف بسبب الصلاحية أو أن الملف غير موجود, و ال$! كما ذكرنا سابقا فهي تحتوي على الخطأ. ثم أنشئنا الملف الذي سيحفظ الباسووردات بإسم pass.txt

while(<LOG>)
{
chomp;
بدأنا بقرائة الملف الموضوع, هنا المتغيير الdefault هو $_ لذلك لا نحتاج لتحديده عند الchomp
ثم بالأسطر:
print OUT "$2\n" if $_ =~ /\'user\', \'(.*?)\', \'pass\', \'(.*?)\',/;
في البداية الregex:
/\'user\', \'(.*?)\', \'pass\', \'(.*?)\',/
هنا عملنا backslash لل, لأنها قد تعتبر special character (سنتكلم عنها في الجزأ الثاني إن شاء الله)
طبعا لدينا في هذا الregex تطابق ل2 الأول هو ما بعد الuser, و الثاني ما بعد الpass, نحن نحتاج الثاني, لذا قمنا بقرانة كل سطر بالملف $ARGV[0] على هذا الregex و في حال تم التطابق (إستعمال if) سيطبع $2 (أي الماتش الثاني) في الملف pass.txt.
ثم
close(LOG,OUT);
أغلقنا الملفات.

التطبيق الثاني:
كود:
open(LOG,"<".$ARGV[0]) or die $!;
open(OUT,">pass.txt") or die $!;
while(<LOG>)
{
chomp;
print gen($1) if $_ =~ /\'user\', \'.*?\', \'pass\', \'(.*?)\',/;
}
close(LOG);

sub gen {
$a[0] = uc($_[0]);
$a[1] = lc($_[0]);
$a[2] = $_[0];
print OUT $_."\n" foreach(@a);
}
نفس الأول لكن هنا إستعملت sub بإسم gen ليطبع الشكل الuc و الlc و الطبيعي للمعطى له, في الملف pass.txt

حلول UzunDZ:

كود:
 #UzunDz

print "\nRegex @ UzunDz:\n\n"; 
if(scalar(@ARGV) == 0){ 
    print "[+] usage:\n\tex: perl $0 file1.txt";
}else{
# reading
    open (file, "<".$ARGV[0]);
    while($line = <file>)
    {
    if($line =~ m/'user', '.*', 'pass', '(.*?)'/) {
        open (file2, ">>pass.txt");
        print "$1\n";
        print file2 "$1\n";
        print uc("$1\n");
        print file2 uc("$1\n");
        print lc("$1\n");
        print file2 lc("$1\n");
    }
    close file2;
    }
    close file;
    print "\n";
}
في البداية طبع Regex @ UzunDz: عبر
print "\nRegex @ UzunDz:\n\n";
ثم وضع تحقق في حال عدم وضع أي ملف في الcommand line, يتم طبع الusage:
if(scalar(@ARGV) == 0){
print "[+] usage:\n\tex: perl $0 file1.txt";
ثم في حال تم وضع أي ملف (عبر ال}else{) ستتم القرائة و الطباعة في حال التطابق على الregex التالي:
m/'user', '.*', 'pass', '(.*?)'/
(كما ذكرنا في الدرس لا داعي لإستعمال الm مع ال//) هنا عمل ماتشينغ لما بعد الpass فقد أي لديه التطابق في المتغيير $1.

بالتوفيق و أتمنى أي شي غير واضح يتم السؤال عنه في هذا الموضوع.

توقيع


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

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

6 أعضاء قالوا شكراً لـ b0y على المشاركة المفيدة:
UzunDz فريق الحماية للأبد
  • شكراً: 4502
  • تم شكره 5547 مرة في 1381 مشاركة



modifiers هي نفسها الـ flags ؟

نقطة اعتقد لم يتم شرحها : الـ escape للـ special chars داحل التعبير القياسي
ايظا شرح الـ set والـ groupe

توقيع
./logout
2 أعضاء قالوا شكراً لـ UzunDz على المشاركة المفيدة:
b0y مراقب
  • شكراً: 3113
  • تم شكره 2558 مرة في 509 مشاركة

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


modifiers هي نفسها الـ flags ؟

نقطة اعتقد لم يتم شرحها : الـ escape للـ special chars داحل التعبير القياسي
ايظا شرح الـ set والـ groupe

تمام حل جميل. التعديلات في الرسالة
بخصوص الmodifiers نعم أنا عبرت عنها بأنها flags.
نعم معك حق بخصوص الescape للspecial chars إن شاء الله إرجع أضيفها. أما بخصوص الset و groupe لم أفهم قصدك.

توقيع


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

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

UzunDz فريق الحماية للأبد
  • شكراً: 4502
  • تم شكره 5547 مرة في 1381 مشاركة

المشاركة الأصلية كتبت بواسطة b0y اقتباس :
تمام حل جميل. التعديلات في الرسالة
بخصوص الmodifiers نعم أنا عبرت عنها بأنها flags.
نعم معك حق بخصوص الescape للspecial chars إن شاء الله إرجع أضيفها. أما بخصوص الset و groupe لم أفهم قصدك.
مثلا لو بدي اعمل match لأحرف من f الى k
اسويه هكذا :
كود PHP:
[f-k
هذا يسمى الـ set

اما الـ groupe فهو ما يوضع بين قوسين

كود PHP:
<cite>(.*?)</cite
الجروب هو هذا :
كود PHP:
(.*?) 
ويرجع في المصفوفة في القيمة 1
واذا ضفت جروب ثاني يرجع في المصفوفة في القيمة 2

فاهمهم شوي بس ما اعرف اشرح

توقيع
./logout
2 أعضاء قالوا شكراً لـ UzunDz على المشاركة المفيدة:
b0y مراقب
  • شكراً: 3113
  • تم شكره 2558 مرة في 509 مشاركة

تم طرح الحل, بالتوفيق

توقيع


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

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

ElSyad عضو مميز
  • شكراً: 434
  • تم شكره 184 مرة في 41 مشاركة

وعليكم السﻻم
الحمد لله رب العالمين تم فهم الدرس مية مية وتم التطبيق ولكن بطلب ادخال ملف
التطبيق
كود PHP:
#!/usr/bin/perl

print "in the name of Allah\n";
print 
"ElSyad\@Sec4ever\n";
print 
"Please enter file to read: ";

$boy = <stdin>;

open (LOG"<".$boy) or die $!;

open (OUT">pass.txt") or die $!;

while (
$sec = <LOG>)
{

if (
$sec =~ /\'user\', \'(.*?)\', \'pass\', \'(.*?)\',/)

{
print OUT "$2\n" ;
}

}


close (LOG,OUT); 
صورة من بعد التطبيق والحمد لله

متابع بإذن الله معاكم
موفقين جميعاً

توقيع
You either die a Hero or you live long enough to see yourself become
the Villain
ask.fm/ElSyad
الصياد /.

الأعضاء الذين قالوا شكراً لـ ElSyad على المشاركة المفيدة: