-
پنجشنبه, ۱۳ خرداد ۱۴۰۰، ۰۷:۰۳ ق.ظ
-
۵۹۱
چالش شماره 6 - کرک کردن یک پین کد + (معرفی برندگان چالش قبلی)
درود به همه !
توضیح :
اسکریپتی طراحی کنید که پسوورد لیستی تولید کند که به وسیله ی آن پسوورد لیست بتوان پین کد مچ بندی که در تصویر میبینید را کرک کرد .
توجه کنید پسووردلیستی که اسکریپت شما تولید میکند باید کمترین تعداد پسوورد ممکن را داشت باشد و پسوورد درست قطعا در آن باشد .
نحوه ی حل این چالش در هفته ی آینده ، همین روز ، هنگام انتشار چالش بعدی ، همراه با معرفی کسانی که چالش رو حل کردند ، منتشر میگردد . بنابراین تلاش کنید تا زمان انتشار جواب چالش ، آن را حل کنید .
بعد از اینکه حل کردید به ما از طریق جیمیلمون بگید :))
Gmail : mrpythonblog@gmail.com
لیست برندگان چالش قبلی به همراه روش حل ( به ترتیب تاریخ ارسال جواب چالش ) :
در چالش قبلی ما یک فایل صوتی داشتیم که پسوورد یک فایل PDF با الگوریتم سزار رمزگذاری شده بود و پشت این فایل صوتی مخفی شده بود . بنابراین ابتدا باید متن رمزگذاری شده رو از دل فایل صوتی میکشیدیم بیرون و سپس آن را از طریق روش های شکستن رمز سزار ، رمزگشایی میکردیم . نهایتا پسوورد فایل YOUCANIFYOUWANT بود .
Mr.Nobody : ایشون ابتدا با استفاده از سورس زیر متن رمزگذاری شده رو از پشت آهنگ استخراج کردند :
from stepic import decode
from PIL import Image
from eyed3 import load
from os import system
audio = input("audio : ")
audio = load(audio) # Opening the audio file
img = open("temp_img.png", "wb")
img.write(audio.tag.images[0].image_data) # Extract the Cover of audio file
img.close()
img = Image.open("temp_img.png")
text = decode(img) # Decode data from the extracted image
system("del {}".format("temp_img.png"))
print("Data : {}".format(text))
input()
سپس با استفاده از سورس زیر آن را رمزگشایی کرده اند تا به پسوورد برسند :
def decrypt(text , key):
ciphertext = ""
for plain_char in text:
plain_number = ord(plain_char) - 65
key_number = ord(key) - 65
key_number = 26 - key_number
cipher_number = plain_number + key_number
if cipher_number > 25: # if cipher_number > 25 -> start from 0
cipher_number -= 26
cipher_char = chr(cipher_number+65)
ciphertext += cipher_char
return ciphertext
text = input("cipher text : ").replace(" ","").upper()
key = input("key : ").upper()
plaintext = decrypt(text, key)
print(plaintext)
dany_ odr : ایشون ابتدا متن رمزگذاری شده رو با استفاده از سورسی که در پست (نوشتن اسکریپت مخفی کردن اطلاعات پشت آهنگ در پایتون) نوشتیم استخراج کردند و سپس به طور دستی با استفاده از سایت های آنلاین ، متن رمزگذاری شده رو با کلید های مختلف رمزگشایی کرده اند تا به متن اصلی رسیده اند .
Farbod moradi : ایشون در ابتدا با استفاده از سورس زیر متن رمزگذاری شده رو از طریق فایل صوتی بدست آوردند :
from stepic import decodefrom PIL import Imagefrom eyed3 import loadfrom os import systemaudio = input("audio : ")audio = load(audio)img = open("temp_img.png", "wb") img.write(audio.tag.images[0].image_data) img.close()img = Image.open("temp_img.png") text = decode(img)print("Data : {}".format(text)) input()
سپس با استفاده از سورس زیر متن رمزگذاری شده رو رمزگشایی کردند :
def decrypt(text , key):ciphertext = ""for plain_char in text:plain_number = ord(plain_char) - 65 key_number = ord(key)- 65 key_number = 26 - key_number cipher_number = plain_number + key_number if cipher_number > 25:# if cipher_number > 25 -> start from 0 cipher_number -= 26 cipher_char = chr(cipher_number+65) ciphertext += cipher_char return ciphertexttext = input("cipher text : ").replace(" ","").upper() for key in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": plaintext = decrypt(text,key) print("KEY #{} -> {}".format(key , plaintext)) input()
Farough Oghba : ایشون سورس کاملی طراحی کرده اند که صفر تا صد حل چالش رو انجام میده :
from stepic import decode from PIL import Image from eyed3 import load import pikepdf# Opening the audio file audio = 'music.mp3' audio = load(audio)# Extract the Cover of audio file with open("temp_img.png", "wb") as img: img.write(audio.tag.images[0].image_data)# Decode data from the extracted image img = Image.open("temp_img.png") text = decode(img)print(f"CIPHER TEXT : {text}\n")# Decrypt Cipher Text def decrypt(text , key): cipher_text = "" for plain_char in text: plain_number = ord(plain_char) - 65 key_number = ord(key) - 65 key_number = 26 - key_number cipher_number = plain_number + key_number if cipher_number > 25: # if cipher_number > 25 --->>> start from 0 cipher_number -= 26 cipher_char = chr(cipher_number + 65) cipher_text += cipher_char return cipher_textpdf_file = 'challenge5.pdf' for key in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": plain_text = decrypt(text, key) print(f"KEY #{key} <<<---Testing--->>>> {plain_text}") try: pikepdf.open(pdf_file, plain_text) print("*" * 50) print(f'KEY NUMBER: {key}') print(f"PDF PASSWORD : {plain_text}") break except: continue
arman kasaiyan : ایشون نیز اسکریپت کاملی طراحی کردند که از صفر تا صد چالش رو انجام میده :
from stepic import decode from PIL import Image from eyed3 import load import pikepdfaudio = "music.mp3" audio = load(audio) img = open("cover.png", "wb") img.write(audio.tag.images[0].image_data) img.close() img = Image.open("cover.png") text = decode(img) print("Data : {}".format(text))def decrypt(text , key): ciphertext = "" for plain_char in text: plain_number = ord(plain_char) - 65 key_number = ord(key) - 65 key_number = 26 - key_number cipher_number = plain_number + key_number if cipher_number > 25: cipher_number -= 26 cipher_char = chr(cipher_number+65) ciphertext += cipher_char return ciphertextpasswords = [] text_c = text for key in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": plaintext = decrypt(text_c, key) print("KEY #{} -> {}".format(key , plaintext)) passwords.append(plaintext)pdf_file = "./challenge5.pdf" for password in passwords: print("Testing : {}".format(password)) try: pikepdf.open(pdf_file,password) print("*"*30) print("Password : {}".format(password)) break except: continue
یا حق !
Telegram Channel : @mrpythonblog
