[C#] un algoritmo que cambiase las letras de mi host

Iniciado por KiddKeo, 14 Enero 2017, 20:23 PM

0 Miembros y 1 Visitante están viendo este tema.

KiddKeo

Hola, buenas tardes gente, no sabia en que zona postear esto, os comento mi problema.
Estuve intentado hacer un algoritmo que cambiase las letras de mi host para que en el caso de que me lo decompilasen no tuvieran mi host.
Asi que hice este codigo:
Código (csharp) [Seleccionar]
namespace Platinum {
   public static class encoding
   {
       public static string decrypt(string Palabra, uint Key)
       {
           int num2;
           int length = Palabra.Length;
           char[] chArray = new char[length];
           for (int i = 0; i < length; i = num2 + 1)
           {
               int num4 = Palabra[i];
               chArray[i] = (char)(num4 - Key);
               num2 = i;
           }
           return string.Concat<char>(chArray);
       }

       public static string encrypt(string Palabra, uint Key)
       {
           int num2;
           int length = Palabra.Length;
           char[] chArray = new char[length];
           for (int i = 0; i < length; i = num2 + 1)
           {
               int num4 = Palabra[i];
               chArray[i] = (char)(num4 + Key);
               num2 = i;
           }
           return string.Concat<char>(chArray);
       }
   }
}

Después a lo que queria ofuscar le añadia encoding.decrypt("Texto");
pero la cosa sigue sin funcionar :S estoy empezando en esto asi que si veis algo raro por favor ayudame! :)
Grácias




· Los códigos deben ir en etiquetas GeSHi
· Los temas deben ir en su subforo, C# es .NET
· Los titulos deben ser descriptivos
>Lee las reglas
-Engel Lex

engel lex

CitarEstuve intentado hacer un algoritmo que cambiase las letras de mi host para que en el caso de que me lo decompilasen no tuvieran mi host


"oscuridad no es seguridad"

si te descompilan el programa igual obtendrán el algoritmo que revela tu host, solo tendrán que usarlo para revelarlo al igual que tu programa lo tiene que hace para usarlo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

Si en la plicación, te conectas a tu host, podrán ver esa conexión, no tiene sentido ocultarla. Todo lo que salga de la aplicación, será visible. En caso de que sea una conexión cifrada, como HTTPS, el Host y la IP lo seguirán pudiendo ver.

Eleкtro

#3
Hola.

1. Como ya te han comentado, si realizas una conexión será visible, no solo mediante la decompilación del código de tu ensamblado, sino con cualquier monitor de conexiones entrantes/salientes, así que no tiene sentido ocultarla, por que a lo segundo no podrás ocultarle esa información (o al menos estoy casi seguro al 99% de que no, tampoco pongo la mano en el fuego pero creo que no se puede eludir que el S.O intercepte/notifique las conexiones salientes de tu dispositivo de red, vaya xD).

2. En el caso de que aún siendo cosnciente de esta información sigas deseando intentar ocultar la información en el código fuente como una forma de protección adicional para prevenir que lo puedan ver ciertos "intrusos" con un nivel de conocimiento básico/medio, pues a mi personálmente no me parece una mala idea, siempre viene bien cualquier tipo de protección aunque no sea infalible, pero entonces deberías utilizar un software profesional de ofuscación/cifrado para ensamblados .NET, tu mejor opción gratuita es ConfuserEx, pero yo te recomiendo que optases por la herramienta SmartAssembly de RedGate, que añade muchos más sofisticados niveles de protección de forma profesional.




Citarestoy empezando en esto asi que si veis algo raro por favor ayudame

El mejor consejo que te puedo dar es el siguiente:
Una persona, ya sea programador de .NET novato o avanzado, debería ser consciente de que está utilizando el framework más completo actualmente en el mundo de la programación, .NET Framework, y por ese motivo en lo respecto a cosas básicas (y no tan básicas) no le va a faltar de nada, no es necesario recurrir a copy&pastes de códigos home-made de terceros ni tampoco tratar de implementar nuestros propios algoritmos por que en la mayoría de ocasiones lo que estaremos haciendo es reinventar la rueda sin darnos cuenta, puesto que la librería de classes de .NET ya nos facilita la mayoría de todas esas y otras tareas complejas, así que se debe intentar siempre buscar una solución built-in y evitar los códigos "caseros"... aunque por otro lado claro está que las librerías de .NET Framework no cubren al 100% todas las necesidades que el programador pueda tener y en muchas ocasiones uno se verá obligado sin más remedio a implementar sus propios algoritmos (criptográficos, o de lo que sean), pero antes de rendirse y optar por esos medios, seguir buscando dentro de las librerías de .NET hasta encontrar lo que nos hace falta...

Por ejemplo, antes que ponerte a implementar algoritmos aleatorios caseros de cifrado básico de strings, tienes a tu disposición las classes criptográficas que forman parte de la librería de classes de .NET Framework en el namespace System.Security.Cryptography, como por ejemplo la class RijndaelManaged, AES, TripleDES, y una infinidad de proveedores de hashing, no necesitas más.

Aparte de los miembros ya mencionados, también tienes a tu disposición la class System.Security.SecureString, la cual es tan sencilla de usar como la class StringBuilder, y esta metodología añade un nivel adicional de seguridad a un string mediante su cifrado en un bloque de memoria no administrada, y el valor real solo puede ser accesible al cracker si uno sabe al 100% lo que hace al inspeccionar el código IL en la descompilación.

Un saludo!