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);
}
}
}










Autor


En línea




