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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 23
11  Programación / Programación C/C++ / ¿Por qué es necesario fflush ()? en: 7 Octubre 2016, 14:29 pm
Hola.
Tengo el siguiente codigo:
Código
  1. char getch (void) {
  2.  fflush (stdout);
  3.  char buf;
  4.  struct termios old = {0}, new = {0};
  5.  
  6.  if (tcgetattr (STDIN_FILENO, &old) < 0)
  7.    return -1;
  8.  
  9.  new = old;
  10.  
  11.  new.c_lflag &= ~ICANON;
  12.  new.c_cc[VMIN] = 1;
  13.  new.c_cc[VTIME] = 0;
  14.  
  15.  if (tcsetattr (STDIN_FILENO, TCSANOW, &new) < 0)
  16.    return -1;
  17.  
  18.  if (read (STDIN_FILENO, (char *)&buf, 1) < 0)
  19.    return -1;
  20.  
  21.  if (tcsetattr (STDIN_FILENO, TCSANOW, &old) < 0)
  22.    return -1;
  23.  
  24.  return buf;
  25. }
  26.  
  27. int main () {
  28.  printf ("Introduce un caracter\n");
  29.   int a = getch ();
  30. ...
  31. }

No entiendo por qué debo poner fflush despues de haber impreso por pantalla el "Introduce un caracter". Es decir, ¿por qué no lo imprime en primera instancia?

Gracias de antemano.
12  Programación / Programación C/C++ / ¿Por qué sucede lo siguiente con el tratamiento de punteros? en: 14 Septiembre 2016, 10:17 am
Perdón por el título tan general que he puesto pero es que no sé cómo expresar lo siguiente.

Tengo la siguiente función:
Código
  1. char *GetJSession (FILE *sf) {
  2.  size_t s = 0;
  3.  char *buf = NULL;
  4.  char *js = (char *) calloc (256, sizeof (char));
  5.  char *str = (char *) js;
  6.  
  7.  while (getline (&buf, &s, sf) > 0) {
  8.    printf ("%s", buf);
  9.    if (strstr (buf, "JSESSIONID=") != NULL) {
  10.      while (*++buf != '=');
  11.      while (*buf != ';') {
  12.        *str = *buf;
  13.        str++, buf++;
  14.        printf ("%c", *str);
  15.      }
  16.    }
  17.  }
  18. ...

Lo que quiero saber es por qué es necesario el uso de str y no puedo hacer esto con la variable js directamente. Anteriores veces he intentado hacer lo siguiente:
Código
  1. *js = *buf;
  2. js++, buf++;

Pero no me ha funcionado, sólo me ha funcionado haciendo que str apuntase a js. ¿Puede alguien explicarme esta necesidad?

Gracias de antemano
13  Programación / Programación C/C++ / Re: Enviar datos por POST a un FORM usando cURL en: 13 Septiembre 2016, 19:47 pm
Hola mester, pues verás te faltan más variables a enviar en el FORM aparte de username y password, en la url te recomiendo usar https://autentica.cpd.ua.es/cas/login que vale por igual y quizás evites futuros errores.

Respecto a que no consigues que envie los datos por el POST ¿a qué te refieres? ¿a que no recibes respuesta o da error al enviar los datos al server o que la respuesta que recibes no es la esperada (que no consigues iniciar sesión vaya)?.

Saludos

¡Hola Kaxperday! Gracias por la respuesta.

Me refiero a que tiene que descargar el HTML cuando ya estas loggeado, es decir, el HTML del UA Cloud, pero se descarga el HTML del login, además de que despues de autenticarse, la cabezera debería de devolver un ID de ASP, y no lo hace. Es por ello que creo que o falta codigo para terminar el login, o no funciona correctamente, supongo que porque no envía bien los datos.

Lo que quiero saber es qué debo hacer para que envíe los datos al login y poder autenticarme desde este cliente.

Gracias.
14  Programación / Programación C/C++ / Enviar datos por POST a un FORM usando cURL en: 13 Septiembre 2016, 17:43 pm
Hola.

Estoy haciendo un programa que usa cURL para autenticarse en la UA, pero no consigo hacer que envíe los datos por POST. El codigo es el siguiente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <curl/curl.h>
  5.  
  6. int main (int argc, char **argv) {
  7.  if (argc < 2)
  8.    return fprintf (stderr, "%s <ua mail>\n", argv[0]);
  9.  
  10.  char *user = argv[1];
  11.  char *pass = getpass ("Contraseña de la UA: ");
  12.  CURL *cSession;
  13.  FILE *sf = fopen ("res.html", "at");
  14.  struct curl_httppost *pData = NULL;
  15.  struct curl_httppost *last = NULL;
  16.  
  17.  curl_formadd (&pData, &last,
  18.    CURLFORM_COPYNAME, "username",
  19.    CURLFORM_COPYCONTENTS, argv[1],
  20.    CURLFORM_END);
  21.  curl_formadd (&pData, &last,
  22.    CURLFORM_COPYNAME, "password",
  23.    CURLFORM_COPYCONTENTS, pass,
  24.    CURLFORM_END);
  25.  
  26.  cSession = curl_easy_init ();
  27.  if ( !cSession ) {
  28.    fprintf (stderr, "Error iniciando cURL\n");
  29.  } else {
  30.    curl_easy_setopt (cSession, CURLOPT_VERBOSE, 1);
  31.    curl_easy_setopt (cSession, CURLOPT_URL, "https://autentica.cpd.ua.es/cas/login?service=https://cvnet.cpd.ua.es/uacloud/home/indexVerificado");
  32.    curl_easy_setopt (cSession, CURLOPT_HTTPPOST, pData);
  33.    curl_easy_setopt (cSession, CURLOPT_FOLLOWLOCATION, 1);
  34.    curl_easy_setopt (cSession, CURLOPT_WRITEDATA, (FILE *)sf);
  35.    curl_easy_setopt (cSession, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31");
  36.  
  37.    if (curl_easy_perform (cSession) != 0) {
  38.      fprintf (stderr, "Error executing cURL session\n");
  39.    } else {
  40.      printf ("Done!\n");
  41.    }
  42.  }
  43.  
  44.  curl_easy_cleanup (cSession);
  45.  
  46.  return 0;
  47. }

Lo que quiero saber es por qué no envía los datos al FORM. También he probado quitando la estructura curl_httppost y añadiendo simplemente curl_easy_setopt (cSession, CURLOPT_POSTFIELDS.

Espero que me puedan ayudar.

Y antes de que algun listillo (y vago) diga: "No hacemos tareas aquí". No, no es una tarea, sino se lo preguntaría al profesor, porque el codigo ya está medio hecho.

Gracias de antemano.
15  Programación / Programación C/C++ / Re: Duda con realloc en: 6 Septiembre 2016, 17:04 pm
Pero, ¿es necesario que use un valor de retorno? Porque perfectamente podría hacer esto:
Código
  1. int main () {
  2.  int *b = (int *) malloc (sizeof (int));
  3.  
  4.  b[0] = 20;
  5.  realloc (b, 2 * sizeof (int));
  6.  b[1] = 30;
  7.  
  8.  printf ("%d\t%d\n", b[0], b[1]);
  9.  
  10.  return 0;
  11. }

¿Habría algún inconveniente?
16  Programación / Programación C/C++ / Duda con realloc en: 6 Septiembre 2016, 16:48 pm
Hola.

Nunca he usado la función realloc, y ahora utilizandola me pregunto algunas cosas:
Cuando utilizo la funcion, el compilador me fuerza un poco a que utilize un valor de retorno. Por ello he hecho el siguiente programa:

Código
  1. int main () {
  2.  int *a, *b = (int *) malloc (sizeof (int));
  3.  
  4.  b[0] = 20;
  5.  a = (int *)realloc (b, 2 * sizeof (int));
  6.  b[1] = 30;
  7.  
  8.  printf ("%p\n%p\n", &a, &b);
  9.  
  10.  return 0;
  11. }

Las dudas que me surgen son... ¿El valor de retorno de realloc apunta a la nueva dirección con los datos que contenía el primer argumento (en este caso a[0] debería ser 20 y tendría que tener espacio para un int más)? ¿Que es lo que ocurre si hago free ( b ); y continuo usando a?
17  Programación / Programación C/C++ / Re: [C] Consulta y eliminación. en: 24 Agosto 2016, 14:26 pm
¿Por código como hago que el programa generado en C independientemente de la ruta de iniciación se mueva a la carpeta temporal? Eso me ayudaría bastante para cerrar tema
Código
  1. int main () {
  2.  char *proName = (char *)(calloc (1025, sizeof (char)));
  3.  
  4.  GetModuleFileName ( GetModuleHandle (NULL), proName, 1024);
  5.  
  6.  return !MoveFile (proName, "(carpeta temporal de windows)");
  7. }

18  Programación / Programación C/C++ / Re: [C] Consulta y eliminación. en: 20 Agosto 2016, 12:51 pm
Lo que necesito no es eliminar un archivo, necesito remover el programa que estoy generando al finalizarlo.

Citar
En ese caso, puedes crear con el programa un batch que se encargue de borrar el programa (y luego a si mismo), y llamarlo con "system("start archivo.bat");"

O lo que puedes hacer es moverlo a la carpeta temporal del sistema.
19  Programación / Programación C/C++ / Re: Compilar una librería dinámica como estática C en: 2 Agosto 2016, 16:04 pm
Con -static, haces que las librerías de C++ se compilen estáticas.

Si quieres compilar estática una librería externa, tienes que obtenerla para linkeado estático.

Las librerías se suelen compilar de 2 modos:para estático, y para dinámico. Tú debes de tener la dinámica. Localiza la estática, si la tienen.

En caso de que ya la tengas, mira alguna guía de los creadores de esa librería para compilarla en estático.

Si la estática la tiene, pero yo quiero saber si existe alguna manera de compilar la libraria dinamica de manera estatica en un programa. Porque es muy pesado que en cada proyecto tenga que añadir las librerias a cada carpeta y demás.
20  Programación / Programación C/C++ / Compilar una librería dinámica como estática C en: 2 Agosto 2016, 15:34 pm
Hola.

Me surge el siguiente error cuando ejecuto un programa:  "error while loading shared libraries libmysqlclient.so.18"
Soy consciente del error, me falta la librería MySQL, pero el caso es... lo que quiero hacer es compilar mi programa y hacer que sea portable. Es decir, lo que quiero es poder compilar el programa para usar la libreria estaticamente en el programa. He probado con el parámetro -static-libgcc al compilar con gcc en Linux, pero ni caso.

Espero que me podáis ayudar. Si no entendéis lo que quiero expresar, educadamente preguntadme.

Gracias de antemano.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines