چالش CONWAY¶
آشنایی با مساله¶
در این سوال به ما دو فایل main.py
و output.txt
داده شده است که در ادامه محتویات این دو فایل رو مشاهده میکنید:
main.py | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
output.txt | |
---|---|
1 2 |
|
ظاهرا تو این سوال باید با استفاده از initial
و مقدار پرینت شده، بیایم تابع generate_next_key
رو پیاده سازی کنیم و سپس با داشتن کلید بسادگی میتوان متن را رمزگشایی کرد و به فلگ رسید.
راه حل¶
توصیه
قرار نیست ما همیشه همه چیز رو بدونیم و اینکه تو مسابقاتمون از هوش مصنوعی ها در راستا افزایش کاراییمون بهدرستی کمک بگیریم، کار هوشمندانهای هستش.
برای حل این مساله ابتدا با chatgpt مشورت کردم و خوشبختانه ایشون تونست این تابع رو برای من پیاده سازی کنه و بخش سخت مساله رو برا من انجام داد و در ادامه بسادگی میتوان کلید aes
را بدست بیاوریم و بعد از رمزگشایی به فلگ میرسیم.
همچنین میتوانستیم از این سایت نیز جهت حل این مساله کمک بگیریم
import hashlib
from Crypto.Cipher import AES
def generate_next_key(s):
result = ""
i = 0
while i < len(s):
count = 1
while i + 1 < len(s) and s[i] == s[i + 1]:
i += 1
count += 1
result += f"{count}{s[i]}"
i += 1
return result
initial = "11131221131211131231121113112221121321132132211331222113112211"
enc = 'f143845f3c4d9ad024ac8f76592352127651ff4d8c35e48ca9337422a0d7f20ec0c2baf530695c150efff20bbc17ca4c'
initial = generate_next_key( generate_next_key(initial) )
key = hashlib.sha256(initial.encode()).digest()
AES.new(key, AES.MODE_ECB).decrypt( bytes.fromhex(enc) )
FLAG 
TFCCTF{c0nway's_g4me_0f_sequences?}
نویسنده