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


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 23
41  Programación / Programación C/C++ / Re: Error en malloc() en: 9 Noviembre 2012, 03:54 am
Eso es porque he copiado mal....
El codigo es:
Código
  1. char* funcion(int sizeMalloc){
  2.     char* buffer=(char*)malloc(sizeMalloc);
  3.     return buffer;
  4. }
  5.  

Y mi error no es de compilacion es un fallo de segmentacion....Estoy debugeando el programa porque los malloc() en general me dan este error y no se porque....

¿Alguien sabe sobre bugs del malloc() o de alguna funcion que me permita reservar memoria y que no de errores?

Gracias, un saludo.
42  Programación / Programación C/C++ / Error en malloc() en: 9 Noviembre 2012, 03:39 am
¡Buenas a todos!

Tengo un problema con la funcion malloc() porque me da fallo de segmentacion....el codigo es como este...
Código
  1.  
  2. char* funcion(int sizeMalloc){
  3.     char* buffer=(char*)malloc(sizeMalloc)
  4.     return buffer;
  5. }

El error que me da es este:
Citar
malloc.c:2451: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed

Y la pila es esta:
Citar
(gdb) bt
#0  0x00132416 in __kernel_vsyscall ()
#1  0x001611df in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2  0x00164825 in __GI_abort () at abort.c:91
#3  0x001a8469 in __malloc_assert (assertion=<optimized out>, file=<optimized out>, line=2451, function=0x29518a "sYSMALLOc") at malloc.c:300
#4  0x001ab293 in sYSMALLOc (av=0x2d9440, nb=40) at malloc.c:2448
#5  _int_malloc (av=0x2d9440, bytes=35) at malloc.c:3892
#6  0x001acddc in __GI___libc_malloc (bytes=35) at malloc.c:2924

¿Cual es el problema? ¿Como lo soluciono?

Gracias, un saludo.
43  Programación / Programación C/C++ / Re: Ejercicio en C de Vectores 1.2[Borland 5.02] en: 6 Noviembre 2012, 10:55 am
¡Buenas SonaArtica!

No he ejecutado tu programa pero creo que tiene un par de fallos...

1) el bucle se ejecuta 59 veces cuando deberia ser 60. El array va desde 0 hasta 59 y tu bucle va desde 1 hasta 59. Asi que el bucle escribelo asi:
Código
  1. for(i=0;i<60;i++){
  2. //codigo
  3. }

2) y los if del bucle no son del todo correcto si te fijas, pones
Código
  1.                        if (i==1 || tiempo[i-1]<mejortiempo){
  2.                                 //codigo
  3.                        }
  4.                        if(i==1 || tiempo[i-1]>autoganador){
  5.                                 //codigo
  6.                        }
  7.  
Para el caso i==1 entras en ambos if y lo que hagas en el segundo puede anular lo que hayas hecho en el primero. Y ademas no calculas bien el perdedor.....(usa else para que tu programa sea mas eficiente)

Yo lo haria asi...:
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. /* Se deben cargar en un vector los tiempos de clasificacion de 60 autos.
  4. Los autos se identifican con numeros correlativos del 1 al 60.Se pide determinar:
  5.       a)Numero de Auto que clasifico primero.
  6.       b)Peor tiempo de clasificacion. */
  7. main(){
  8.       int tiempo[60];
  9.       int autoganador=0;
  10.       int i=0;
  11.       float peortiempo,mejortiempo;
  12.  
  13.        //el primero es el mejor y el peor al mismo tiempo ya que es el unico
  14.       printf("Ingrese Tiempo de auto %d \n",i);
  15.       fflush(stdin);
  16.       scanf(" %f",&tiempo[0]);
  17.       peortiempo=tiempo[0];
  18.  
  19.       //pedimos que ingrese datos y comparamos
  20.       for(i=1;i<60;i++){
  21.                        printf("Ingrese Tiempo de auto %d \n",i);
  22.                        fflush(stdin);
  23.                        scanf(" %f",&tiempo[i]);
  24.                        if (tiempo[i]<mejortiempo){
  25.                            autoganador=i;
  26.                            mejortiempo=tiempo[i];
  27.                        }//Cierre del If que saca al auto ganador
  28.                        else(tiempo[i]>peortiempo){//ESTA LINEA HA CAMBIADO!
  29.                              peortiempo=tiempo[i];  
  30.                        }//Cierre del If que saca el peor tiempo
  31.       }
  32.       printf("El auto ganador es %d con el tiempo de %f \n",autoganador+1,mejortiempo);
  33.       printf("El auto con peor tiempo fue de %f \n",peortiempo);
  34. return 0;
  35. }
  36.  

En caso de empate  con mejor tiempo tanto tu programa como el mio imprimiran el primer coche....

NOTA: el codigo lo he hecho a ojo y no lo he compilado pero creo que es correcto el algoritmo.

Un saludo.
44  Programación / Programación C/C++ / Re: Ayuda Con progrmacion en SCILAB (muy parecido a C) en: 4 Noviembre 2012, 23:59 pm
¡Buenas kiximbo!

La pregunta importante es....¿Por que hacerlo en scilab y no en C?
Te lo digo porque es muy posible que encuentres muchos mas tutoriales de C que de scilab...de hecho, por el foro encontraras muchas funciones en C que necesitas para tu juego como por ejemplo la creacion del tablero que es una matriz de tipo ficha....
Código
  1. ficha_t tablero[10][10];
Y la funcion random() ya esta implementada en C...asi que te recomiendo que lo hagas en C mejor que en scilab ya que podras tener mucha mas ayuda.

Un saludo.
45  Programación / Programación C/C++ / time() localtime() en: 3 Noviembre 2012, 06:03 am
Buenas a todos!

tengo un problema con esta funcion...me da fallo de segmentacion en la funcion localtime()
Código
  1. char * getDateTime(){
  2.        char * fecha=(char*)malloc(200);
  3.        time_t t = time(NULL);
  4.        struct tm *tm = localtime(&t);
  5.        char * dia="";
  6.        char * mes="";
  7.  
  8.        switch(tm->tm_wday){
  9.  
  10.                case 0: dia="Sun"; break;
  11.                case 1: dia="Mon"; break;
  12.                case 2: dia="Tue"; break;
  13.                case 3: dia="Wed"; break;
  14.                case 4: dia="Thu"; break;
  15.                case 5: dia="Fri"; break;
  16.                case 6: dia="Sat"; break;
  17.                default: dia="???"; break;
  18.        }
  19.  
  20.        switch(tm->tm_mon){
  21.  
  22.                case 0: mes="Jan"; break;
  23.                case 1: mes="Feb"; break;
  24.                case 2: mes="Mar"; break;
  25.                case 3: mes="Apr"; break;
  26.                case 4: mes="May"; break;
  27.                case 5: mes="Jun"; break;
  28.                case 6: mes="Jul"; break;
  29.                case 7: mes="Aug"; break;
  30.                case 8: mes="Sep"; break;
  31.                case 9: mes="Oct"; break;
  32.                case 10: mes="Nov"; break;
  33.                case 11: mes="Dec"; break;
  34.                default: mes="???"; break;
  35.        }
  36.  
  37.        sprintf(fecha,"Date: %s , %d %s %d %d:%d:%d GMT",dia, tm->tm_mday, mes, tm->tm_year+1900, tm->tm_hour, tm->tm_min, tm->tm_sec);
  38.        return fecha;
  39. }
  40.  

¿Por que me da fallo de segmentacion?

Gracias, un saludo
46  Programación / Programación C/C++ / Re: Send() return -1 en C en: 2 Noviembre 2012, 04:02 am
Pues...creo que si....el socket lo asocio con un bind() a la interfaz de red wlan0 y el paquete que le mando tiene un struct ethdr + struct iphdr + struct tcphdr , deberia mandar algon antes del struct ethdr??
47  Programación / Programación C/C++ / Re: Send() return -1 en C en: 2 Noviembre 2012, 01:40 am
Una pregunta....¿Es posible que el error sea por que creo 2 sockets? es decir, ¿una aplicacion de C en linux solo puede abrir un solo sockect?

Es que ya no se me ocurren mas ideas....
48  Programación / Programación C/C++ / Send() return -1 en C en: 1 Noviembre 2012, 02:56 am
¡Buenas a todos!

Tengo un problema con la funcion send(). Siempre me retorna -1 y no se porque....

El socket lo creo asi:
Código
  1. int CreateRawSocket(int protocol_to_sniff){
  2. //Crea un raw socket
  3.        int rawsock;
  4.        if((rawsock = socket(PF_PACKET, SOCK_RAW, htons(protocol_to_sniff)))== -1)
  5.        {
  6.                perror("Error creating raw socket: ");
  7.                exit(-1);
  8.        }
  9.  
  10.  
  11.        return rawsock;
  12. }

El bind lo hago asi:
Código
  1. int BindRawSocketToInterface(char *device, int rawsock, int protocol){
  2. //Hace un bind del socket con la interfaz de red
  3.  
  4.        struct sockaddr_ll sll;
  5.        struct ifreq ifr;
  6.  
  7.        bzero(&sll, sizeof(sll));
  8.        bzero(&ifr, sizeof(ifr));
  9.  
  10.        strncpy((char *)ifr.ifr_name, device, IFNAMSIZ);
  11.        if((ioctl(rawsock, SIOCGIFINDEX, &ifr)) == -1)
  12.        {
  13.                printf("Error getting Interface index !\n");
  14.                exit(-1);
  15.        }
  16.  
  17.        sll.sll_family = AF_PACKET;
  18.        sll.sll_ifindex = ifr.ifr_ifindex;
  19.        sll.sll_protocol = htons(protocol);
  20.  
  21.  
  22.        if((bind(rawsock, (struct sockaddr *)&sll, sizeof(sll)))== -1)
  23.        {
  24.                perror("Error binding raw socket to interface\n");
  25.                exit(-1);
  26.        }
  27.  
  28.        return 1;
  29.  
  30. }

Luego creo un char * con los datos a enviar y lo envio con esta funcion:
Código
  1. int SendRawPacket(int rawsock, char *pkt, int pkt_len){
  2. //Envia un raw packet
  3.        int sent=0;
  4.  
  5.        if((sent = send(rawsock, pkt, pkt_len,TH_FLAGS)) != pkt_len)
  6.        {
  7.                /* Error */
  8.                printf("Could only send %d bytes of packet of length %d\n", sent, pkt_len);
  9.                return 0;
  10.        }
  11.  
  12.        return 1;
  13. }

Y la funcion send() siempre me retorna -1 y no se porque...El socket esta bien creado...lo he mirado con gdb y tengo la variable rawsock=8. Y la variable pkt_len=strlen(pkt)=54

Si el socket esta bien creado y el bind es correcto...¿Por que no me envia los datos?

Gracias, un saludo.
49  Seguridad Informática / Hacking / Re: wireshark "bytes in flight" en: 31 Octubre 2012, 02:00 am
Nada, al final esto fue un fallo tonto que tuve....

Wireshark no me detectaba mis paquetes HTTP porque la cabecera HTTP no era correcta. El campo "Content-Length" lo habia escrito sin una "t"....."Content Lengh"....en cuanto lo corregi, wireshark me lo detecto como un paquete HTTP.

Gracias, un saludo.
50  Programación / Programación C/C++ / Re: Romper ejecucion de un bucle en: 31 Octubre 2012, 01:55 am
¡Gracias por sus respuestas!

Al final el codigo me ha quedado asi...
Código
  1. #include <stdio.h>
  2. #include <pthread.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5.  
  6. void * pararBucle();
  7.  
  8. char * c="a";
  9.  
  10. int main(){
  11.  
  12.        pthread_t hilo;
  13.        pthread_create(&hilo,NULL, pararBucle,NULL);
  14.  
  15.        printf("Iniciando bucle infinito\n");
  16.        while(strcmp(c,"q")){
  17.  
  18.        }
  19.  
  20.        return 0;
  21. }
  22.  
  23. void * pararBucle(){
  24.  
  25.        char  aux='a';
  26.        while(aux!='q')
  27.                read(STDIN_FILENO,&aux,1);
  28.        printf("Presionaste q\n");
  29.        c="q";
  30.        return (void *)"q";
  31. }

Lo unico que tiene una variable global que no se como quitar.
He probado a pasarle la variable c a la funcion pthread_create() asi:
Código
  1. pthread_create(&hilo,NULL, pararBucle,(void *) c);

Y luego le paso un void * a  la funcion pararBucle(void * c){}
Con estos cambios el programa compila, pero la funcion pararBucle cuando acaba no cambia el valor de c y el bucle infinito no para.

Asi que....¿que debo hacer para que la variable c quede compartida por ambos hilos?

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