چالش شماره 6 - کرک کردن یک پین کد + (معرفی برندگان چالش قبلی) :: Mr Python | مستر پایتون

چالش شماره 6 - کرک کردن یک پین کد + (معرفی برندگان چالش قبلی)

  • ۵۲۹

چالش شماره 6 - کرک کردن یک پین کد + (معرفی برندگان چالش قبلی)

درود به همه !

شماره چالش :  6
سطح چالش : آسان
دسته بندی : کرکینگ / Cracking

توضیح :

 

اسکریپتی طراحی کنید که پسوورد لیستی تولید کند که به وسیله ی آن پسوورد لیست بتوان پین کد مچ بندی که در تصویر میبینید را کرک کرد .

توجه کنید پسووردلیستی که اسکریپت شما تولید میکند باید کمترین تعداد پسوورد ممکن را داشت باشد و پسوورد درست قطعا در آن باشد . 

 

نحوه ی حل این چالش در هفته ی آینده ، همین روز ، هنگام انتشار چالش بعدی ، همراه با معرفی کسانی که چالش رو حل کردند ، منتشر میگردد . بنابراین تلاش کنید تا زمان انتشار جواب چالش ، آن را حل کنید .

 

بعد از اینکه حل کردید به ما از طریق جیمیلمون بگید :)) 

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(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()
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_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

 

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