-
پنجشنبه, ۱۳ خرداد ۱۴۰۰، ۰۷:۰۳ ق.ظ
-
۵۲۹
چالش شماره 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 decode
from PIL import Image
from eyed3 import load
from os import system
audio = 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(pla
in_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 -= 2
6
cipher_char = chr(ciph
er_number+65) ciphertext += cipher_
char
return ciphertext
text = input("cipher text : ")
.replace(" ","").upper() for key in "
ABCDEFGHIJKLMNOPQRSTUVWXYZ": plaintext = decrypt(text,
key) print("KEY #{} -> {}".form
at(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_text
pdf_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 pikepdf
audio = "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 ciphertext
passwords = [] 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