الترميزات ، والشفرات تحول ، تجزئة الغاشمة وخلق الصورة باستخدام PIL بيثون. حل المشكلات باستخدام r0ot-mi Cryto. الجزء 1

صورة

تحتوي هذه المقالة على حلول لمهام Encoding ASCII و Encoding UU التي تهدف إلى الترميز و Hash Message Digest 5 و Hash SHA-2 - للعثور على الصورة العكسية للتجزئة وشفرات Shift وشفرات التحول و Pixel Madness - لتكوين الصورة.

المعلومات التنظيمية
خاصةً لأولئك الذين يرغبون في تعلم شيء جديد وتطويره في أي من مجالات أمن المعلومات والحاسوب ، سأكتب وأتحدث عن الفئات التالية:

  • PWN.
  • التشفير (التشفير) ؛
  • تقنيات الشبكات (الشبكة) ؛
  • عكس (الهندسة العكسية) ؛
  • إخفاء المعلومات (Stegano) ؛
  • بحث واستغلال مواطن الضعف WEB.

بالإضافة إلى ذلك ، سوف أشارك تجربتي في الطب الشرعي للكمبيوتر ، وتحليل البرامج الضارة والبرامج الثابتة ، والهجمات على الشبكات اللاسلكية وشبكات المناطق المحلية ، وإجراء عمليات pentests واستغلال الكتابة.

حتى تتمكن من معرفة المقالات الجديدة والبرامج والمعلومات الأخرى ، أنشأت قناة في Telegram ومجموعة لمناقشة أي مشاكل في مجال التصنيف الدولي للأمراض. أيضًا ، سأدرس شخصيًا طلباتك الشخصية وأسئلتك واقتراحاتك وتوصياتك شخصيًا وسأجيب على الجميع .

يتم توفير جميع المعلومات للأغراض التعليمية فقط. لا يتحمل مؤلف هذا المستند أية مسؤولية عن أي ضرر يلحق بشخص ما نتيجة استخدام المعرفة والأساليب التي تم الحصول عليها نتيجة لدراسة هذا المستند.

ترميز - ASCII


دعنا نبدأ مع أول وظيفة - ترميز ASCII.

صورة

ننتقل إلى المهمة نفسها. نرى سلسلة من الأحرف 16. الافتراض الأول هو عرافة عادية (يتم تقديم جميع الأحرف في النموذج السادس عشر).

صورة

s = "4C6520666C6167206465206365206368616C6C656E6765206573743A203261633337363438316165353436636436383964356239313237356433323465" s.decode("hex") 

صورة

نحصل على الجواب والمضي قدما.

ترميز - UU


صورة

ننتقل إلى المهمة نفسها. على الرغم من التلميح في اسم المهمة ، فمن السهل تمييز الملفات في UUE (ترميز لنقل الملفات التي تحتوي على بيانات غير نصية) - فهي تبدأ من السطر:

 Begin_--_- 

صورة

 s = '''begin 644 root-me_challenge_uudeview B5F5R>2!S:6UP;&4@.RD*4$%34R`](%5,5%)!4TE-4$Q%"@`` ` end''' f = open('./uu.enc', 'w') f.write(s) f.close() import uu uu.decode('uu.enc', 'uu.dec') ans = open('uu.dec', 'r').read() 

صورة

نحن تسليم العلم.

التجزئة - رسالة دايجست 5


صورة

يطلب منا العثور على النموذج الأولي للتجزئة md5. يمكن القيام بذلك بسهولة باستخدام هذا الموقع (https://md5decrypt.net/). لكننا ، لأغراض التدريب ، بالطبع ، نستخدم hashcat. للقيام بذلك ، استخدم المعلمات والرموز التالية:

  • - 0 - البحث من خلال القاموس ؛
  • -m 0 - نوع التجزئة MD5 ؛
  • File.hash - ملف مع تجزئة ؛
  • rockyou.txt - قاموسنا ؛
  • - القوة - تجاهل الأخطاء.

صورة

ننتقل إلى المهمة التالية.

تجزئة - SHA-2


صورة

كإجابة ، عليك إعطاء تجزئة SHA1 من الصورة المعكوسة لهذا التجزئة. الحقيقة هي أن هذه شخصية إضافية.

صورة

احذفها. من أجل تحديد خوارزمية التجزئة ، نستخدم برنامج hashid.

صورة

من الخوارزميات المقدمة ، والأرجح SHA-256. أظهرت Hashcat كيفية حل هذه المهمة باستخدام hashcat ، والآن سنفعل ذلك باستخدام هذا
الموقع .

صورة

يبقى أن تأخذ SHA-1 من هذا الخط.

 from hashlib import * sha1('4dM1n').hexdigest() 

صورة

تحويل الشفرات


صورة

حسنًا ، باستخدام خوارزمية التشفير ، يساعدوننا. نفس قيصر التشفير ، فقط التحول لا يحدث في النطاق من الصفر إلى طول الأبجدية ، ولكن وفقا لجميع القيم 256 ممكن من بايت واحد. سنقوم بكتابة برنامج يقوم أولاً بتغيير كل حرف بمقدار 1 ، ثم 2 ، إلخ. ما يصل إلى 255.

 s = open('ch7.bin', 'r').read() for x in range(255): “”.join( chr((ord(y) + x)%256 ) ) for y in s) 

صورة

من بين السطور نجد الخط الذي يحتوي على الجواب.

صورة

بكسل الجنون


صورة

لقد حصلنا على العديد من التعبيرات ، وفي النهاية يقولون أن 0 لون أبيض و 1 أسود. على الأرجح يجب أن تكون النتيجة صورة. أفترض أنه في التعبير لا تحتاج إلى الضرب ، ولكن لتكرار العدد المطلوب من المرات لشخصية معينة.

يمكنك تنفيذ تعبير بسرعة باستخدام دالة eval ، ولكن عليك أولاً تغيير التنسيق 0x1 إلى "0" * 1.

 s = ''''0x3+1x1+0x1+0x1+0x7+1x2+0x15+1x1+0x8+1x1+0x8+1x1+0x1+1x1+0x1+1x1+0x1+1x1+0x1+1x1+0x3+1x1+0x1+1x1+0x3+1x1+0x1+1x4+0x2+1x1+0x25 '0x2+1x1+0x4+1x1+0x4+1x3+0x1+1x2+0x2+1x8+0x11+1x4+0x1+1x3+0x6+1x2+0x4+1x1+0x4+1x2+0x7+1x4+0x4+1x2+0x7+1x2+0x3+1x2+0x3 '0x3+1x1+0x2+1x1+0x2+1x1+0x11+1x2+0x2+1x3+0x7+1x1+0x4+1x2+0x2+1x2+0x7+1x1+0x6+1x1+0x2+1x1+0x4+1x3+0x1+1x1+0x4+1x1+0x2+1x1+0x2+1x1+0x3+1x1+0x2+1x3+0x2+1x2+0x3 '1x1+0x2+1x1+0x4+1x1+0x2+1x1+0x1+1x1+0x2+1x1+0x2+1x1+0x1+1x2+0x2+1x2+0x1+1x2+0x3+1x1+0x3+1x1+0x2+1x2+0x1+1x3+0x3+1x1+0x2+1x1+0x4+1x2+0x1+1x1+0x4+1x1+0x3+1x2+0x12+1x2+0x1+1x1+0x3+1x7+0x3 '0x3+1x1+0x7+1x1+0x1+1x1+0x4+1x1+0x2+1x2+0x2+1x2+0x4+1x1+0x2+1x1+0x1+1x2+0x1+1x8+0x1+1x1+0x4+1x1+0x5+1x1+0x3+1x2+0x2+1x1+0x1+1x2+0x2+1x1+0x3+1x2+0x9+1x1+0x1+1x2+0x2+1x3+0x2+1x1 '0x7+1x1+0x4+1x1+0x4+1x1+0x1+1x1+0x1+1x7+0x3+1x1+0x1+1x2+0x3+1x1+0x1+1x6+0x1+1x1+0x3+1x1+0x2+1x1+0x14+1x2+0x8+1x1+0x10+1x2+0x3+1x2+0x1+1x1+0x1 '0x6+1x5+0x4+1x1+0x7+1x1+0x2+1x1+0x3+1x2+0x4+1x1+0x8+1x1+0x3+1x2+0x1+1x2+0x3+1x1+0x8+1x1+0x2+1x2+0x1+1x1+0x3+1x7+0x5+1x2+0x2+1x1+0x2+1x2+0x3 '0x1+1x1+0x2+1x1+0x1+1x2+0x5+1x1+0x6+1x2+0x3+1x1+0x2+1x1+0x1+1x2+0x20+1x8+0x1+1x1+0x1+1x1+0x4+1x2+0x3+1x1+0x2+1x2+0x3+1x2+0x7+1x2+0x3+1x2+0x4 '0x2+1x1+0x3+1x5+0x5+1x2+0x7+1x1+0x4+1x2+0x2+1x1+0x2+1x2+0x1+1x1+0x3+1x1+0x6+1x2+0x2+1x2+0x3+1x2+0x2+1x3+0x1+1x1+0x6+1x3+0x3+1x5+0x3+1x1+0x4+1x1+0x5 '0x4+1x2+0x3+1x2+0x3+1x1+0x5+1x2+0x2+1x1+0x1+1x1+0x1+1x1+0x1+1x2+0x9+1x1+0x3+1x1+0x2+1x1+0x1+1x1+0x2+1x1+0x1+1x2+0x2+1x1+0x2+1x1+0x1+1x1+0x4+1x3+0x1+1x1+0x2+1x2+0x3+1x2+0x3+1x1+0x5+1x1+0x4+1x1+0x2 '0x6+1x5+0x4+1x1+0x1+1x1+0x2+1x2+0x6+1x1+0x1+1x7+0x4+1x3+0x3+1x1+0x4+1x1+0x2+1x2+0x4+1x1+0x6+1x1+0x6+1x8+0x3+1x1+0x5+1x1+0x7 '0x2+1x1+0x3+1x6+0x4+1x1+0x1+1x3+0x4+1x1+0x2+1x2+0x4+1x1+0x5+1x1+0x2+1x1+0x3+1x2+0x3+1x1+0x2+1x3+0x1+1x1+0x2+1x2+0x3+1x3+0x2+1x3+0x9+1x1+0x4+1x2+0x7+1x2''' s = s.replace("x", "'*").replace("+","+'") examp = s.split('\n') bits = [eval(i) for i in examp] print(bits) 

صورة

الآن قم بإنشاء صورة باستخدام مكتبة PIL. دعنا نضيف الكود التالي ، قم بتحريره وفتح الصورة الناتجة.

 from PIL import Image width, height = len(bits[0]), len(bits) pic = Image.new('RGB', (width, height)) pix = pic.load() for i in range(height): for j in range(width): pix[j,i] = ( bits[i][j]=='0' and (255,255,255) or (0,0,0) ) pic.save('pixel.png') 

صورة

لقد قمت بالتكبير على الصورة ، اقرأ كلمة SOLUTION. في الواقع ، هناك أكثر stegs من الخبايا. ستكون هذه المقالة مثيرة للاهتمام ، على الأرجح ، فقط للمبتدئين.

المزيد والمزيد من التعقيد ... يمكنك الانضمام إلينا على Telegram . هناك يمكنك اقتراح الموضوعات الخاصة بك والتصويت على اختيار الموضوعات للمقالات التالية.

Source: https://habr.com/ru/post/ar472628/


All Articles