Autor
|
Tema: Ataque por fuerza bruta en c++ (Leído 18,789 veces)
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Mira este pequeño ejemplo que acabo de hacer: #include <iostream> #include <Windows.h> int main(int argc, char * argv[]) { HWND hCalc = FindWindow(NULL, L"Calculadora"); //Obtenemos el Handle de la ventana de la calculadora if (hCalc != 0) { SetForegroundWindow(hCalc); //Hacemos que la calculadora tenga el foco para enviarle las teclas keybd_event((BYTE)VkKeyScan('2'), 0, 0, 0); //Pulsamos la tecla 2 keybd_event((BYTE)VkKeyScan('2'), 0, 2, 0); //Levantamos la tecla keybd_event(VK_ADD, 0, 0, 0); //Pulsamos + keybd_event(VK_ADD, 0, 2, 0); //Levantamos + keybd_event((BYTE)VkKeyScan('3'), 0, 0, 0); //Pulsamos la tecla 3 keybd_event((BYTE)VkKeyScan('3'), 0, 2, 0); //Levantamos la tecla 3 keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter /* * Con estas pulsaciones la calculadora debería sumar 2 + 3 */ } else std::cout << "No se encontró la ventana" << std::endl; std::cin.get(); return 0; }
Para que funcione, tienes que tener la calculadora abierta. Otro método de buscar la ventana es mediante las APIs para trabajar con procesos, como: Process32First, CreateToolhelp32Snapshot, etc.. Aquí tienes una tabla con todas las Virtual Key Codes: http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx Saludos.
|
|
« Última modificación: 21 Junio 2011, 14:45 pm por Khronos14 »
|
En línea
|
|
|
|
fantasma306
Desconectado
Mensajes: 28
|
|
|
|
En línea
|
Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.
|
|
|
El_Java
|
Si es para lo de nuestro proyecto, creo que con hacer un socket udp que se conectara con la direccion 192.168.1.1 del localhost nos valdría, pero claro, esto es teoría, tendre que comprobarlo... xD
el codigo de Khronos14 es solo para Windows, no?
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Hola El_Java, sí, el código sólo funciona en Windows.
Saludos.
|
|
|
En línea
|
|
|
|
fantasma306
Desconectado
Mensajes: 28
|
Bueno aqui tengo un codigo basandome en lo que dijo Khronos14 pero no funciona muy bien, los datos se envian correctamente pero se cierra la consola que pide el login y contraseña: Victima#include <iostream> #include <string> using namespace std; const string usu = "aaa"; const string pas = "cab"; int main(){ string USU; string PAS; do{ system("title LOGIN"); cout << "Usuario: "; cin >> USU; cout << "Password: "; cin >> PAS; }while(usu!=USU && pas!=PAS); return 0; }
BruteForce#include <iostream> #include <fstream> #include <string> #include <Windows.h> using namespace std; bool enviar(string login, string pass); int main(){ const HANDLE Consola = GetStdHandle(STD_OUTPUT_HANDLE); string login, pswd; ifstream pass("dico.txt"); ifstream user("dico.txt"); if(pass.is_open() && user.is_open()){ bool seguir=true; while(!user.eof() && seguir){ user>>login; while(!pass.eof() && seguir){ pass>>pswd; SetForegroundWindow((HWND)Consola); seguir=enviar(login,pswd); Sleep(1000); } } } system("pause"); return 0; } bool enviar(string login, string pass){ HWND hCalc = FindWindow(NULL, TEXT("LOGIN"));//Obtenemos el Handle de la ventana de la calculadora if (hCalc != 0){ cout<<"User: "<<login<<endl; cout<<"Pass: "<<pass<<endl; SetForegroundWindow(hCalc); /*enviar pass*/ for(register int i=0;i<login.size();i++){ keybd_event((BYTE)VkKeyScan(login[i]), 0, 0, 0); keybd_event((BYTE)VkKeyScan(login[i]), 0, 2, 0); } keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter /*enviar login*/ for(register int i=0;i<pass.size();i++){ keybd_event((BYTE)VkKeyScan(pass[i]), 0, 0, 0); keybd_event((BYTE)VkKeyScan(pass[i]), 0, 2, 0); } keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter return true; } else return false; }
no se en que falla...
|
|
|
En línea
|
Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Creo que te falta un cin.clear() en el código de la víctima.
Saludos.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
¿Por qué no haces la prueba con tuberías?, es decir, que el programa espere el user y el password de la entrada estándar y se lo mandas con un comando.
type words | programa ó cat words | programa
|
|
|
En línea
|
|
|
|
fantasma306
Desconectado
Mensajes: 28
|
Creo que te falta un cin.clear() en el código de la víctima.
Saludos.
no me ha funcionado, sigue igual :S ¿Por qué no haces la prueba con tuberías?, es decir, que el programa espere el user y el password de la entrada estándar y se lo mandas con un comando.
type words | programa ó cat words | programa
para programar "pipes" o "tuberias" hay que modificar el programa Victima, para establecer una comunicacion, y lo que se quiere hacer es que se pueda enviar datos a otra consola, sin conocer el codigo que tiene... lo de las consolas es solo para hacer la prueba... saludos
|
|
|
En línea
|
Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
no me ha funcionado, sigue igual :S
para programar "pipes" o "tuberias" hay que modificar el programa Victima, para establecer una comunicacion, y lo que se quiere hacer es que se pueda enviar datos a otra consola, sin conocer el codigo que tiene... lo de las consolas es solo para hacer la prueba...
saludos
Ah, entiendo, yo pensé que solo lo hacía por probar... .En fín, saludos.
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas!
No se si se podria hacer de esta forma o no. Durante un tiempo estuve trasteando con la ingenieria inversa. Las funciones de lectura, si leen cadenas, necesitan la diereccion de memoria de la cadena en la que almacenan datos. Esta parte de la memoria supongo que sera de lectura/escritura. Lo que podrias intentar es parchear la lectura de los datos, para escribir la cadena desde fuera del programa e introducir un salto a la parte en la que se comprueba si el user/pass es correcto, y asi hasta que encuentres un par valido... Asi te olvidas de las APIs y el programa es mas portable... Pero ya te digo, solo es una idea.
¡Saludos!
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ataque fuerza bruta HTTP?
Hacking
|
1/2lemon
|
8
|
11,927
|
15 Agosto 2011, 16:42 pm
por CloudswX
|
|
|
Ataque dirección web fuerza bruta?
Hacking
|
ItaiMegamisama
|
5
|
4,713
|
18 Abril 2012, 01:02 am
por Breixo
|
|
|
Ataque fuerza bruta con medusa ! BT 5!
Seguridad
|
32hacking
|
2
|
4,959
|
29 Mayo 2012, 11:29 am
por el-brujo
|
|
|
Ataque de fuerza bruta contra un EFI PIN Lock en una MacBook Pro
Hacking
|
orvtech
|
2
|
3,630
|
27 Febrero 2013, 19:11 pm
por orvtech
|
|
|
Un ataque distribuido por fuerza bruta está infectando de forma masiva blogs ...
Noticias
|
wolfbcn
|
0
|
1,899
|
14 Abril 2013, 01:35 am
por wolfbcn
|
|