درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من
    اطلاعات دوره آموزشی
    اطلاعات مطلب
      مدرس/نویسنده
      سید محمد باقر موسوی
      امتیاز: 10305
      رتبه:155
      0
      46
      0
      20
      کارشناس فناوری اطلاعات - Linux Systems Administrator پروفایل کاربر
      دوره های مرتبط
      دوره های توسینسو دوره آموزشی Linux Essentials = دریچه ورود شما به دنیای لینوکس
      دوره آموزشی Linux Essentials = دریچه ورود شما به دنیای لینوکس
      مدرس: محمد نصیری
      این دوره را در 17 قسط خریداری کنید
      با خرید این دوره مبلغ 7,150 تومان هدیه بگیرید
      دوره آموزشی کنترل پنل هاستینگ CWP
      دوره آموزشی کنترل پنل هاستینگ CWP
      مدرس: فربد رستم صولت
      این دوره را در 6 قسط خریداری کنید
      با خرید این دوره مبلغ 6,875 تومان هدیه بگیرید
      دوره آموزشی بین المللی لینوکس LPIC1 کد 102
      دوره آموزشی بین المللی لینوکس LPIC1 کد 102
      مدرس: محمد نصیری
      این دوره را در 16 قسط خریداری کنید
      با خرید این دوره مبلغ 11,715 تومان هدیه بگیرید
      دوره آموزشی فوق تخصصی Shell Scripting در BASH Shell
      دوره آموزشی فوق تخصصی Shell Scripting در BASH Shell
      مدرس: محمد عابدینی
      این دوره را در 19 قسط خریداری کنید
      با خرید این دوره مبلغ 5,500 تومان هدیه بگیرید
      دوره آموزشی مقدماتی BASH Scripting در لینوکس
      دوره آموزشی مقدماتی BASH Scripting در لینوکس
      مدرس: مجتبی اسمائی
      این دوره را در 10 قسط خریداری کنید
      دوره آموزشی راه اندازی سرویس های تحت شبکه در لینوکس CentOS
      دوره آموزشی راه اندازی سرویس های تحت شبکه در لینوکس CentOS
      مدرس: آرش حیدری
      این دوره را در 12 قسط خریداری کنید
      آموزش نصب سیستم عامل اندروید روی کامپیوترهای شخصی با Android PC
      آموزش نصب سیستم عامل اندروید روی کامپیوترهای شخصی با Android PC
      مدرس: محمد عابدینی
      این دوره را در 1 قسط خریداری کنید
      دوره آموزشی جامع CentOS Web Panel یا CWP
      دوره آموزشی جامع CentOS Web Panel یا CWP
      مدرس: کاظم تقندیکی
      این دوره را در 10 قسط خریداری کنید
      با خرید این دوره مبلغ 6,325 تومان هدیه بگیرید
      دوره آموزشی بین المللی لینوکس LPIC2 کد 201
      دوره آموزشی بین المللی لینوکس LPIC2 کد 201
      مدرس: محمد نصیری
      این دوره را در 27 قسط خریداری کنید
      با خرید این دوره مبلغ 10,135 تومان هدیه بگیرید
      گام به گام تخصصی مدیریت و پیکربندی سرورها با Ansible در لینوکس
      گام به گام تخصصی مدیریت و پیکربندی سرورها با Ansible در لینوکس
      مدرس: مجتبی اسمائی
      این دوره را در 10 قسط خریداری کنید
      دوره آموزشی راه اندازی ایمیل سرور iRedMail در OpenBSD
      دوره آموزشی راه اندازی ایمیل سرور iRedMail در OpenBSD
      مدرس: محمد عابدینی
      این دوره را در 2 قسط خریداری کنید
      دوره آموزشی رایگان نصب انواع لینوکس بصورت عادی و Dual Boot
      دوره آموزشی رایگان نصب انواع لینوکس بصورت عادی و Dual Boot
      مدرس: محمد عابدینی
      این دوره را در 4 قسط خریداری کنید
      دوره آموزشی بین المللی لینوکس LPIC1 کد 101
      دوره آموزشی بین المللی لینوکس LPIC1 کد 101
      مدرس: محمد نصیری
      این دوره را در 18 قسط خریداری کنید
      با خرید این دوره مبلغ 10,450 تومان هدیه بگیرید
      دوره اموزشي فوق تخصصي  سيستم عامل لينوكس RHCSA  قسمت اول
      دوره اموزشي فوق تخصصي سيستم عامل لينوكس RHCSA قسمت اول
      مدرس: علیرضا سیفی و هومن برازنده
      این دوره را در 10 قسط خریداری کنید
      دوره آموزشی بین المللی لینوکس LPIC2 کد 202
      دوره آموزشی بین المللی لینوکس LPIC2 کد 202
      مدرس: امیرحسین احمدی
      این دوره را در 29 قسط خریداری کنید

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

      تاریخ 21 ماه قبل
      نظرات 0
      بازدیدها 436
      سلام، وقتتون بخیر. امروز میخوایم یه برنامه ساده ولی کاربردی توی پایتون رو با هم یاد بگیریم. میدونیم که معمولا سایت ها یک صفحه برای ورود مدیر دارن. حالا هر سایتی بسته به عوامل مختلف، اسم های متفاوتی برای این صفحه داره. مثلا ممکنه باشه 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 ساده بنویسیم؟
      دورهمجموعه کل دوره
      مطالب مرتبط

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

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

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

        arrow