-
پنجشنبه, ۹ ارديبهشت ۱۴۰۰، ۰۲:۵۶ ب.ظ
-
۷۲۷
چالش شماره 2 - به دنبال یک اسم و فامیل :) + (معرفی برندگان چالش قبلی)
درود به همه !
طبق درخواست شما دوستان عزیز ، تصمیم گرفتیم به طور هفتگی چالش هایی برای شما عزیزان آماده کنیم که میتوانند به یادگیری و تثبیت مطالب در ذهن شما بسیار کمک کنند . چالش امروز رو از دست ندید .
توضیح :
ما یک فایل PDF رمزگذاری شده داریم . برای حل چالش رمز فایل PDF را بدست بیاورید .
رمز فایل PDF برابر با اسم و فامیل موسس شرکتی هستش که دوربینی که عکس بالا باهاش گرفته شده رو ساخته .
نکته : بین اسم و فامیل یک عدد فاصله (Space) وجود دارد
لینک دانلود مستقیم فایل PDF : دانلود
منابع مورد نیاز برای حل این چالش :
- https://exif.readthedocs.io/en/latest/usage.html
- فهمیدن مدل گوشی از طریق عکس گرفته شده.
- نوشتن برنامه ی بدست آوردن مدل گوشی از طریق عکس در پایتون
نحوه ی حل این چالش در هفته ی آینده ، همین روز ، هنگام انتشار چالش بعدی ، همراه با معرفی کسانی که چالش رو حل کردند ، منتشر میگردد . بنابراین تلاش کنید تا زمان انتشار جواب چالش ، آن را حل کنید .
بعد از اینکه حل کردید به ما از طریق جیمیلمون بگید :))
Gmail : mrpythonblog@gmail.com
لیست برندگان چالش قبلی به همراه اسکریپت های نوشته شده ( به ترتیب تاریخ ارسال جواب چالش ) :
- dany_ odr : اولین نفری بودن که چالش رو حل کردند . برای کرک کردن فایل PDF از کتابخونه ی pikepdf استفاده کردند . همچنین برای ساختن ترکیب های مختلف از پسوورد (با توجه به شرایط ذکر شده از رمز فایل) از کتابخونه ی Bruter استفاده کرده بودند .
import pikepdf
from bruter import brute
password_list = []
def append2list(password):
password_list.append(passw
ord) def cracker(password):
try:
pikepdf.open("
challenge1.pdf", password) return True
except:
return False
if __name__ == "__main__":
symbols = {"1":"2357",
"3":"7",
"4":"13579",
"5":"02468",
"6":"
ABCDEFGHIJKLMNOPQRSTUVWXYZ"}
brute("<1><1><3><4><5><6>"
, append2list, symbols) for password in password_
list: if cracker(password):
print("_"*30)
print("[-]
Password craked.") print("[-]
Password is {}".format(passwor d)) print("_"*30)
break
else:
print("[Trying]
file: challenge1.pdf - password: {}".format(password) ) continue
- Ali Zabetpor : برای کرک کردن فایل PDF از کتابخونه ی pikepdf استفاده کردند . همچنین برای ساخت پسوورد لیست با توجه به شرایط پسوورد یک اسکریپت جدا نوشته بودند که با استفاده از حلقه های for تو در تو ، پسوورد ها رو تولید کرده بودند .
سورس تولید پسوورد لیست :
# from os import write import string darsad=0 with open("passwordlist.txt","w") as f: for first in [2,3,5,7]: for second in [2,3,5,7]: for third in [7]: for forth in [1,3,5,7,9]: for fifth in [0,2,4,6,8]: for sixth in list(string.ascii_uppercase): mypass=str(first)+str(second)+str(third)+str(forth)+str(fifth)+sixth f.writelines(mypass+"\n")
darsad+=25 print(str(darsad)+"% takmil shod")
سورس کرک فایل PDF با استفاده از پسوورد لیست ساخته شده :
import pikepdf
with open("passwordlist.txt","r") as f:
for password in f:
new_password=password.replace("\n","")
try:
pikepdf.open("challenge1.pdf",new_password)
print(f"password file pdf: {new_password}")
except:
continue
- Amirreza Ghamilouei : برای کرک کردن فایل pdf از کتابخونه ی pikepdf استفاده کردند . برای ساختن پسوورد لیست نیز از ابزار crunch در لینوکس استفاده کردند که به وسیله ی اون میشه پسوورد لیست های دلخواه تولید کرد . اسکریپتشون به دلایلی در دسترس نبود ولی کاملا صحیح این چالش رو حل کرده بودند .
- Farough Oghba : از کتابخونه ی pikepdf برای کرک کردن فایل PDF استفاده کرده بودند . همچنین برای تولید ترکیب های مختلف پسوورد ( با توجه به شرایط پسوورد ) از کتابخونه ی itertools و تابع product بهره گرفته بودند .
import pikepdf import string import itertools
primes = ["2", "3", "5", "7"] odds = ["1", '3', '5', '7', '9'] evens = ['0', '2', '4', '6', '8'] chars = string.ascii_uppercase
passwords = [] pdf_file = 'challenge1.pdf'
# Create a password list for prime1, prime2, odd, even, char in itertools.product(primes, primes, odds, evens, chars): password = prime1 + prime2 + '7' + odd + even + char passwords.append(password)
# Find the correct password for pass_word in passwords: print(f"Testing : {pass_word}") try: pikepdf.open(pdf_file, pass_word) print("*"*50) print(f"Password : {pass_word}") break except: continue
یا حق !
Telegram Channel : @mrpythonblog