elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 18:44  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado
| | |-+  Hacking Básico (Moderadores: zhyzura, kamsky, TRICKY)
| | | |-+  Alguien me podria explicar esto.... por favor?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alguien me podria explicar esto.... por favor?  (Leído 1,735 veces)
KalmeniduS

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Alguien me podria explicar esto.... por favor?
« en: 2 Noviembre 2009, 14:44 »

Que tal, sigo aprendiendo con netcat.

Aca " http://foro.elhacker.net/hacking_avanzado/paper_obtener_shell_con_netcat-t58032.150.html   "  vi un codigo y me gustaria saber de que se trata, que lenguage es, para que sirve, como se ejecuta, cualquier cosa que me pueda guiar un poco. Estoy estudiando programacion de aplicaciones WEB y estoy por empezar Analista programador, asi que me gustaria empaparme del tema.

//-----------------------------------------------------------------------------
// registroWindowsInicioCS                                          (04/Feb/04)
// Poner nuestra aplicación en el registro para que se inicie automáticamente
// también se comprobará si ya está y cómo quitarla.
//
// ©Guillermo 'guille' Som, 2004
//-----------------------------------------------------------------------------
using System;
using Microsoft.Win32;

class Class1
{
    ///
    /// Punto de entrada principal de la aplicación.
    ///
    [STAThread]
    static void Main(string[] args)
    {
        // En la línea de comandos se indicará la clave y el valor
        // El valor será el "path" completo de la aplicación
        // que queremos incluir en el registro dentro de la clave indicada
        // En el primer parámetro indicaremos la acción a realizar:
        // /A    Añadir o modificar una clave
        // /E    Eliminar la clave indicada
        // /R    Recuperar el valor de la clave indicada, también se puede usar /M
        // Recuerda que en este código siempre se manejará la clave Run:
        // HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
        //
        string msg = String.Format("Para usar esta aplicación debes indicar:{0}" +
                            "Para añadir o modificar: /A clave path{0}" +
                            "Para eliminar:           /E clave{0}" +
                            "Para mostrar el valor:   /R clave o /M clave",'\n');
        if( args.Length < 2 ){
            Console.WriteLine(msg);
            return;
        }
        //
        string nombre = args[1];
        switch(args[0].ToUpper()){
            case "/A": case "-A":
                // si hay menos de tres argumentos
                // es que no se ha indicado el último parámetro
                if( args.Length < 3 ){
                    Console.WriteLine(msg);
          break;
                }
                string valor = args[2];
                if( ponerEnInicio(nombre, valor) ){
                    Console.WriteLine("Se añadió / modificó correctamente la clave...");
                }
                break;
            case "/E": case "-E":
                if( quitarDeInicio(nombre) ){
                    Console.WriteLine("Se quitó correctamente la clave...");
                }
                break;       
            case "/R": case "-R":
            case "/M": case "-M":
                Console.WriteLine(comprobarEnInicio(nombre));
            break;
        }
    }
    //
    static private bool  ponerEnInicio(string  nombreClave, string  nombreApp)
    {
        // Resgistrará en Inicio del registro la aplicación indicada
        // Devuelve True si todo fue bien, False en caso contrario
        //
        // Guardar la clave en el registro
        // HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
        try
        {
            RegistryKey runK = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
            // añadirlo al registro
            // Si el path contiene espacios se debería incluir entre comillas dobles
            if( nombreApp.StartsWith("\"") == false && nombreApp.IndexOf(" ") > -1 )
            {
                nombreApp = "\"" + nombreApp + "\"";
            }
            runK.SetValue(nombreClave, nombreApp);
            return true;
        }
        catch(Exception ex )
        {
            Console.WriteLine("ERROR al guardar en el registro.{0}Seguramente no tienes privilegios suficientes.{0}{1}{0}---xxx---{2}", '\n', ex.Message, ex.StackTrace);
            return false;
        }
    }
    //
    static private bool quitarDeInicio(string nombreClave)
    {
        // Quitará de Inicio la aplicación indicada
        // Devuelve True si todo fue bien, False en caso contrario
        // Si la aplicación no estaba en Inicio, devuelve True salvo que se produzca un error
        //
        try
        {
            RegistryKey runK = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
            // quitar la clave indicada del registo
            runK.DeleteValue(nombreClave, false);
            return true;
        }
        catch(Exception ex )
        {
            Console.WriteLine("ERROR al eliminar la clave del registro.{0}Seguramente no tienes privilegios suficientes.{0}{1}{0}---xxx---{2}", '\n', ex.Message, ex.StackTrace);
            return false;
        }
        //
    }
    //
    static private string comprobarEnInicio(string nombreClave)
    {
        // Comprobará si la clave indicada está asignada en Inicio
        // en caso de ser así devolverá el contenido,
        // en caso contrario devolverá una cadena vacia
        // Si se produce un error, se devolverá la cadena de error
        try
        {
            RegistryKey runK = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", false);
            // comprobar si está
            return runK.GetValue(nombreClave, "").ToString();
        }
        catch(Exception ex )
        {
            return String.Format("ERROR al leer el valor de la clave del registro.{0}Seguramente no tienes privilegios suficientes.{0}{1}{0}---xxx---{2}", '\n', ex.Message, ex.StackTrace);
        }
    }
}


En línea
anarquistadel89

Desconectado Desconectado

Mensajes: 158



Ver Perfil
Re: Alguien me podria explicar esto.... por favor?
« Respuesta #1 en: 2 Noviembre 2009, 19:34 »

Esta escrito en C#, para ejecutarlo tendrás que compilarlo (Visual C# Express) y te generara un ejecutable.

Lo que hace y para que sirve esta en las primeras lineas del codigo

// Poner nuestra aplicación en el registro para que se inicie automáticamente
// también se comprobará si ya está y cómo quitarla.
En línea

KalmeniduS

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Alguien me podria explicar esto.... por favor?
« Respuesta #2 en: 4 Noviembre 2009, 20:03 »


OK, buenisimo, gracias.

// Poner "nuestra aplicación" en el registro para que se inicie automáticamente

Poner... que aplicacion?

Y es como un exploit, se hace remotamente desde otro equipo?

Que diferencias tiene con C o C++?, es mas antiguo?

Gracias por contestar, perdon por las preguntontas, es que soy bastante ignorante en el tema
En línea
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Alguien me podria explicar esto.... por favor?
« Respuesta #3 en: 4 Noviembre 2009, 20:10 »

Eso esta en el post de netcat, y sirve para agregar "nuestra aplicación" (netcat) a los programas que inician con windows, más que leer el código, lo "sobrevolé", pero básicamente crea una llave de registro para que inicie con Win.

C# o CSharp .. es posterior a C/C++, no más antiguo, se puede decir que es de lo último de Microsoft

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguien me podria explicar el acumulador en c++?
Programación C/C++
kesox 2 2,327 Último mensaje 5 Diciembre 2010, 04:24
por Leo Gutiérrez.
Alguien me puede explicar esto del Array?
Programación Visual Basic
SixToex (Agares) 13 993 Último mensaje 15 Julio 2011, 16:40
por SixToex (Agares)
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines