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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Programación C/C++ / Re: Infija a Prefija en: 21 Julio 2011, 12:56 pm
quieres pasar de

(4+3*(4-5)*(7-8))  a esto

+(4,*(*(3,-(4,5)),-(7,8))
(por ejemplo)????
2  Programación / Programación C/C++ / Re: Ataque por fuerza bruta en c++ en: 21 Junio 2011, 20:34 pm
Ya encontre el error, me da vergüenza decir donde estaba el error  :-[

error de logica en el codigo victima...

bueno aqui os dejo el codigo por si quereis hecharle un vistazo:

VICTIMA:
Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. const string usu = "aaa";
  6. const string pas = "cab";
  7.  
  8. int main(){
  9. string USU;
  10. string PAS;
  11.    do{
  12. system("title LOGIN");
  13. cout << "Usuario: ";
  14. cin >> USU;
  15. cout << "Contraseña: ";
  16. cin >> PAS;
  17. cin.clear();
  18.    }while(usu!=USU || pas!=PAS);
  19. if(usu==USU && pas==PAS)
  20. cout<<"Contraseña CORRECTA"<<endl;
  21.    return 0;
  22. }
  23.  

ATAQUE:
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. bool enviar(string login, string pass);
  8.  
  9. int main(){
  10. const HANDLE Consola = GetStdHandle(STD_OUTPUT_HANDLE);
  11. string login, pswd;
  12. ifstream pass("dico.txt");
  13. ifstream user("dico.txt");
  14. if(pass.is_open() && user.is_open()){
  15. bool seguir=true;
  16. while(!user.eof() && seguir){
  17. getline(user,login,'\n');
  18. while(!pass.eof() && seguir){
  19. getline(pass,pswd,'\n');
  20. SetForegroundWindow((HWND)Consola);
  21. seguir=enviar(login,pswd);
  22. Sleep(300);
  23. }
  24. }
  25.  
  26. }
  27. system("pause");
  28. return 0;
  29. }
  30.  
  31. bool enviar(string login, string pass){
  32. HWND hCalc = FindWindow(NULL, TEXT("LOGIN"));//Obtenemos el Handle de la ventana
  33. if (hCalc != 0){
  34. cout<<"User: "<<login<<endl;
  35. cout<<"Pass: "<<pass<<endl;
  36. SetForegroundWindow(hCalc);
  37.  
  38. /*enviar login*/
  39. for(register int i=0;i<login.size();i++){
  40. keybd_event((BYTE)VkKeyScan(login[i]), 0, 0, 0);
  41. keybd_event((BYTE)VkKeyScan(login[i]), 0, 2, 0);
  42. }
  43. keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter
  44. keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter
  45.  
  46. /*enviar pass*/
  47. for(register int i=0;i<pass.size();i++){
  48. keybd_event((BYTE)VkKeyScan(pass[i]), 0, 0, 0);
  49. keybd_event((BYTE)VkKeyScan(pass[i]), 0, 2, 0);
  50. }
  51. keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter
  52. keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter
  53.  
  54. return true;
  55. }
  56. else
  57. return false;
  58. }
  59.  
  60.  


en la consola de ataque, el ultimo user y pass son los correctos...

solo un pequeño detalle, si en el codigo de la victima, el programa no se cierra, el programa atacante sigue poniendo el users y pass en la consola. Por lo tanto no se podria saber cual es el codigo y el users
3  Programación / Programación C/C++ / Re: Ataque por fuerza bruta en c++ en: 21 Junio 2011, 18:30 pm
¡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!

si, eso tambien lo habia pensado, desensamblar el programa victima, ver en que direccion de memoria se guardan los datos, y a partir de ahi crear el programa BruteForce, e ir escribiendo en esas zonas de memoria..., tengo que probarlo :P

pero como escribir en esas zonas de memoria?

saludos
4  Programación / Programación C/C++ / Re: Ataque por fuerza bruta en c++ en: 21 Junio 2011, 17:54 pm
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
5  Programación / Programación C/C++ / Re: Ataque por fuerza bruta en c++ en: 21 Junio 2011, 17:06 pm
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
Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. const string usu = "aaa";
  6. const string pas = "cab";
  7.  
  8. int main(){
  9. string USU;
  10. string PAS;
  11.    do{
  12. system("title LOGIN");
  13. cout << "Usuario: ";
  14. cin >> USU;
  15. cout << "Password: ";
  16. cin >> PAS;
  17.    }while(usu!=USU && pas!=PAS);
  18.    return 0;
  19. }
  20.  

BruteForce
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. bool enviar(string login, string pass);
  8.  
  9. int main(){
  10. const HANDLE Consola = GetStdHandle(STD_OUTPUT_HANDLE);
  11. string login, pswd;
  12. ifstream pass("dico.txt");
  13. ifstream user("dico.txt");
  14. if(pass.is_open() && user.is_open()){
  15. bool seguir=true;
  16. while(!user.eof() && seguir){
  17. user>>login;
  18. while(!pass.eof() && seguir){
  19. pass>>pswd;
  20. SetForegroundWindow((HWND)Consola);
  21. seguir=enviar(login,pswd);
  22. Sleep(1000);
  23. }
  24. }
  25.  
  26. }
  27. system("pause");
  28. return 0;
  29. }
  30.  
  31. bool enviar(string login, string pass){
  32. HWND hCalc = FindWindow(NULL, TEXT("LOGIN"));//Obtenemos el Handle de la ventana de la calculadora
  33. if (hCalc != 0){
  34. cout<<"User: "<<login<<endl;
  35. cout<<"Pass: "<<pass<<endl;
  36. SetForegroundWindow(hCalc);
  37.  
  38. /*enviar pass*/
  39. for(register int i=0;i<login.size();i++){
  40. keybd_event((BYTE)VkKeyScan(login[i]), 0, 0, 0);
  41. keybd_event((BYTE)VkKeyScan(login[i]), 0, 2, 0);
  42. }
  43. keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter
  44. keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter
  45.  
  46. /*enviar login*/
  47. for(register int i=0;i<pass.size();i++){
  48. keybd_event((BYTE)VkKeyScan(pass[i]), 0, 0, 0);
  49. keybd_event((BYTE)VkKeyScan(pass[i]), 0, 2, 0);
  50. }
  51. keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter
  52. keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter
  53.  
  54. return true;
  55. }
  56. else
  57. return false;
  58. }


no se en que falla...
6  Programación / Programación C/C++ / Re: Ataque por fuerza bruta en c++ en: 21 Junio 2011, 14:43 pm
Khronos14  ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) de lujo
7  Programación / Programación C/C++ / Re: Ataque por fuerza bruta en c++ en: 20 Junio 2011, 20:48 pm
Con sockets no?Bueno eso fue lo que habimos dicho en el proyecto, además lo intente y funcionó, intentalo con sockets  ;)

los dos programas son independientes el uno del otro. el programa que pide la contraseña y el login no esta programado para conectarse a ningun socket ni esta programado para comunicar por pipes. Son programas a parte...

esto es una de las condiciones: entonces a partir de esto, como se podria conseguir ?
8  Programación / Programación C/C++ / Re: Ludo en modo consola - Proyecto del Liceo en: 20 Junio 2011, 03:34 am
bueno para que te funcione en el Visual C++ hay que cambiar unas cosas:

Pon estas librerias:
Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <string>
  4. #include <time.h>
  5. #include <Windows.h>

añade esto arriba:
Código
  1. using namespace std;
  2.  
  3. const HANDLE Consola = GetStdHandle(STD_OUTPUT_HANDLE);
  4.  
  5. void textcolor(int numColor){SetConsoleTextAttribute(Consola, numColor);}
  6. void gotoxy(int x, int y) {
  7. COORD coord;
  8. coord.X = x;
  9. coord.Y = y;
  10. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
  11. }


remplaza
Código:
clrscr();
por
Código:
system("cls");


PD: despues de todos estos cambios me daba un error en j1[30]; si te da ese error, busca y remplaza j1 por otro nombre.


saludos
9  Programación / Programación C/C++ / Re: Problema en C++ al leer archivo .txt en: 20 Junio 2011, 02:03 am
Eso que dices dany, no es cierto.
El fichero lo quiere como lectura, asi que debe ser ofstream. ifstream se usa para escritura, y no es el caso.

ifstream sirve para leer de un archivo (y es exactamente lo que quiere)
ofstream sirve para escribir en un archivo.

El problema, probablemente, es que no está inicializada la variable 'i'.
Esa es la solucion .
10  Programación / Programación C/C++ / Re: ejercicios en c en: 16 Junio 2011, 21:27 pm
ksiksi la cadena al final tiene que tener siempre 29 digitos?
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines