-
چهارشنبه, ۱۱ فروردين ۱۴۰۰، ۰۷:۱۴ ب.ظ
-
۱۳۹۸
سلام دوستان :)
امروز میخواستم بهتون پروژه هک از طریق رنگین کمان رو نشون بدم
شرح این پروژه به این صورت هستش که ما یک فایل csv داریم که داخلش یک سری (اسم) و (هش) هست
کاری که ما باید بکنیم اینه که اسم ها و هش ها رو از توی فایل بخونیم و مقدار هش رو کرک کنیم و داخل یک فایل csv دیگه بنویسیم
ما میدونیم که هش از نوع sha256 هست و پسوردمون از 1000 تا 9999
خب پس باید از 1000 تا 9999 رو هش کنیم و داخل یک dict بزاریم و دونه دونه هش ها رو با هش های داخل فایل چک کنیم و مقدارش رو بدست بیاریم برای هش کردن هم میتونیم از کتابخونه hashlib استفاده کنیم
خب حالا میتونیم بریم سراغ کد
اول کتابخونه های مورد نیاز رو import میکنیم
from hashlib import sha256 import csv
بعد یک تابع به نام hash_password_hack درست می کنیم که دو تا ورودی input_file_name و output_file_name رو میگیره
def hash_password_hack(input_file_name , output_file_name):
بعدش باید فایل مورد نظر رو باز کنیم و بخونیم
with open(input_file_name) as fin:
حالا یک dict به نام hp برای قرار دادن هش اعداد 1000 تا 9999 درست میکنیم و یک dict به نام new_hp برای نام و پسورد های کرک شده هست
hp = {} new_hp = {}
بعدش باید اعداد 1000 تا 9999 رو هش کنیم و هر عدد و هش اون عدد رو داخل دیکشنری hp ذخیره کنیم
for i in range(1000 , 9999): hash_jadid = sha256(str(i).encode()) hash_jadid = hash_jadid.hexdigest() hp[hash_jadid] = i
خب اول یک حلقه میخوایم که نام و هش رو از فایل بخونه
بعدش یک حلقه دیگه میخوایم که برامون چک کنه ببینه هش های داخل فایل با هش های داخل دیکشنری hp مطابقت داره یا نه
اگر مطابقت داشت اسم و پسورد کرک شده رو داخل دیکشنری new_hp ذخیره میکنه
for radif in reader: name = radif[0] hash_in_reader = radif[1] for hach_in_hp in hp.keys(): if hash_in_reader == hach_in_hp: new_hp[name]=hp.get(hach_in_hp)
در آخر که پسورد ها رو بدست آوردیم باید اسم ها و پسورد ها رو داخل یک فایل csv ذخیره کنیم
with open(output_file_name , 'w') as out: count = 0 for names in new_hp: count += 1 if count == 1: out.write(names + ',' + str(new_hp.get(names))) else: out.write('\n' + names + ',' + str(new_hp.get(names)))
این هم کد کامل:
from hashlib import sha256 import csv def hash_password_hack(input_file_name , output_file_name): with open(input_file_name) as fin: reader = csv.reader(fin) hp = {} new_hp = {} for i in range(1000 , 9999): hash_jadid = sha256(str(i).encode()) hash_jadid = hash_jadid.hexdigest() hp[hash_jadid] = i for radif in reader: name = radif[0] hash_in_reader = radif[1] for hach_in_hp in hp.keys(): if hash_in_reader == hach_in_hp: new_hp[name]=hp.get(hach_in_hp) with open(output_file_name , 'w') as out: count = 0 for names in new_hp: count += 1 if count == 1: out.write(names + ',' + str(new_hp.get(names))) else: out.write('\n' + names + ',' + str(new_hp.get(names)))
الان میتونین مثلا یک input از کاربر بگیرین که اسم فایلشو وارد کنه و یک input بگیرین که اسم فایل خروجیش رو وارد کنه و در آخر از این تابع استفاده کنین و برنامه براتون هش ها رو کرک میکنه
میتونین هم خودتون پیشرفته ترش کنین و الگوریتم های هش دیگه رو هم بهش اضافه کنین رنج اعداد رو بیشتر کنین یا حتی از کاربر برای کرک، پسورد لیست بگیرین و...
امیدوارم براتون مفید بوده باشه D: