Activar IP fordwarding en Windows

Iniciado por Kaxperday, 9 Septiembre 2015, 20:06 PM

0 Miembros y 2 Visitantes están viendo este tema.

Kaxperday

Hola a todos, estuve leyendo como hacerlo y era posible modificando una clave en el registro, y poniendola a "1" con los correspondientes permisos de admin, pero desconozco como funcionan eso de las claves y modificar sus valores, esto es lo que tengo, y no funciona:

Código (cpp) [Seleccionar]
bool establece_forwarding(bool modo){
HKEY key;
if (RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"), &key) == ERROR_SUCCESS){
if (RegSetValueEx(key, TEXT("IPEnableRouter"), 1, REG_SZ, (LPBYTE)"0x00000001", strlen("value_data")*sizeof(char)) != ERROR_SUCCESS)
{
RegCloseKey(key);
cout << "Unable to set registry value value_name";
}
else
{
cout << "value_name was set" << endl;
}
RegCloseKey(key);
}
return false;
}


También aparte de esta duda, me gustaría saber si es algo imprescindible para realizar un MITM con ARP o no. Tengo entendido de que sí, aunque quizás en mi modelo de MITM no sea necesario, porque todos paquetes llegan a mi IP y de ahí reenvío, el problema es que no soy capaz de redirigirlos, ¿me los rechazará el router? ¿el ip fordwarding ayudará?, lo active manualmente y nada cambió, pero quizás ayude, y así ya tengo la función para automatizarlo.

Saludos.

Edito: Tambien me gustaría saber si esto funcionaria, a ver si con un simple pistazo me lo podéis decir o si tiene algún fallo, es para anclar un programa al registro apartir de una direccion y el nombre del ejecutable:

Código (cpp) [Seleccionar]

bool anclar_registro(string nombre, string direccion)//incluye exe
{
HKEY hkey;//(lcpwstr) L"algo"
string total = direccion + nombre;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hkey) == ERROR_SUCCESS){
if (RegSetValueEx(hkey, (LPCWSTR)(nombre.c_str()), 0, REG_SZ, (BYTE*)total.c_str(), total.length()) == ERROR_SUCCESS){
RegCloseKey(hkey);
return true;
}
else{
RegCloseKey(hkey);
return false;
}
}
else
return false;
}
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Cita de: Kaxperday en  9 Septiembre 2015, 20:06 PM
pero desconozco como funcionan eso de las claves y modificar sus valores

Entonces antes de hacer el código, tal vez la mejor idea sea aprender qué son las claves. Hacer un código a ciegas no tiene interés ninguno. "Probar" está muy bien, pero con base teórica.

Kaxperday

#2
Buenas socio, por lo visto te has centrado en la frase que soy un poco crítico conmigo mismo para crear tu respuesta, dejando desapercibidas las demás y las preguntas. Pero debes de saber, que mientras escribía esa frase ya busqué y estaba buscando info del tema, por lo que doy por hecho a lo que te refieres.

Bueno, he estado trabajando con el code y las funciones. Y conseguí establecer el IP_fordwarding de la siguiente manera:

Código (cpp) [Seleccionar]
bool establece_forwarding(DWORD valor)
{
HKEY key;
if (valor != 0 && valor != 1)
return false;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &key) == ERROR_SUCCESS){
if (RegSetValueEx(key, L"IPEnableRouter", 0, REG_DWORD,
(const BYTE*)&valor, sizeof(valor)) != ERROR_SUCCESS){
RegCloseKey(key);
return false;
}
else{
RegCloseKey(key);
return true;
}
}
return false;
}


Funciona correctamente, ahora bien para el anclado al registro es un problemilla, ya que como argumentos recibo 2 strings nombre de ejecutable y directorio de instalacion, pero como ya sabrás necesito trabajar con LPCTSTR, y no he conseguido hallar manera de pasar de char* a LPCTSTR, o lo que es lo mismo pasar de char* a wchar*, seguiré buscando haber si consigo solucionarlo, saludos.

Edito: Unos pocos minutos de responder, ya he encontrado la solución porque como ya digo mientras digo que no lo sé hacer, ya estoy buscando la respuesta, la solución pasaba por pasar de string a wstring:

Funcion para anclar al registro un programa:

Código (cpp) [Seleccionar]
bool anclar_registro(string nombre, string direccion)//incluye exe
{
HKEY hkey;
string total = direccion + nombre;
nombre = nombre.substr(0, nombre.find(".exe"));
wstring wtotal(total.begin(), total.end());
wstring wnombre(nombre.begin(), nombre.end());

if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hkey) == ERROR_SUCCESS){
if (RegSetValueEx(hkey, (LPCTSTR)wnombre.c_str(), 0, REG_SZ, (LPBYTE)wtotal.c_str(),
total.length()) == ERROR_SUCCESS){
RegCloseKey(hkey);
return true;
}
else{
RegCloseKey(hkey);
return false;
}
}
else
return false;
}


Saludos y que aproveche!!

Kaxperday.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Citarporque como ya digo mientras digo que no lo sé hacer, ya estoy buscando la respuesta

Efectivamente. Tal vez lo mejor es que inviertas el orden de los sucesos ·_·

Kaxperday

Cita de: ivancea96 en 10 Septiembre 2015, 17:19 PM
Efectivamente. Tal vez lo mejor es que inviertas el orden de los sucesos ·_·

XD el resultado sería el mismo, es BUSCO -> PREGUNTO -> BUSCO. Inviértelo como quieras jaja.

Saludos.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Pregunta cuando no encuentres nada :/

La mitad de tus posts acaban con un "EDITO: Ya lo resolví" :/

Kaxperday

Cita de: ivancea96 en 10 Septiembre 2015, 19:00 PM
Pregunta cuando no encuentres nada :/

La mitad de tus posts acaban con un "EDITO: Ya lo resolví" :/

Bueno, pregunto cuando no encuentro una respuesta a pesar de buscarla, a veces me enredo varias horas y cuando ya no hay manera creo un hilo en el foro, otras veces es casi instantáneo, además me ayuda a focalizar las dudas y así verlo yo mismo más claro, y a la vez me abro a respuestas y soluciones de miembros del foro. Es verdad que muchos de mis hilos sobran, porque los puedo resolver yo solo, pero estaría bien ver más puntos de vista, otras soluciones, ¿que harían ellos?, es un poco también para parlotear puntos de vista, preguntas y respuestas de la materia, más allá muchas veces de las dudas.

Saludos  :xD ;D
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.