مقاله :: چطور با پایتون یک برنامه Admin Page Finder ساده بنویسیم؟
درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من
    تخفیف های وب سایت
    همه تخفیف ها

    عضویت در

    کانال تلگرام

    توسینسو

    اطلاعات مطلب
      مدرس/نویسنده
      سید محمد باقر موسوی
      امتیاز: 10305
      رتبه:60
      0
      46
      0
      20
      کارشناس فناوری اطلاعات - Linux Systems Administrator پروفایل کاربر

      چطور با پایتون یک برنامه Admin Page Finder ساده بنویسیم؟

      تاریخ 23 ماه قبل
      نظرات 0
      بازدیدها 487
      سلام، وقتتون بخیر. امروز میخوایم یه برنامه ساده ولی کاربردی توی پایتون رو با هم یاد بگیریم. میدونیم که معمولا سایت ها یک صفحه برای ورود مدیر دارن. حالا هر سایتی بسته به عوامل مختلف، اسم های متفاوتی برای این صفحه داره. مثلا ممکنه باشه admin.php یا مثلا اگه سایت با وردپرس نوشته شده باشه بصورت پیش فرض فک کنم wp-admin باشه. حالا ما میخوایم یه برنامه بنویسیم که اسم یک سایت رو بگیره و آدرس صفحه ورود مدیر رو برگردونه.

      الگوریتم حل مساله
      اولین چیزی که بهش نیاز داریم یک جور دیکشنری است. معمولا برای پیدا کردن رمز های عبور و مواردی مثل این از یک دیکشنری شامل لیست زیادی از حالات ممکن استفاده میشه. مثلا برای همون پیدا کردن رمز عبور، یک دیکشنری میتونه شامل هزاران رمز عبور معمول که اکثر مردم استفاده میکنن باشه، مثلا 123 ، 321 ، qazwsx و چیزایی مثل این.
      حالا اینجا ما هم یک دیکشنری نیاز داریم که تعداد زیادی حالات ممکن برای اسم یک صفحه ورود ادمین به سایت رو داشته باشه. مثلا admin.php ،login.php ،admin.html و خیلی چیزای دیگه. توی این مساله ما میایم اسم یک سایت رو از کاربر میگیریم و توی یک متغیر ذخیره میکنیم. اون فایل دیکشنری رو با یک حلقه، خط به خط میخونیم، هر حالت ممکن توی فایل دیکشنری تو یه خط جدا نوشته شده. توی هر بار اجرا شدن حلقه، خطی رو که از دیکشنری خوندیم رو کنار متغیری که اسم سایت رو نگه میداره میچسبونیم، یعنی یک url میسازیم. مثلا متغیر محتواش tosinso.com هستش. تو یک بار اجرای حلقه آدرس مثلا tosinso.com//admin.php ساخته میشه. توی اجرای بعدی حلقه آدرس مثلا tosinso.com//login-admin.asp ساخته میشه و به همین ترتیب تا آخر حلقه که خوندن فایل تموم میشه. توی هر بار اجرای حلقه پس از درست شدن این آدرس های ممکن برای صفحه مدیر، درخواستی برای باز شدن اون صفحه ارسال میشه. این کار رو با استفاده از کتابخونه request در پایتون انجام میدیم. ممکنه اون آدرس درخواستی وجود داشته باشه یا نداشته باشه. اینو با استفاده از header های بسته های http میفهمیم. حتما خطای 404 رو دیدید. این عدد اگه توی header بازگشتی از سمت سرور باشه یعنی صفحه درخواستی وجود نداره. از این اعداد زیاد هستن و فک میکنم همه اونایی که با 400 شروع بشن به منزله خطا هستن. 200 به معنی وجود صفحه مورد نظر هستش، یعنی اگه توی header بسته بازگشتی از سمت سرور عدد 200 باشه یعنی صفحه مورد نظر وجود داره. این بررسی header رو با یک if انجام میدیم. اگه 200 بود، آدرس رو چاپ کن در غیر اینصورت کاری نمیکنه و میره حلقه رو ادامه میده. منطق برنامه بسیار سادس.
      #!/usr/bin/python
      import requests
      from urllib2 import Request
      var = raw_input("Enter the address of target then press [ENTER]: ")
      
      dic_file = open("dictionary.txt","r")
      for aline in dic_file.readlines():
      	tmp = aline.split()
      	url = var+tmp[0]
      	req = requests.head(url)
      	if req.status_code == 200 :
      		print (url)
      dic_file.close()
      exit()
      
      دستور raw-input که یک رشته رو توی خروجی چاپ میکنه و منتظر میمونه تا کاربر مقداری رو وارد کنه. سپس مقدار ورودی کاربر رو توی متغیر var میریزه. با دستور open فایل رو باز کردیم. اون r از read میاد یعنی فقط قراره فایل خونده بشه. باز شه فایل رو توی متغیر dic__file میریزه. بعدش با یک for فایل رو خط به خط خوندیم. 2 خط اول حلقه for خطوط فایل رو از هم جدا میکنه و url رو میسازه. tmp شامل خطوط فایل و var هم که شامل اسم سایته. با + اینا رو به هم میچسبونیم. سپس درخواستی رو با این url ارسال میکنیم. اگر header بسته بازگشتی شامل 200 بود یعنی صفحه وجود داره و چاپش میکنیم.

      این برنامه رو یه جور دیگه با کمی تغییرات میشه نوشت، ولی منطقش همینه.
      #!/usr/bin/env python
      from urllib2 import Request, urlopen, URLError, HTTPError
      
      var = raw_input("Enter the address of target then press [ENTER]: ")
      
      dic_file = open("dictionary.txt","r")
      for aline in dic_file.readlines():
      	tmp = aline.split()
      	url = var+tmp[0]
      	req = Request(url)
      	try:
      		response = urlopen(req)
      	except HTTPError as e:
      		continue
      	except URLError as e:
      		continue
      	else:
      		print (url)
      
      برچسب ها
      ردیفعنوان
      1چطور با پایتون یک برنامه ARP Poisoning بنویسیم؟
      2چطور با پایتون یک برنامه Admin Page Finder ساده بنویسیم؟
      3چطور با پایتون یک برنامه DDOS Attack ساده بنویسیم؟
      دورهمجموعه کل دوره
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      هیچ نظری ارسال نشده است

        برای ارسال نظر ابتدا به سایت وارد شوید