2011-08-20 9 views
153

Staram się "rozszyfrować" to następujący ciąg Base64:Jak mogę dekodować ciągi kodowane base64?

OBFZDTcPCxlCKhdXCQ0kMQhKPh9uIgYIAQxALBtZAwUeOzcdcUEeW0dMO1kbPElWCV1ISFFKZ0kdWFlLAURPZhEFQVseXVtPOUUICVhMAzcfZ14AVEdIVVgfAUIBWVpOUlAeaUVMXFlKIy9rGUN0VF08Oz1POxFfTCcVFw1LMQNbBQYWAQ ==

To co wiem na temat samego napisu:

  1. Oryginalny ciąg jest najpierw przeszedł następujący kod:

    private static string m000493(string p0, string p1) 
    { 
        StringBuilder builder = new StringBuilder(p0); 
        StringBuilder builder2 = new StringBuilder(p1); 
        StringBuilder builder3 = new StringBuilder(p0.Length); 
        int num = 0; 
    Label_0084: 
        while (num < builder.Length) 
        { 
         int num2 = 0; 
         while (num2 < p1.Length) 
         { 
          if ((num == builder.Length) || (num2 == builder2.Length)) 
          { 
           MessageBox.Show("EH?"); 
           goto Label_0084; 
          } 
          char ch = builder[num]; 
          char ch2 = builder2[num2]; 
          ch = (char)(ch^ch2); 
          builder3.Append(ch); 
          num2++; 
          num++; 
         } 
        } 
        return m0001cd(builder3.ToString()); 
    } 
    

    Część p1 w kodzie ma być ciągiem "_p0lizei.".

  2. To jest następnie przetwarzany na ciąg Base64 za pomocą następującego kodu:

    private static string m0001cd(string p0) 
    { 
        string str2; 
        try 
        { 
         byte[] buffer = new byte[p0.Length]; 
         str2 = Convert.ToBase64String(Encoding.UTF8.GetBytes(p0)); 
        } 
        catch (Exception exception) 
        { 
         throw new Exception("Error in base64Encode" + exception.Message); 
        } 
        return str2; 
    } 
    

Pytanie brzmi, jak mogę rozszyfrować ciąg Base64 tak, że mogę dowiedzieć się, co oryginalny ciąg jest ?

+0

Wiem, że "Dlaczego" jest ogólnie nieistotne w przypadku wspierania starszych rzeczy, ale muszę wiedzieć ... Dlaczego pierwotny ciąg Base64 był kodowany w pierwszej kolejności?!? Base64 jest zwykle używany do konwertowania binarnego na przenośną wersję tekstową do osadzania w XML lub JSON - ewentualnie do poruszania się po warstwie usługi sieciowej, a nie do przekształcania łańcucha w zakodowany ciąg. – barrypicker

Odpowiedz

422

Proste:

byte[] data = Convert.FromBase64String(encodedString); 
string decodedString = Encoding.UTF8.GetString(data); 
+9

Aby ukończyć tę odpowiedź, Jerry Nixon ma na ten temat [wielki post] (http://blog.jerrynixon.com/2014/11/reading-andwriting64-in-windows.html). – orad

51

Sposób m000493 wydaje się wykonać jakieś szyfrowanie XOR. Oznacza to, że ta sama metoda może być używana zarówno do szyfrowania, jak i deszyfrowania tekstu. Wszystko co musisz zrobić, to odwrotna m0001cd:

string p0 = Encoding.UTF8.GetString(Convert.FromBase64String("OBFZDT...")); 

string result = m000493(p0, "_p0lizei."); 
// result == "gaia^unplugged^Ta..." 

z return m0001cd(builder3.ToString()); zmieniona na return builder3.ToString();.

+0

Dziękuję, to była po prostu odpowiedź, której szukałem. Byłem blisko ciągnięcia za włosy: p – Rickard

+31

@Rickard: Możesz "zaakceptować" odpowiedź, która rozwiązuje twój problem, klikając znacznik wyboru obok odpowiedzi po lewej stronie. – dtb

+2

Zaakceptuj to, minęło 5 i pół roku! – Mardoxx