نوشتن اسکریپت کرکر هش های sha256 در پایتون :: Mr Python | مستر پایتون

نوشتن اسکریپت کرکر هش های sha256 در پایتون

  • ۳۸۰۷

نوشتن اسکریپت کرکر هش های sha256 در پایتون

درود به همه .

 

امروز یه اسکپریت فوق العاده باحال داریم .

 

یه توضیح بدیم که هش های sha256 چیه . اگه رمز نگاری کار کرده باشین خب میدونین هش ها چی هستن . هش کلا یه روش یا یه فرمول یه الگوریتم یا ... هرچی که اسمشو میزارید هستش برای تبدیل یک متن به یه چیز دیگه . (یه کد دیگه در مبنای ۱۶ معمولا ) . یعنی مثلا ما کلمه ی Hossein رو میدیم به یه دستگاه هش و برامون Hossein رو تبدیل میکنه به 5646132456132ABCDC1 . این مثال بودا . خب همونطور که دیدید یه چیزی رو به چیزی دیگه تبدیل میکنه . البته وقتی متن اولیه تبدیل میشه به متن پیچیده دومی باید بدونین همیشه اندازه ی متن دومی ثابته . یعنی چی ؟ مثلا اگه من Hossein رو هش کنم خب متنی که برام ساخته میشه که حاصل تبدیل حسین به یه چیز دیگس همیشه مثلا سایزش ۱۶ بیته .  بعد اگه مثلا Ali رو هم باهمون الگوریتم هش کنم بازم باید ۱۶ بیت باشه . منظور از اینکه اندازه ثابته اینه . البته اینکه چند بیت باشه بستگی داره با چه الگوریتمی هش کنید . شاید یه الگوریتم هشینگ متنای ۱۲۰ بیتی تولید کنه یا جورای دیگه . ... .

 

خب حالا با هش آشنا شدین اما حالا sha256 چیه .؟ sha256  درواقع یک الگوریتم هش کردن هست برای رمزنگاری . رمز نگاری رو قبلا فک میکنم گفتیم . در این الگوریتم ما یه متن بهش میدیم (متن اولیه) بعد این با الگوریتمی که داره متنمون رو تبدیل میکنه به یه چیز چرتوپرت مثل این ABCABCAB12313244123ADC (متن دوم) . حالا همونطور که گفتیم سایز متن دومی همیشه ثابته . و اینکه این الگوریتم یه جوریه که هر حرف ، کلمه یا متن دقیقا یک هش (همون متن دومی) منحصر به فرد داره . یعنی تقریبا غیر ممکنه دوتا کلمه پیدا کنید که هش اونا مثل هم باشه .

یه نکته باید بدونین اونم اینه که رسیدن از متن اولی یعنی متن عادی به متن دومی که هش شده خب کار راحتیه دیگه الگوریتم خودش انجام میده ولی رسیدن از متن دومی یعنی متن هش به متن اولی غیر ممکنه . مثلا ببینید ما Hossein رو میتونیم با یه الگوریتم مثلا به 454AB4F5533ACD تبدیل کنیم ولی به هیچ وجه نمیتونیم از 454AB4F5533ACD به Hossein برسیم . برا همین اینا امنیتشون بالاس .

خب دیگه تحقیق بیشتر در مورد اینا رو میزارم بر عهده خودتون .

 

اما ما میخوایم یه اسکریپتی بنویسیم که  یک هش الگوریتم sha256 رو کرک کنیم و به متن اصلی برسیم یعنی از دومی به اولی برسیم خودمونی بگم هش رو کرک کنیم .

 

ولی خب گفتیم اینکار غیر ممکنه . پس باید چیکار کنیم . ؟ ما از روشی به نام حمله دیکشنری (Dictionary Attack) برای کرک کردن استفاده میکنیم که این روش بر پایه ی آزمون و خطاس . ما اول باید یک لیستی از کلماتی که ممکن است متن اولیه ی هش باشند را تهیه کنیم و در فایلی بنویسیم . به این فایل میگن دیکشنری . هر تعدادی میتونه باشه از یکی گرفته تا صد ها هزار تا و بیشتر .... خب بعد ما باید یه اسکریپت بنویسیم که آدرس این دیکشنری رو بهش بدیم و هشی که میخوایم کرک کنیم رو هم بهش بدیم . بعد باید بیاد تک تک کلمات توی دیکشنری رو از طریق همان  الگوریتم هش (در اینجا sha256) هش کنه و هر کدومش با همین هشی که میخوایم کرک کنیم برابر شد یعنی متن اولیه ی این هش همین کلمه  بوده .

 

خب امیدوارم ساده توضیح داده باشم :)‌ .

 

 

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

 

import hashlib

def checkHash(hash,word):
    print(word)
    obj = hashlib.sha256()
    obj.update(word.encode())
    h = obj.hexdigest()
    if h == hash:
        return True
    return False


dic = input("Dictionary : ")
hash = input("hash : ")

f = open(dic,"r")
words = f.readlines()

for i in range(len(words)):
    words[i] = words[i].strip("\n")
state = False
correct = ""
for word in words:
    if checkHash(hash,word):
        state = True
        correct = word
        break

if state:
    print ("*" * 30)
    print ("Hash Cracaked !")
    print ("{} : {}".format(hash,correct))
    exit()
    
else:
    print ("*" * 30)
    print ("Sorry ! . I Can't Crack Your Hash :(")
    exit()

 

خب بریم یه توضیح :

 

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

 

بعد یه تابع داریم که چک میکنه هش یه کلمه با هشی که میخوایم کرک کنیم یکی میشه یانه . یعنی اول کلمه رو هش میکنه بعد میبینه هش کلمه با هشی که میخوایم کرک کنیم یکی شد یا نه

 

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

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

 

اگه هم که اصلا هش کرک نشد یعنی کلمه ی اصلی هش داخل دیکشنری نبود که یه متن دیگه چاپ میکنه که هش کرک نشد متاسفانه .

 

بریم سراغ تست کردن . با این برنامه میخوام هش mrpython که معادل :

ad69ee90c4186b9d203cf897d5275f7ff96c0195d647da6a0afa3c572a5a5810

هست رو کرک کنیم.

 

برای اینکار یه دیکشنری باید ایجاد کنیم من یه سری کلمه مینویسم تو یه فایلی به نام dict.txt . به شکل زیر :

 

Ali
Hossein
Mohsen
Mohammad
mrpython
google
aparat
salam
khobi?
chetori?
chekhabar
baba base dige

 

خب همونطور که میبینید کلمه ی اصلی هش یعنی mrpython هم داخل فایل هست .

خب الان دیکشنری آمادس فقط باید برنامه رو اجرا کنیم و اول آدرس دیکشنری و بعد هش که میخوایم کرک کنیمو بهش بدیم . بعد که اینارو دادیم بهش اینتر میزنیم و  چون متن اصلی هش داخل دیکشنری هست هش رو میتونه کرک کنه و کرک میکنه .  در تصویر زیر ببینید :

 

 

 

خب میبینید که اسکریپت به درستی کار کرد

 

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

https://github.com/mrpythonblog/sha256-cracker.git

 

 

یا حق

Telegram Channel : @mrpythonblog

  • سلام

    مطلبتون کاربردی و خوب بود

    فقط از اونجایی که من زیاد با ماژولhashlib آشنا نیستم

    میخواستم بپرسم اون obj.update(word.encode()) چیکار می کنه؟

    پاسخ:
    درود بر شما . ممنونم
    ببینید word در اصل اون متنی هست که میخوایم هش کنیم . در واقع با استفاده از تابع obj.update ما مشخص میکنیم میخوایم متن word رو هش کنیم .
  • سلام

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

    ممنون!!

    پاسخ:
    سلام دوست عزیز .
    ممنون بابت نظرتون . 
    کرک فایل های pdf رو میتونید از لینک زیر ببینید :

    حتما در پست های آینده کرک فایل های آفیس آموزش داده خواهد شد .
    :)
  • مستر گفتی برای اشنایی با این تست نفوذ وایرلس برم از نت اموز بگیرم

    دو تاست :

    تست نفوذ وایرلس خالی

    تست نفوذ وایرلس با پایتون

    کدومو بگیرم؟

    پاسخ:
    ببین اصولا اول باید خود تست نفوذ وایرلس رو یاد بگیری بعد از یادگیری اون بری روی پایتون پیادش کنی .
  • اخ راستی مستر یه سوال

    میخوام یه کرکر وای فای بنویسم

    ولی یه مشکلی هست

    چجوری میشه به یه وای فای تو پایتون وصل شد؟

    پاسخ:
    ببین کرک کردن پسوورد وای فای یکم با بقیه کرکر ها مثلا کرک کردن یه فایل زیپ فرق داره .
    اول باید بدونی چه پروتکلی رو میخوای کرک کنی ‌. WPA , WEP , ... . طرز کرک هر پروتکلی متفاوته
    پروسه به این صورت نیست که با پسوورد های مختلف تلاش کنی وصل بشی به وای فای مورد نظر ببینی کدومش کار میده اینطوری فوق العاده زیاد زمان میبره و شدنی نیست .
    هر کدوم از پروتکل های رمز نگاری وایرلس یه سری نواقصی دارن که باعث میشه بتونیم کرکشون کنیم . مثلا پروتکل WEP  مشکلش اینه که IV هایی که برای رمزنگاریش استفاده میکنه فقط ۲۴ بیت هستند . در نتیجه هکر میاد ترافیک شبکه رو میبره بالا تا IV ها هی تکرار بشن و نهایتا بتونه از طریق اون IV ها با الگوریتم های خاص پسوورد رو بدست بیاره . پروتکل WEP بدونه پسوورد لیست کرک میشه . اگه IV های مورد نیاز بتونی توی شبکه بوجود بیاری زیر ۵ دقیقه کرک میشه .

    ولی پروتکل WPA سرسخت تره . برای کرک پروتکل WPA باید با دست دهی چهار مرحله ای بین اکسس پوینت و کلاینت آشنا باشی. برای اینکه بشه پسوورد پروتکل WPA رو کرک کرد ، باید در ابتدا به وسیله ی شنود این چهار مرحله ی دست دهی ، PTK  رو بدست بیاری . بعد این PTK مشتق شده از ۶ تا عنصره :
    ۱ - مک آدرس کلاینت
    ۲ - مک آدرس اکسس پوینت
    ۳ - SSID 
    ۴ - ANounce
    ۵ - SNounce
    ۶ - PMK
    خود pmk مشتق شده از ssid  و پسوورد اکسس پوینت هستش .
    نهایتا بعد از بدست آوردن ptk با مخلوط کردن این چند عنصر با پسوورد های مختلف باید PTK رو کرک کنی . با کرک کردن PTK قطعا پسوورد هم بدست میاد . اول با این مفاهیم باید کامل آشنا باشی. برای آشنایی با این مفاهیم کتاب آموزش تست نفوذ وایرلس از سایت netamooz.net رو پیشنهاد میکنم .

  • بعد تازه این روش مموری رو یکم اذیت میکنه

    تو سرور اونا دو ثانیه ای از بین 10 میلیارد و خوردهی پسورد سریع پیدا میکنه

    این واقعا بیکاری محضه :|

     

    ولی اینا یه مشکلی هم دارن

    اینکه ای پی ای اون سایتی که بهت گفتم فقط بازه، بقیه  همشون یا ناقصن یا فیلتر و تحریم...

  • من از این روش نرفتم چون واقعا دستمون خیلی بند نی

    از APi سایت کرک هش md5decrypt.net استفاده کردم چون اونا کامل ترن

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