مرحله 1 بازی رمزگشایی

آموزش وب ، بازی تحت وب ، هک و امنیت ،
130 بازدید
مرحله 1 بازی رمزگشایی
آموزش رد شدن از مرحله ی 1 بازی رمزگشایی (unobfuscation game)

در مطلبی ، خبر انتشار بازی رمزگشایی را به کاربران دادم. گفتم که این بازی ، مربوط به برنامه نویسی و امنیت است. قرار بود در مورد آن آموزش هایی قرار دهم تا افراد مبتدی هم بتوانند آن را بازی کنند. امروز در این مطلب می خواهم در مورد مرحله ای اول این بازی توضیحاتی بدهم و روش بردن مرحله ی اول را توضیح دهم.

برای ورود به بازی روی لینک زیر کلیک کنید:

بازی رمزگشایی

مرحله ی یک بازی رمزگشایی

من در بازی عضو شدم و این مرحله را باز کردم. این مرحله 10 امتیاز دارد و آسان به حساب می آید. رمز مبهمی که برای من نمایش داده شده است ، عبارت زیر است:

<<<code>>>

32VE1e8n

<<</code>>>

می خواهیم با استفاده از چند مثال و کمی کدنویسی جاوا اسکریپت یا C# (در فضای کنسول) به رمز اولیه دست پیدا کنیم. در هر جا که برنامه نویسی لازم باشد من به هر دو زبان برنامه نویسی توضیح می دهم. (برای آشنایی با سی شارپ می توانید از این لینک استفاده کنید)

خب! باید از فرم بالایی استفاده کنیم تا بتوانیم به الگوریتم رمزگذاری پی ببریم. بیایید با هم چند کاراکتر و عبارت را آزمایش کنیم تا ببینیم چگونه توسط فرم بالایی مبهم می شوند. من 123 را وارد کردم و 234 نمایش داده شد. یک بار دیگر abc را وارد کردم و bcd را دریافت کردم. حال بیایید عدد کاراکتر هایی که وارد کرده ایم را بفهمیم: (کد کاراکتر چیست؟)

<<<code>>>

/* javascript: */

"123".charCodeAt(0); // 1 => 49

"123".charCodeAt(1); // 2 => 50

"123".charCodeAt(2); // 3 => 51

/* C# */

byte[] asciiBytes = Encoding.ASCII.GetBytes("123"); // array => [49, 50, 51]

<<</code>>>

به دست آوردن الگوریتم رمزگذاری

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

<<<code>>>

/* javascript */

"234".charCodeAt(0); // 2 => 50

"234".charCodeAt(1); // 3 => 51

"234".charCodeAt(2); // 4 => 52

/* C# */

byte[] asciiBytes = Encoding.ASCII.GetBytes("234"); // array => [50, 51, 52]

<<</code>>>

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

توجه: شاید بگویید که می توانستیم بدون کد نویسی هم این موضوع را متوجه بشویم ، اما باید توجه کنید که همین حروف اعداد نیستند که باید که باید رمزگشایی شوند. گاهی اوقات کاراکتر های خاصی مانند ! ، ؟ و ... وارد کار می شوند که تنها راه استفاده از برنامه نویسی است.

برنامه ی رمزگشایی

حال می توانیم به این شکل ، رمز خود را رمزگشایی کنیم:

<<<code>>>

/* javascript */

var mypassword = "32VE1e8n",

   unobfuscated = "";

for( var n in mypassword )

{

   var charCode = mypassword.charCodeAt(n);

   charCode--;

   unobfuscated += String.fromCharCode(charCode);

}

alert(unobfuscated);

 

/* C# */

string mypassword = "1234asdf";

byte[] chars = Encoding.ASCII.GetBytes(mypassword);

string unobfuscated = "";

foreach( byte charCode in chars )

{

   int newcharCode = charCode - 1;

   char character = (char)newcharCode;

   unobfuscated += character.ToString();

}

Console.WriteLine(unobfuscate);

Console.ReadKey();

<<</code>>>

خب! نتیجه ای که به دست می آید 21UD0d7m است. ما توانستیم یک مرحله را رمزگشایی کنیم. عینک

تمام مراحل به همین شکل است. کدی از کاراکتر ها را باید به دست آورد و نتیجه گرفت که چه عمل ریاضیاتی یا بیتی ای روی آن انجام شده است تا عکس همان را انجام دهیم و به رمز اصلی دست پیدا کنیم. باید توجه کرد که این کار کمی هم به هوش بستگی دارد و شما باید با ذکاوت خود بتوانید مراحل را پشت سر بگذارید.

رمز تمام فایل های فشرده
رمز فایل فشرده است.