Feedback

C# - String to char Tarnung

Veröffentlicht von am 26.10.2011
(2 Bewertungen)
Das ist ein Hilfs code für "Geheime" string.

Ich verwende ihn um den inhalt der String auf den ersten Blick unleserlich zu machen. Wenn der String bei Programmstart schon gefüllt ist.

z.b. Dateinamen, Web Addr usw..
z.b. dotnet-snippets.de würde so ausschaun:

((char)100).ToString() + ((char)111).ToString() + ((char)116).ToString() + ((char)110).ToString() + ((char)101).ToString() + ((char)116).ToString() + ((char)45).ToString() + ((char)115).ToString() + ((char)110).ToString() + ((char)105).ToString() + ((char)112).ToString() + ((char)112).ToString() + ((char)101).ToString() + ((char)116).ToString() + ((char)115).ToString() + ((char)46).ToString() + ((char)100).ToString() + ((char)101).ToString();


Snippet in VB übersetzen
private string String_Coderierung(string Str_DatenInput)
        {
            //####################################################
            // Locale Variablen
            string[] Str_Arry_Daten = new string[2];
            int int_Datenlange = 0;
            StringBuilder StringBuilder_DatenOutPut = new StringBuilder(string.Empty);
            //####################################################
            if (!string.IsNullOrEmpty(Str_DatenInput))
            {
                for (int i = 0; i < Str_DatenInput.Length; i++)
                {
                    StringBuilder_DatenOutPut.AppendFormat("((char){0}).ToString() + ", Encoding.ASCII.GetBytes(Str_DatenInput.Substring(i, 1))[0]);
                    int_Datenlange = (StringBuilder_DatenOutPut.ToString().Length-3);
                    Str_Arry_Daten[0] = (StringBuilder_DatenOutPut.ToString().Substring(0, int_Datenlange));
                    Str_Arry_Daten[1] = Str_Arry_Daten[0] + ";";
                }
            }
            return Str_Arry_Daten[1];
        }

Abgelegt unter String, Char, ascii, .

7 Kommentare zum Snippet

hackman schrieb am 27.10.2011:
lol, und schau mal was der decompiler draus macht:


string s = string.Concat(new string[]
{
'd'.ToString(),
'o'.ToString(),
't'.ToString(),
'n'.ToString(),
'e'.ToString(),
't'.ToString(),
'-'.ToString(),
's'.ToString(),
'n'.ToString(),
'i'.ToString(),
'p'.ToString(),
'p'.ToString(),
'e'.ToString(),
't'.ToString(),
's'.ToString(),
'.'.ToString(),
'd'.ToString(),
'e'.ToString()
});

O.G. schrieb am 28.10.2011:
Äm ich glaub du hat den Sinn des Strings nicht kapiert,
des ist für den fall das einer die Anwendung Decompilier.
Dann soll die Person nicht alles auf die Nase gedrückt werden.

Ach ja was hab ich oben geschrieben?

z.b. dotnet-snippets.de würde so ausschaun:

((char)100).ToString() + ((char)111).ToString() + ((char)116).ToString() + ((char)110).ToString() + ((char)101).ToString() + ((char)116).ToString() + ((char)45).ToString() + ((char)115).ToString() + ((char)110).ToString() + ((char)105).ToString() + ((char)112).ToString() + ((char)112).ToString() + ((char)101).ToString() + ((char)116).ToString() + ((char)115).ToString() + ((char)46).ToString() + ((char)100).ToString() + ((char)101).ToString();

Es wäre ja schwachsinn wenn da nur müll raus kommt ?
spezi schrieb am 29.10.2011:
@OG: Aber wenn das einer dekompiliert, bekommt er den string so zu sehen wie es hackman geschrieben hat. Ich nehme an, der Compiler wandelt dein "(char)100" z.B. direkt in 'd' um, sodass dein toller zusammengebastelter Geheimstring wirkungslos ist. So schlau, alle Buchstaben zu einem Wort zu verbinden, wird so jemand schon sein ;)
O.G. schrieb am 30.10.2011:
Ich muss mich Entschuldigung,
Ihr hattet recht. Der Compiler wandelt das gleich um bei c++borland builder war es nicht der fall, da wurde wenn man es decompiliert nur der Code angezeigt.
Na ja wider was gelernt.
Ich dachte dass es bei c# auch so ist und beim decompiler es dann so ausschaut:
.... ((char)100).ToString() + ((char)101).ToString();


Marcus schrieb am 03.11.2011:
Die for-Schleife finde ich ein kleines bisschen umständlich und wieso der Array? damit das " + " entfernt wird?...

Mein vorschlag:

for (int i = 0; i < Str_DatenInput.Length; i++)
{
StringBuilder_DatenOutPut.AppendFormat("((char){0}).ToString() + ", Encoding.ASCII.GetBytes(Str_DatenInput[i])[0];
}

...

return StringBuilder_DatenOutPut.ToString().TrimEnd(' ', '+');


Fawk_18 schrieb am 14.02.2012:
Ich finde es vollkommen sinnfrei einen string im Quell Code zu Krypten.
Eine einfachere Möglichkeit gar nicht mehr an die Daten heran zu kommen ist eine Obfuskierung des Quell Codes. Alles andere ist eine ver(schlimm)besserung des Quell Codes und es macht es unleserlich für den Programmierer ansich.

Lg Fawk_18
Koopakiller schrieb am 01.07.2013:
@Fawk 18
selbst eine obfuskierung sichert den Quellcode nicht. Wer die Daten haben will, findet diese auch im Quellcode.
 

Logge dich ein, um hier zu kommentieren!