الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مسألة فك تشفير

مغلق
بدأه MEMONONO في 26 أكتوبر 2005 · 13 رد · 4,496 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم...

المسألة الأولى : حاول تفك تشفير التالي:

fqjcb rwjwj vnjax bnkhj whxcq nawjv nfxdu mbvnu ujbbf nnc

المسألة الثانية: حاول تفك تشفير التالي:

pbegu uymiq icuuf guuyi qguuy qcuiv fiqgu uyqcu qbeme vp

المسألة الثالثة: حاول تفك تشفير التالي: و للمساعدة هنا استخدم المفتاح التالي"monalphbetic"

jmjmj gsmsg lrjgu csqyj quflr mfajq erdmc cmqlv lqyhg gawgq arpgq sblce jrlrj lnmec cyjqu flrmf ajqer d

لتسهيل حل المسائل: جميعها من النوع البسيط أو ما يسمى بالـ Monoalphabetic

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

سوف أحاول أن أقدم مسائل بالعربي....

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

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

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#2

شيئ مهم:

الجمل عربية ؟ أم....

d4baa0.gif
#3

السلام عليكم

أرجو أن تتبع هذه التمرينات دروس حتى نتمكن من المشاركة وجزاكم الله خيرا

#4
اقتباس
whats in a name a rose by any other name would smell as sweet

fqjcb rwjwj vnjax bnkhj whxcq nawjv nfxdu mbvnu ujbbf nnc

وبالمناسبة اتبعت طريقة الـ bruteforcing لفك تشفيره اما البقية فلا تنفع معهم هذه الطريقة حيث تم رصف السلاسل المشفرة بطريقة معينة وبالتالي لا يمكن الحصول على قيم صحيحة من فك تشفيرهم باستخدام كل الامكانيات .. لكن هناك احتمالية في نجاح طريقة التحليل التفاضلي :) (كما في شرائح الجوال وال CC :rolleyes: )

' bugged, vulnerable to attack, bruteforcer :p
' hopefully! deciphers only Caesar's transposition cipher block
' for speed but no portability :| we use VB as a bruteforcer environment... blaaaah :/
Option Explicit

Private Sub Form_Load()
Dim alpha As String, cipher As String
    alpha = "abcdefghijklmnopqrstuvwxyz"
    cipher = "fqjcbrwjwjvnjaxbnkhjwhxcqnawjvnfxdumbvnuujbbfnnc"
Dim k As Integer, r0tate As String, i As Integer, x As String, blocks(47) As String
For k = 1 To Len(cipher)
    r0tate = Right(cipher, k) & Mid(cipher, 1, Len(cipher) - k)
        For i = 1 To Len(cipher)
            x = InStr(1, alpha, Mid(r0tate, i, 1), vbBinaryCompare)
            If Len(x) = 1 Then
                x = "0" & x
                blocks(k - 1) = blocks(k - 1) & x
            Else
                blocks(k - 1) = blocks(k - 1) & x
            End If
        Next
Next
Dim cycle As String, j As Integer, decipher As String
For i = 1 To Len(alpha)
    cycle = Right(alpha, i) & Mid(alpha, 1, Len(alpha) - i)
    For k = 0 To (Len(cipher) - 1)
        For j = 1 To Len(cipher)
            decipher = decipher & Mid(cycle, (Mid(blocks(k), (2 * j - 1), 2)), 1)
        Next
    List1.AddItem decipher
    decipher = ""
    Next
Next
'--------- now filter if you know any combination in the deciphered strings
'--------- else, you have to go all over the list of the Caesar deciphered possibilities
'
'For i = 0 To List1.ListCount
'    x = InStr(1, List1.List(i), "whats", vbBinaryCompare)
'   If x > 0 Then
'        Form2.List1.AddItem List1.List(i)
'    End If
'Next
'Form2.Show 1
End Sub

Private Sub List1_Click()
' could be reversed! so we can too take alook backwards
If Check1.Value = 1 Then
    Text1.Text = StrReverse(List1.Text)
Else
    Text1.Text = List1.Text
End If
End Sub

تم تعديل هذه المشاركة بواسطة Xacker في 27 أكتوبر 2005 في 22:45

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5

المسالتين البقيات مللوني وانا حاول اعرف شو الاحرف الاكثر استخداما وشو ممكن يتطابق معهم بس ما وصلت لجمل مفيدة.. المسالتين بقدر حلهم بطريقة الـ bruteforce لكنها مجهدة جدا جدا جدا وسيصل عدد خيارات المسالة الاولى وحدها الى الرقم: 1222 اما الثانية 7396 وهذا امر لا ارغب فيه لاني ساضطر للبحث عن الرسالة الصحيحة ضمن كل هذه الخيارات الا.. الا اذا حصلت على كلمة صحيحة من الجملة المشفرة لان الـ bruter اللي كتبته بيجرب كل الخيارات الممكنة يعني الحرف الواحد بيتوضع ضمن 47 - 86 خانة بشكل افقي وعمودي وبيعمل فلترة بالاخير على الناتج :rolleyes:

ارجو اعطائي hint اخر :P

تم تعديل هذه المشاركة بواسطة Xacker في 29 أكتوبر 2005 في 07:51

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

كنت أظن الجمل عربية :s

الأولى حلها أخي Xacker

والثانية سأتركها لكم :D

والثالثة هاهي:

اقتباس
jmjmj gsmsg lrjgu csqyj quflr mfajq erdmc cmqlv lqyhg gawgq arpgq sblce jrlrj lnmec cyjqu flrmf ajqer d

Papa potatoes poultry prunes and prism are all very good words for the lips especially prunes and prism
d4baa0.gif
#7

لو الجمل عربية يا D كان ظهر حروف عربية.. الا ان كان البرنامج رح يعمل لفة تانية على الحروف الانكليزية :P

بالنسبة للجملة التالتة هل اعتمدت على مبدا الـ columnar؟ انا ارى ان الـ transposition لم يستخدم بل الـ substituation

تم تعديل هذه المشاركة بواسطة Xacker في 29 أكتوبر 2005 في 15:48

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8
2.gif

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9

ماشاء الله عليك يا أخ Xacker

للمعلومية المسألة الأولى مأخوذة من مسرحية شكسبير "روميو و جوليت"....

ولو عملت إزاحة للحروف 17 مرة بحيث تجعل F يساوي W...

تجد الناتج:

whats inana mearo sebya nyoth ernam ewoul dsmel lassw ett ==> 17

“what's in a name a rose by anyother name would smell as swett”

طبعا لحلها ببرنامج : فمثلما فعل صديقنا استخدم brute force ومعناها أن يجرب كل الاحتمالات عليها حتى تنكسر

لكن في الحقيقة هي مشفرة بطريقة القيصر وهي الإزاحة عدد معين من المرات

وهذا الكود:

static void Caesar (string s)
{
Console.WriteLine("Starting Caesar Encryption Method....");
	for(int j=1; j<=26; j++ )
	{
  string print = "";
  foreach(char i in s)
  {
 	 if( i !=' ')
 	 {
    if( (i+j)<='z' )
    {
   	 print +=(char)(i+j);
    }
    else
    {
   	 print += (char) (((i+j)-'z')+'a'-1);
    }
 	 }
 	 else
    print += " ";
  }
  Console.WriteLine( print+" ==> "+j);
}
Console.WriteLine("End of Ceaser Encryption Method....");
Console.Read();
}

المسألة الثانية: تقريبا نفس الفكرة

ولكن هذه المرة بحيلة ذكية وهنا تستطيع التغلب على الـbrute force...لأنها خوارزمية قيصر معكوسة

وهذا العكس ليس مباشر بل يتم العكس في الاستبدال 18 مرة.!!!

عندي كود كتبته لكي أحلها ولو جربت الكود على حروف الابجدية يتضح الأمر

static void CaesarReversed(string s)
{
Console.WriteLine("Starting Reversed Caesar Encryption Method....");
	for(int j=1; j<=26; j++ )
	{
  string print = "";
  foreach(char i in s)
  {
 	 if( i !=' ')
 	 {
    int temp = (int)( ('z'-j-i+1)+'a' ); 
    if( temp >= (int)'a' && temp <=(int)'z' )
    {
   	 print +=(char)temp;
    }
    else
    {
   	 print += (char)(temp + 26);
    }
 	 }
 	 else
    print += " ";
  }
  Console.WriteLine( print+" ==> "+j );
	}
Console.WriteLine("End of Reversed Caesar Encryption Method....");
Console.Read();
}

بالنسبة للسؤال الثالث سأتركه حتى يعجز الجميع

ثم نعلن الحل....

أما مسألة العربي فهي شاقة لأننا نجرب الآن في الآسكي ونحن نرى المسألة صعبة والاحتمالات كثيرة

فما بالك لو انتقلنا إلى اليونيكود..!!!

لا حظ ان المدة التي يحتاجها الـbrute force لحل أصعب مسألة هي 11 سنة تقريبا....

وهي أن يكون كل الحروف عبارة عن Z أو آخر حرف يصل إليه...

بالتوفيق

ولدي طلب صغير: أنا أكتب من جهاز عام هذه الأيام لأني مسافر وفي إجازة

لذا أرجو أن يقوم أحد بتشغيل الأكواد على المثالين وعلى الأبجدية كذلك

ووضعها في الردلكي يتضح المفهوم أكثر...(الكود مكتوب بالسي شارب)

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

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

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#10

أناآسف لم أر حل السؤال الثالث

الذي قدمه أخونا DeltaAziz

وبالتالي تقفل الجلسة

و احاول ان اكتب درس يشرح فيه الأمور

وشكرا لأنكم شغلتم أمخاخكم...

أنا جلس ساعات أخبط رأسي فكل جدران الغرفة لكي أحلها...

هههههههه

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

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

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#11

لتوضيح السؤال الثالث: عوض عن كل حرف من المفتاح بالأبجدية

ومن ثم اكمال التعويض بدون تكرار...

يعني:

M o n a l p h b e t I c d f g j k q r s u v w x y z

A b c d e f g h I j k l m n o p q r s t u v w x y z

و بالتالي jmjm تعني papa

ok!!

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

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

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#12

Aha! :D وانا كنت قاعد اعمل colmnar واشيل واقسم واعوض واحط :P طلع الامر مجرد substitution.. اللي خدعني هو انك وضعته بالصيغة monalphbetic يعني حاولت ما تكرر نفس الحروف عشان هيك اعتقدت انها خاصة بالرصف .. على كل.. انا رح شوف اكواد الـ C وطبقها اسمبلي .. اسرع :P

تم تعديل هذه المشاركة بواسطة Xacker في 30 أكتوبر 2005 في 06:44

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#13
Xacker كتب:
لو الجمل عربية يا D كان ظهر حروف عربية.. الا ان كان البرنامج رح يعمل لفة تانية على الحروف الانكليزية :P

يمكن إختيار طريقة تشفير بسيطة بحيث تظهر الجمل العربية بعد التشفير إنجليزية

من دون Unicode معضم الحروف العربية في Ascii كودها أكبر من 127

d4baa0.gif
#14
اقتباس
الا ان كان البرنامج رح يعمل لفة تانية على الحروف الانكليزية
=! rotate

تم تعديل هذه المشاركة بواسطة Xacker في 31 أكتوبر 2005 في 02:07

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…