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 Temas
Páginas: 1 [2] 3 4 5 6 7 8
11  Comunicaciones / Redes / Reensamblado TCP en: 10 Junio 2013, 23:39 pm
¡Buenas a todos!

Tengo una dudilla....

Estoy haciendo un programa que usa raw socket, y estoy recibiendo paquetes TCP por el socket y necesito saber cuando debo reemblar un segmento y cuando no. Mi pregunta es...¿Que campo de la cabecera me proporciona dicha informacion?

Estoy usando wireshark para capturar datos de una conexion cualquiera y no por mas que miro las cabeceras TCP no veo nada que me diga que un paquete esta completo o si es un segmento de un paquete mas grande....Lo que si veo es que todos los segmentos llevan el flag ACK a 1 y luego llevan datos y que cuando llega el ultimo segmento lleva el flag ACK a 1 el PUSH a 1 y datos tambien.

¿Debo entender que todo paquete TCP con el flag ACK a 1 y que lleva datos es un segmento?

¿alguna idea sobre el tema?

Gracias, un saludo
12  Seguridad Informática / Hacking / problema con iptables SNAT en: 29 Noviembre 2012, 01:22 am
¡Buenas a todos!

la siguiente linea me da error y no se porque:
Citar
iptables -t nat -A PRE_DONAT -p tcp -s 192.168.1.128 --sport 22 -j SNAT --to-source 192.168.1.128:2022

Lo que pretendo es hacer nat para que todo el trafico que reciba de la maquina 192.168.1.128 desde el puerto 22 lo cambie por el puerto 2022....

iptables me da pone: "invalid argument" y no especifica nada mas.......

¿alguna idea?, gracias.
13  Seguridad Informática / Hacking / Conectar con OpenVpn en: 20 Noviembre 2012, 18:33 pm
¡Buenas a todos!

Me he creado una cuenta vpn y tengo problemas para navegar y no se por que.....
Para conectar, abro una shell y tecleo openvpn --config fichero.ovpn
El fichero.opvn me le ha enviado mi proveedor de servicios vpn....Una vez ejecutado openvpn me pide el user y el pass, lo introduzco y conecto perfectamente. Pero cuando abro el navegador, no soy capaz de visitar webs y tampoco puedo hacer ping con estas web.

Si hago un ifconfig, veo que se me ha creado una nueva interfaz de red....(tun0). Imagino que los datos ahora deben enviarse por tun0 y no por wlan0 no?

La verdad es que estoy perdido....¿alguna idea?

Gracias, un saludo.
14  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.
15  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
16  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.
17  Programación / Programación C/C++ / Romper ejecucion de un bucle en: 30 Octubre 2012, 07:57 am
¡Buenas a todos!

Estoy haciendo un programa que tiene un bucle el cual quiero parar cuando el usuario presione la tecla 'q'. El problema esta en que con funciones como getch() y demas, el bucle para su ejecucion y espera a que el usuario presione una tecla y esto es lo que no quiero. La idea es que el bucle funcione en todo momento y que cuando el usuario presione 'q' se finalice el bucle.

He probado varias ideas que no me han salido bien....como por ejemplo usar hilos de tal forma que un hilo tiene el bucle y el otro hilo el getch()....tambien he probado ha hacer lo mismo pero con procesos y tampoco me ha salido bien....

Asi que como estoy un poco atascado, cansado y deseperado....creo que lo que me queda es hacer polling al teclado....el problema es que sé que esta tecnica va a funcionar seguro pero no se implementarlo....Imagino que sera con alguna funcion que lea el stdin o algo asi...

¿Alguien sabe como hacer polling al teclado para leer la pulsacion de una tecla?

NOTA: estoy programando en C para linux

Gracias, un saludo.
18  Programación / Programación C/C++ / Bucle infinito y hilos en C en: 24 Octubre 2012, 21:56 pm
¡Buenas a todos!

Estoy haciendo un programa en C para linux y tengo problemas con los hilos...

Mi programa tiene un bucle que se cierra cuando el usuario presione "q". Pero claro si uso una funcion como getchar() dentro del bucle el bucle se parará y no quiero que pare el bucle. Asi que he pensado lanzar un hilo y que sea el hilo el que se quede parado para leer del teclado y que cuando el getchar() del hilo lea una 'q' modifique una varible que cierre el bucle.

Aqui os pongo el codigo que tengo....pero meda un par de errores de compilacion...

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <pthread.h>
  5.  
  6. void *salir( void *ptr );
  7.  
  8. int main()
  9. {
  10.     pthread_t thread1;
  11.     char *salida = "";
  12.  
  13.     pthread_create( &thread1, NULL, salir, (void*) salida);
  14.     pthread_join( thread1, NULL);
  15.  
  16.     printf("bucle infinito\nPresione q para salir\n");
  17.        while(strcmp(salida,"q")){
  18.  
  19.        }
  20.     return 0;
  21. }
  22.  
  23. void *salir( void *ptr )
  24. {
  25.     char out='0';
  26.        while(out!='q'){
  27.                out=(char)fgetc(stdin);
  28.     ptr=(void *)"q";
  29.     printf("presionaste q\n");
  30. }

Y los errores de compilacion son estos:
Citar
funcion.c: In function ‘salir’:
funcion.c:30:1: error: expected declaration or statement at end of input
funcion.c:30:1: warning: control reaches end of non-void function [-Wreturn-type]

¿Alguien sabe como solucionarlos?

Un saludo.
19  Seguridad Informática / Hacking / wireshark "bytes in flight" en: 24 Octubre 2012, 20:02 pm
¡Buenas a todos!

Estoy haciendo un programa que v envia paquetes HTTP, pero tengo un problema.
Wireshark no me detecta mis paquetes como paquetes HTTP. Me los detecta como un TCP segment of a reassemble PDU. Ademas detecta el campo de datos del packete TCP como bytes in flight.

¿Que estoy poniendo mal en mis packetes para que wireshark no los detecte como packetes HTTP?

Un saludo.
20  Programación / Programación C/C++ / Pasar constante a una funcion de C en: 18 Octubre 2012, 13:25 pm
¡Buenas a todos!

Tengo un problemilla con las constantes...Tengo lo siguiente..:

Código
  1. #define longPacket 16384
  2. #define maxNumPacket 20
  3.  
  4. //declaracion de interfaces a funciones
  5. void initArrayPacket(char * arrayPacket[maxNumPacket], int  maxNumPacket, int longPacket);
  6.  
  7. // resto del codigo...
  8.  
  9. void initArrayPacket(char * arrayPacket[maxNumPacket], int  maxNumPacket, int longPacket){
  10.        for(i=0;i<maxNumPacket;i++){
  11.                arrayPacket[i]=(char *)malloc(longPacket);
  12.        }
  13. }
  14.  
Y me da estos errores al compilar...
Citar
server.c:42:61: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
server.c: In function ‘server’:
server.c:63:2: warning: implicit declaration of function ‘initArrayPacket’ [-Wimplicit-function-declaration]
server.c: At top level:
server.c:283:61: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant

El error de la linea 42 esta en la declaracion de la interfaz de la funcion initArrayPacket();
El error de la linea 63 esta en una llamada a la funcion initArrayPacket();
Y el error de la linea 283 esta en la implementacion de la funcion...

¿Como puedo definir una constante y pasarla por parametro a una funcion?

Gracias, un saludo.
Páginas: 1 [2] 3 4 5 6 7 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines