حل یک مسئله مرموز برنامه‌نویسی!

حل یک مسئله مرموز برنامه‌نویسی!

چند وقت پیش، یکی از دوستان یه مسئله جالبی رو قرار داده بود. اینم عینا متن سوالش:(لینک)http://welhackpyspy.pythonanywhere.com/موفق باشینجواب آخر یک کد دیکود نشدس شبیه همچین چیزیه xd9x82xd8xa7xd9xهمچین چیزیو دیدین با اسکرین پی وی بنده بفرستیدتا ۳ روز مهلت دارینالبته الان دیگه مهلتش تموم شده:) در هر صورت سعی کنید خودتون اول حل کنید، بعد جواب رو ببینید.اگه لینک پریده، این اسکرین‌شات لینکه:توی سورس‌کد سایت خبری نیست:) مطمئن باشید!با توجه به اینکه چیز دیگه‌ای دم دست نیست، مشخصا تنها سرنخ ما عکسه. اینم عکسی که توی لینک هست:خب، هرکس روش خودش رو اولش میره. مثلا من اولش اومدم با PIL اونو باز کردم و بررسی کردم و … بدون نتیجه:) یه حلقه الکی مثل این:from PIL import Image
x = Image.open(&quotnothing.jpeg&quot)
for y in dir(x):
print(y,exec(f&quotx.{y}&quot))توی مرحله بعدی اومدم با استفاده از سرچ گوگل، عکس رو جست‌وجو کردم و عکس اصلی رو پیدا کردم. عکس اصلی این بود:عجله نکنید! این با قبلی فرق داره:)توی این مرحله با cv2.imread چک کردم که یکی هستن یا نه، که متاسفانه بازم به بن‌بست خوردم! بله، تصویر پیکسل‌هاش یکی بود:from cv2 import imread
x = imread(&quotnothing.jpeg&quot) # amazing image!
y = imread(&quotoriginal.jpeg&quot) # original image.
print(all(x == y)) # Trueخب پس ظاهرا به نتیجه نمیرسیم؛ اما … بزارید تیر آخر رو هم بزنیم! یعنی بررسی محتوی فایل:>>> x = open(&quotnothing.jpeg&quot, ‘rb’).read()
>>> y = open(&quotoriginal.jpeg&quot, ‘rb’).read()
>>> x == y
False
>>> # yes! there’s a difference.
>>> len(x) > len(y)
True
>>> x[0:len(y)] == y
True
>>> # so … check the end of the file
>>> x[len(y)::]
b’nrequest to reichn’بلاخره به یه سرنخ جدید رسیدیم!:) خب الان این request to rich یعنی چی؟ اعتراف کنم که خودم اولش نفهمیدم:) و با راهنمایی متوجه شدم. در واقع باید یه request زده میشد به سایت و … اول با request باید یکم کار کنیم. بنظر باید به سایت یه رکوئست بدیم و اون rich رو هم اون وسط جا بدیم:>>> import requests
>>> x = requests.post(&quothttp://welhackpyspy.pythonanywhere.com/reich&quot)
>>> x.content
b'<!DOCTYPE html>n<html lang=&quoten&quot>n<head>n <meta charset=&quotUTF-8&quot>n <meta name=&quotviewport&quot content=&quotwidth=device-width, initial-scale=1.0&quot>n <title>Document</title>n</head>n<body>n <h1 style:&quotcolor:none;&quot>xd9x82xd8xa7xd9x86xd9x88xd9x86 xd8xb1xd8xa7xd8xb2 xdax86xdbx8cxd8xb3xd8xaaxd8x9f</h1>n</body>n</html>’تمام! البته قبلش هزار جور از request استفاده کرده بودم:)) در هر صورت به جواب رسیدیم:xd9x82xd8xa7xd9x86xd9x88xd9x86 xd8xb1xd8xa7xd8xb2 xdax86xdbx8cxd8xb3xd8xaaxd8x9fدر واقع سوال سخت نبود، ولی گمراه کننده چرا! بریم سراغ بخش آخر، یعنی:۱. از PIL استفاده کردم برای چک کردن، که کلا فایده‌ای نداشت:) همه متدهاش رو هم با استفاده از exec و dir دراوردم و چک کردم ولی خبری نبود.۲. نمیدونم چرا یه head یا tail نگرفتم از عکس همون اول کار:)۳. مسیر حساب‌شده‌ای رو پیش نبردم. در واقع با گفتن «باداباد» شروع کردم!

Author: admin

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *