加密_easy_crypto


題目鏈接:https://ctf.bugku.com/challenges

題解:

打開題目,觀察這一串數組,發現每一組都是由0和1組成,且長短不一;找到了mrose和ascii的對應表,mrose和ascii對應表鏈接:https://pan.baidu.com/s/1qaE5AjcORTBrI_In6TNaSw

雖然原理倒是懂了,可是不可能一個一個的進行對比啊,太浪費時間咯。因此,無聊至極,寫了一個c#代碼進行轉換,話不多說,源代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string oldstr;
            oldstr = Console.ReadLine();
            string []str = oldstr.Split(' ');
            for (int i = 0; i < str.Length; i++)
            {
                switch (str[i])
                {
                    case "01":
                        Console.Write("A"); break;
                    case "1000":
                        Console.Write("B"); break;
                    case "1010":
                        Console.Write("C"); break;
                    case "100":
                        Console.Write("D"); break;
                    case "0":
                        Console.Write("E"); break;
                    case "0010":
                        Console.Write("F"); break;
                    case "110":
                        Console.Write("G"); break;
                    case "0000":
                        Console.Write("H"); break;
                    case "00":
                        Console.Write("I"); break;
                    case "0111":
                        Console.Write("J"); break;
                    case "101":
                        Console.Write("K"); break;
                    case "0100":
                        Console.Write("L"); break;
                    case "11":
                        Console.Write("M"); break;
                    case "10":
                        Console.Write("N"); break;
                    case "111":
                        Console.Write("O"); break;
                    case "0110":
                        Console.Write("P"); break;
                    case "1101":
                        Console.Write("Q"); break;
                    case "010":
                        Console.Write("R"); break;
                    case "000":
                        Console.Write("S"); break;
                    case "1":
                        Console.Write("T"); break;
                    case "001":
                        Console.Write("U"); break;
                    case "0001":
                        Console.Write("V"); break;
                    case "011":
                        Console.Write("W"); break;
                    case "1001":
                        Console.Write("X"); break;
                    case "1011":
                        Console.Write("Y"); break;
                    case "1100":
                        Console.Write("Z"); break;

                    case "01111":
                        Console.Write("1"); break;
                    case "00111":
                        Console.Write("2"); break;
                    case "00011":
                        Console.Write("3"); break;
                    case "00001":
                        Console.Write("4"); break;
                    case "00000":
                        Console.Write("5"); break;
                    case "10000":
                        Console.Write("6"); break;
                    case "11000":
                        Console.Write("7"); break;
                    case "11100":
                        Console.Write("8"); break;
                    case "11110":
                        Console.Write("9"); break;
                    case "11111":
                        Console.Write("0"); break;

                    case "001100":
                        Console.Write("?"); break;
                    case "10010":
                        Console.Write("/"); break;
                    case "100001":
                        Console.Write("-"); break;
                    case "010101":
                        Console.Write("."); break;
                    case "110011":
                        Console.Write(","); break;
                    case "011010":
                        Console.Write("@"); break;
                    case "111000":
                        Console.Write(":"); break;
                    case "101010":
                        Console.Write(";"); break;
                    case "10001":
                        Console.Write("="); break;
                    case "011110":
                        Console.Write("'"); break;
                    case "101011":
                        Console.Write("!"); break;
                    case "001101":
                        Console.Write("_"); break;
                    case "010010":
                        Console.Write("\""); break;
                    case "10110":
                        Console.Write("("); break;
                    case "101101":
                        Console.Write(")"); break;
                    case "0001001":
                        Console.Write("$"); break;
                    case "01000":
                        Console.Write("&"); break;
                }
            }
        }
    }
}

跑下代碼,運行結果如下:

得到:

FLAGM0RSE_CODE_1S_INTEREST1N9!

但是問題來了,提交flag為  FLAG{M0RSE_CODE_1S_INTEREST1N9!}  時不正確,可能是因為要求答案為小寫吧,於是修改flag為小寫,注意其中有字符“1”、“0”、“9”,不要與字母弄混了喲

所以本題flag:

flag{m0rse_code_1s_interest1n9!}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM