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

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

کرک فایل های winrar در پایتون

  • ۱۴۱۶

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

 

توی این پست قراره با هم نحوه ساخت یک کرکر فایل های rar رو ببینیم.

 

اول باید روش هایی که برای این کار موجوده رو برسی کنیم تا ببینیم چجوری میشه این فایل ها رو کرک کرد.

 

خب برای این به طور کلی دو راه وجود داره:

1- پیدا کردن باگ امنیتی توی همون ورژن نرم افزار وینرار (از این روش خیلی کم استفاده میشه)

 

2- دومین راه و همون راهی که ما ازش استفاده خواهیم کرد روش بروت فورس هست.

حالا حمله Brute Force چیه؟

brute force حمله ای هست که ما میایم پسورد های زیادی رو تست میکنیم ببینیم کدومش درسته. خب اگه بخوایم همه این پسورد ها رو دستی تست کنیم قطعا به زمان خیلی زیادی نیاز خواهیم داشت. ما میتونیم با نوشتن یکسری اسکریپت ها یا با استفاده از بعضی ابزار ها این کار رو بسپریم دست کامپیوتر که توی یک زمان خیلی کوتاه تری برای ما همین کار رو انجام بده.

 

حمله بروت فورس صرفا برای فایل های وینرار نیست و خیلی جاها میشه ازش استفاده کرد. اما ما امروز قصد داریم این حمله رو روی فایل های وینرار پیاده سازی کنیم.

 

برای دانلود پسورد لیست 10 میلیونی هم میتونین اینجا کلیک کنین.

خب بریم سراغ خود اسکریپت.

 

ما قراره اسکریپتی بسازیم که یک پسورد لیست از ما بگیره و دونه دونه اون پسورد ها رو روی فایل مورد نظرمون تست کنه.

 

برای نوشتن این اسکریپت ما به ماژول rarfile توی پایتون نیاز داریم که بتونیم با فایل های winrar کار کنیم. 

همچنین حتما باید نرم افزار winrar روی سیستم ما نصب باشه.

 

خب بریم سراغ نصب ماژول.

 

برای نصب توی ویندوز برین توی cmd و دستور زیر رو وارد کنید:

pip install rarfile

برای نصب توی لینوکس هم برین توی ترمینال و دستور زیر رو وارد کنید:

sudo pip3 install rarfile

 

فقط یک نکته خیلی مهم بهتون بگم.

توی سیستم های ویندوزی باید حتما این کار رو انجام بدید:

1- برید توی محل نصب نرم افزار winrar

2- فایل unrar.exe رو پیدا کنید و کپی کنید کنار اسکریپت 

 

ماژول rarfile از این فایل برای کار با فایل های rar استفاده میکنه.

 

سورس:

import rarfile
import sys

rarfile.UNRAR_TOOL = "unrar"

rarfile_address = input("RarFile : ")
passwordlist_address = input("Password List : ")

rar_file = rarfile.RarFile(rarfile_address)

passwordlist = open(passwordlist_address)

password_found = False
print("-----------------")
for password in passwordlist:
    password = password.strip("\n")
    print("Testing : {}".format(password))
    try:
        rar_file.setpassword(password)
        rar_file.testrar()
        print("*"*50)
        print("Password : {}".format(password))
        password_found = True
        break
    except:
        continue

if password_found:
    input()
    sys.exit(0)
else:
    print("*"*50)
    print("Sorry I can't find correct Password in your password list :(")

 

توضیح: خب توی خط اول و دوم ماژول های rarfile رو برای کار با فایل های rar و ماژول sys رو برای خارج شدن از برنامه import کردیم. توی خط بعدی ابزاری که ماژول rarfile باید برای باز کردن فایل rar استفاده کنه رو مشخص کردیم. بعد دو تا ورودی از کاربر گرفتیم که یکیشون مسیر فایل rar و یکیشون مسیر passwordlist رو میگیره.

بعدش آدرس فایل rar رو که از کاربر گرفته بودیم به ماژول rarfile میدیم. توی خط بعدی هم passwordlist رو با استفاده از تابع open بازش کردیم و مقادیرش رو ریختیم داخل متغییر passwordlist. بعد یک حلقه for نوشتیم که داخلش توی یک try با استفاده از تابع setpassword مقدار password (شمارنده حلقه) رو به ماژول rarfile دادیم. توی خط بعدی هم با استفاده از تابع testrar سعی کردیم که فایل rar رو با اون پسورد باز کنیم.

اگر فایل باز شد متغییر password_found رو برابر با True قرار میدیم، بعد از از try و except خارج میشیم. بیرون از حلقه for گفتیم که اگر password_found برابر True بود یعنی پسوردمون رو پیدا کردیم کد 0 رو برگردون و از برنامه خارج شو و اگر هم نشد 50 بار * رو چاپ میکنه و به کاربر میگه که پسورد فایل توی passwordlist نبوده.(توی زبان های برنامه نویسی برگردوندن کد 0 به معنی موفقیت در اجرا برنامه و کد 1 یا کد های دیگه به معنی شکست در اجرای برنامه هست)

 

امیدوارم براتون مفید بوده باشه D:

 


  • سلام
    با اجرای برنامه با اینکه پسورد تو لیست هست بازم پیدا نمیکنه و میاد بیرون
    وقتی try رو حذف میکنم اروری که میده اینه

    Cannot parse encrypted headers - no crypto
    File "C:\Users\talae\Desktop\CrackPassword\1.py", line 19, in
    rar_file.setpassword(password)
    پاسخ:
    سلام دوست عزیز
    برای رفع مشکلتون موارد زیر رو چک کنین:
    1- اگر از ویندوز استفاده می کنین ببینین که آیا winrar نصب هست یا نه.
    2- اگر از ویندوز استفاده می کنین وارد پوشه ای که نرم افزار winrar نصب شده برین و فایل UnRAR.exe رو کپی کنین کنار اسکریپت
    موفق باشید
  • چرا اولین پیامی که رسید مینویسه پس ورد مساوی اون؟
    پاسخ:
    سلام دوست عزیز
    برای اینکه احتمالا شما اسم فایل پسورد لیستتون رو اشتباه وارد کردین و یا آدرس کامل فایل رو وارد نکردین.
    موفق باشید
  • ببخشید باید پسورد لیست درست کنیم؟ یا خودش از ی کتابخونه استفاه مکینه و چجوری میشه درستش کرد؟ چون هرچی میزنم ارور میده
    پاسخ:
    سلام دوست عزیز
    پسورد لیست ها رو شما خودتون میتونین با استفاده از ابزار هایی مثل crunch(لینوکس) یا با خود پایتون بسازین یا اینکه پسورد لیست های کامل تری رو از github یا سایر سایت ها دانلود کنین. ضمنا برای راحتی کار لینک یک پسورد لیست 10 میلیونی هم توی پست اضافه کردم.
    موفق باشید
  • با سلام و سپاس
    عاااااااالی
    امیدوارم همینطور پرقدرت ادامه بدین
    پاسخ:
    سلام دوست عزیز
    خیلی ممنون از لطف شما
    موفق باشید
  • سلام
    من آموزش پایتون تازه شروع کردم و جدیدا با وبلاگ شما آشنا شدم
    مطالبتون فوق العاده هستن و طوری که توضیح میدین و عکس میزارین و کد برنامه ها کامل و دقیق هستش واقعا عالیییی
    خیلی تونستم از شما چیزی یاد بگیرم
    این برنامه رو هم اجرا کردم و کار کرد
    خیلی خیلی از شما ممنونم🔥🔥🔥
    پاسخ:
    دوست عزیز خیلی از لطف و توجه شما ممنونم
    خوشحالم از اینکه براتون مفید بوده
    موفق باشید
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی