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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19
111  Foros Generales / Dudas Generales / ¿Cual es la mejor criptomoneda para minar en GPU? en: 17 Julio 2015, 00:34 am
Simplemente quería saber eso, conozco bien los litecoins que minan para CPU y GPU, pero con velocidades de minado muy lentas, y no acaban dando un buen beneficio. Para los bitcoins ocurre lo contrario, piden lo máximo del hardware y si no supera un numero aceptable de MHs generan ingreso nulo, pues estuve minando con ordenadores i3 de procesador y 1G de gráfica por días y conseguí beneficio nulo, a partir de un gran velocidad de minado es cuando realmente funcionan, sino no te llevas nada, mi pregunta es, ¿que criptomoneda es la mejor para el minado en GPUs? litecoin se queda muy corta para el potencial de un GPU, y BTC muy grande, ¿punto medio?

Saludos.

Edito: Creo que me ha quedado claro, las 2 monedas con más peso son los bitcoins y litecoins. Ambos con gran dificultad. Pero minar BTCs con una NVIDIA de 2Gbs buena, generaría 42^-8 bitcoins al día, lo que es lo mismo que una centésima de céntimo al día, luego los BTCs no se pueden minar con CPU ni GPU, de ninguna manera, nunca obtendríamos un beneficio que mereciera la pena.

Sin embargo, con los LTCs si se puede, se puede sacar algo de dinero aunque muy poca cantidad realmente.
112  Programación / Programación C/C++ / Ayuda con sincronización de procesos para MITM en C++ en: 15 Julio 2015, 17:42 pm
Hola a todos, miren estoy buscando la manera más eficiente de poder hacer todos estos procesos sin que el programa falle y con el mínimo consumo de CPU, puesto que un MITM, puede quemar mucho el ordenador y más si está mal estructurado.

Voy a añadir una función única hasta ahora (que yo sepa) al MITM, que es que escanee los hosts cada cierto tiempo, para actualizar la lista a la que hace spoofing, pues sino se acabará quedando vieja, spoofeará hosts que se hayan desconectado y no tendrá en cuenta los nuevos.

Luego tiene que hacer:

1. Escanear los hosts en primera ejecución y cada X tiempo. (actualizando la lista de usuarios).

2. Realizar arp spoofing a los hosts y a la gateway, pasando a los hosts la ip del gateway, y mi mac (no se si esto es lo mejor), luego a el gateway le paso la ip de los hosts y mi mac. Así pues cuando el router responda a una peticion del host la mandará a mi mac, sea cual sea la ip del host.

3. Redirigir paquetes, escuchando en la red. Los de los hosts los mando al router, los de el router les miro la ip y los mando a su correspondiente host (del cual tengo la mac en la lista, aqui tambien hay problemas porque despues de spoofearlos muestran mi mac), tendré que eliminar aquellos que tengan mi mac.

4. Analizar tráfico al redirigir paquetes, modificar paquetes, disfrutar de la red en general  :D :D

Pero claro, ¿como sincronizo todo esto? ¿Cómo lo plantearíais vosotros de la manera más inteligente y funcional?, la verdad es que son muchos procesos, estoy probando cosas, pero siempre me falla algo.

Por ejemplo he probado a hacer un proceso que haga spoofing cada 2 segundos a los hosts, y cada 60 segundos reescanea la red por ejemplo, en ese tiempo de reescaneo no spoofea, la idea sería, dividirlo en 2 uno que spoofea a los hosts, y pasado X tiempo llama al escaner, pero ahí hacer que el escaner ya esté hecho para poder recoger los hosts al momento y continuar el spoofing, pero no conozco métodos de espera en procesos me vendría bien que me dijerais alguno.

Eso nos permitiría hacer arp spoofing a los host de la red de manera dinamica, pues cada cierto tiempo habremos reescaneado la red, ya dije que en ese reescaner aparecen con mi mac, pero creo que podría solucionarlo.

Luego pasaría a redirigir el tráfico para ello necesitaría la dirección mac de los hosts y acceder a la lista de hosts que está siendo utilizada por el spoofer, ahí tendríamos el mayor problema, pues cuando el router nos envíe el paquete para la ip del ordenador B, tendremos que reenviarsela a ese ordenador a través de su MAC, y nosotros somos los unicos que la sabremos entonces. Luego necesitaremos tener la lista de hosts.

Y luego ya sería meter filtros a la hora de reenviar paquetes, que no habría ningún problema.

Saludos, a ver si me podéis iluminar un poco porque a veces también yo me hago mucho lío.








113  Programación / Programación C/C++ / Descomprimiendo gzip en C++ en: 15 Julio 2015, 01:05 am
Ey heavy weys, resulta que me ha venido un problemilla en el sniffer llamado "Accept-Encoding" y bueno hay 2 maneras descomprimir la cadena que nos dan, o algo que haré más adelante que será eliminarla de la respuesta del servidor una vez hecho el MITM, pero ahora quiero probar una cosa y necesito descomprimir la peticion.

Os paso un login en una web una vez ya pasado a cadena:

Código:
POST /user/login HTTP/1.1
Host: pag.com
Connection: keep-alive
Content-Length: 56
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0
.8
Origin: http://pag.com
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/43.0.2357.132 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://pag.com/user/login
Accept-Encoding: gzip, deflate
Accept-Language: es-ES,es;q=0.8
Cookie: a_c=yes; qaapo=a957d5ce95865c588f8388194b38653bd148935f%7E1; show_popi=b
f9d8e780daa75b620bfc484a5740acf03b595b0%7E1; __insp_wid=422975268; __insp_nv=tru
e;

  ▄öÑU┼V♫ n   n   ¶   dh♀\÷np↑ï├' E  `!¡@ Ç♠oÁ¼→ o^↨

La ultima linea muestra las variables del login (usuario y contraseña), comprimidas en gzip, he visto que se puede descomprimir archivos en gzip, pero la idea es descomprimir directamente la cadena para obtener otra cadena, con zlib, ¿se podrá hacer?

Saludos.
114  Programación / Programación C/C++ / Ejecutar funcion en bucle cada X tiempo. en: 13 Julio 2015, 22:00 pm
Hola, tengo he probado a usar la función clock() pero claro, el valor de la misma es más grande cada vez, así pues tras pasar un segundo desde la primera llamada devolverá 1000, pues tras 48h, devolvería 48x60x60x1000=172.800.000 que no se si una variable podría almacenarlo un unsigned long, o si clock() sería capaz de devolverlo, pero la verdad es un valor muy grande. Lo que tengo es:

Código
  1. clock_t inicio= clock();
  2. while(true)
  3. {
  4.    if(clock()-inicio>2000)
  5.       inicio=clock();
  6.       //ejecuto esto cada 2 segundos de bucle.
  7. }

El problema es que clock() tomará valores muy grandes y puede ser peligroso para el programa, ¿no habrá una mejor forma de hacerlo?

Saludos.
115  Comunicaciones / Redes / ¿como filtra paquetes wireshark? en: 13 Julio 2015, 13:59 pm
Hola a todos, estoy usando wireshark y me gustaría saber como filtra los paquetes.

Es decir cuando pongo por ejemplo "http" que hace exactamente ¿mostrar todos los paquetes con puerto de destino 80?, ¿o hay algo más?.

Para paquetes como ftp o https ¿el procedimiento es el mismo?, ¿simplemente haría un filtro de paquete para los paquetes de puerto de destino 21 y 443?.

Supongo también puede darse el caso de que una página web tenga esos servicios implementados en otro puerto, ¿como podríamos detectarlo entonces?

Saludos.


116  Foros Generales / Foro Libre / El chapo guzmán vuelve a escaparse de prisión en: 13 Julio 2015, 00:53 am
Bueno, me resulta curiosa y cuanto menos oportuna la noticia, pues hace a penas 2 días vi un documental sobre cómo se escapaba de prisiones y como consiguió albergar tal inmensa fortuna...

Así que cuando ví que se escapaba, pensé que era una noticia vieja de cuando le capturaron por primera vez, pero no es que el tipo se acababa de escapar de la prisión por un tunel que habían cavado desde una casa a 1,5km de distancia.

Ese tipo asesinó a miles de personas y su cartel no para de corromper a las fuerzas del poder, amenazándolas de muerte.

Lo que realmente me preocupa es hay gente que lo apoya, y lo tiene como un héroe o un ídolo, la verdad les faltan varias reflexiones a esas personas. O quizás probar la propia medicina que están promoviendo.

Hoy ha salido el mayor delincuente del mundo de la cárcel, por segunda vez, creo que para una persona que ha cometido tales atrocidades y ha creado un ejército de asesinos  sin piedad dedicado a la extorsión, la droga y la corrupción, ojalá acabe en Guantánamo pronto y sus hijos que quieren seguir sus pasos también.

Recordad: "Lo único necesario para que el mal triunfe es que los hombre buenos no hagan nada". Edmund Burke.  ;)

http://www.elmundo.es/america/2015/07/12/55a20bf0ca474100478b456c.html

Saludos.
117  Programación / Programación C/C++ / Algo heavy en C++ en: 12 Julio 2015, 20:58 pm
Hola miren, quiero realizar un MITM a la red, para ello me estoy sirviendo de wpcap.

Tengo la lista de usuarios en la red con su ip y mac asociada.

Ahora bien ya se como mandar mensajes ARP response para engañarlos y que me manden los datos a mí, el problema viene ahora.

Los mensajes ARP respose se los mando a los usuarios de una lista donde tengo las ips y sus macs de los usuarios de la red.

Lo que quiero es pasar el vector donde tengo las ips y macs a una funcion para que mande ARP responses a los hosts, pero a la vez quiero estar monitoreando el tráfico y añadiendo nuevos miembros a esa lista, y en caso de que uno falle o no responda ni un paquete en X tiempo quitarlo, si el numero de hosts es menor a X también se detendría, no sé si sería buena idea hacer 2 asyncs o threads.

Uno para mandar ARP responses y envenenar la red y otro que mientras me actualice la lista de hosts con sus ip y mac, la duda es:

¿Si tengo 2 asyncs que comparten una variable en este caso una clase que contiene un vector con la lista de usuarios, y una me está añadiendo y eliminando elementos mientras otra está trabajando con ellos, ¿fallaría el programa o no?

Ya os digo usar 2 asyncs o threads, uno escanea y actualiza la red y otro hace el spoofing.

Nada más, sino también se me ocurre meterlo todo en una función pero no sería igual de elegante y quedaría un poco gorda.

Saludos.
118  Programación / Programación C/C++ / Error al poner métodos de clase dentro de cabecera en: 9 Julio 2015, 13:03 pm
Hola de nuevo  :xD :xD, tengo una clase definida en la cabecera, pero al poner sus métodos dentro de la cabecera (archivo ".h") me da error sin embargo al poner sus métodos en el ".cpp" no da error, ¿que solución puedo tomar?.

Código
  1. struct host
  2. {
  3. public:
  4. u_char ip[4];
  5. u_char mac[6];
  6. };
  7.  
  8. class lista_usuarios
  9. {
  10. public:
  11. vector<host> usuarios;
  12. bool contiene_host(u_char* ip, u_char* mac);
  13. void insertar_host(u_char* ip, u_char* mac);
  14. };
  15.  
  16. void lista_usuarios::insertar_host(u_char* ip, u_char* mac)
  17. {
  18. int cont = 0, cant = 0;
  19.  
  20. for (int i = 0; i < usuarios.size(); i++)
  21. {
  22. cont = 0;
  23. for (int j = 0; j < 4; j++)
  24. if (ip[j] != usuarios[i].ip[j])
  25. {
  26. cont++;
  27. break;
  28. }
  29.  
  30. for (int j = 0; j < 6; j++)
  31. if (mac[j] != usuarios[i].mac[j])
  32. {
  33. cont++;
  34. break;
  35. }
  36. if (cont == 2)
  37. cant++;
  38. }
  39.  
  40. if (cant == usuarios.size())
  41. {
  42. host usuario;
  43. for (int j = 0; j < 4; j++)
  44. usuario.ip[j] = ip[j];
  45. for (int j = 0; j < 6; j++)
  46. usuario.mac[j] = mac[j];
  47. usuarios.push_back(usuario);
  48. }
  49. }

Cuando pongo esto en "capturador.h" me sale el siguiente error:

Citar
Error   8   error LNK2005: ya se definió "public: void __thiscall lista_usuarios::insertar_host(unsigned char *,unsigned char *)" (?insertar_host@lista_usuarios@@QAEXPAE0@Z) en main.obj

Ya os digo que simplemente al mover el método a el ".cpp" se corrige el error, pero ¿porque no me deja meterlo en la cabecera? No hay más definiciones que yo sepa XD

Saludos y gracias como siempre.

Edito_ Estoy en ello:

https://support.microsoft.com/en-us/kb/148652/es

Edito: Solucionado de rara manera ahora entiendo el error:

http://www.cplusplus.com/forum/beginner/30800/

El último comentario lo explica, lo que hice fue meter el metodo en el cuerpo de la funcion y quitar su declaracion cambiandola por la del cuerpo del método:

Código
  1. class lista_usuarios
  2. {
  3. private:
  4. vector<host> usuarios;
  5. public:
  6. //bool contiene_host(u_char* ip, u_char* mac);
  7. //void añadir_host(u_char* ip, u_char* mac);
  8. //void eliminar_host(u_char* ip, u_char* mac);
  9.  
  10. void lista_usuarios::añadir_host(u_char* ip, u_char* mac)
  11. {
  12. int cont = 0, cant = 0;
  13.  
  14. for (int i = 0; i < usuarios.size(); i++)
  15. {
  16. cont = 0;
  17. for (int j = 0; j < 4; j++)
  18. if (ip[j] != usuarios[i].ip[j])
  19. {
  20. cont++;
  21. break;
  22. }
  23.  
  24. for (int j = 0; j < 6; j++)
  25. if (mac[j] != usuarios[i].mac[j])
  26. {
  27. cont++;
  28. break;
  29. }
  30. if (cont == 2)
  31. cant++;
  32. }
  33.  
  34. if (cant == usuarios.size())
  35. {
  36. host usuario;
  37. for (int j = 0; j < 4; j++)
  38. usuario.ip[j] = ip[j];
  39. for (int j = 0; j < 6; j++)
  40. usuario.mac[j] = mac[j];
  41. usuarios.push_back(usuario);
  42. }
  43. };
  44.  
  45. };

Funciona, aunque no creo que sea el mejor método (pero al menos ya lo tengo en el ".h").

Saludos.
119  Programación / Programación C/C++ / Problema obtener datos de PIP_ADAPTER_INFO en: 8 Julio 2015, 22:08 pm
Lo de siempre diría, llamo a una función a la que le paso un PIP_ADAPTER_INFO por referencia, y me la rellenará:

Código
  1. bool seleccionar_interfaz(PIP_ADAPTER_INFO* adaptador)
  2. {
  3. bool seleccion = false;
  4. PIP_ADAPTER_INFO pAdapterInfo;
  5. static PIP_ADAPTER_INFO pAdapter = NULL;
  6. DWORD dwRetVal = 0;
  7.  
  8. ULONG ulOutBufLen = sizeof (IP_ADAPTER_INFO);
  9. pAdapterInfo = (IP_ADAPTER_INFO *)MALLOC(sizeof(IP_ADAPTER_INFO));
  10.  
  11. if (pAdapterInfo == NULL)
  12. return false;
  13.  
  14. if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
  15. {
  16. FREE(pAdapterInfo);
  17. pAdapterInfo = (IP_ADAPTER_INFO *)MALLOC(ulOutBufLen);
  18. if (pAdapterInfo == NULL)
  19. return false;
  20. }
  21.  
  22. if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR)
  23. {
  24. pAdapter = pAdapterInfo;
  25. while (pAdapter)
  26. {
  27. //Si tiene gateway y dirección IPv4 en la interfaz nos vale.
  28. if (pAdapter->DhcpEnabled == true &&
  29. pAdapter->GatewayList.IpAddress.String &&
  30. pAdapter->IpAddressList.IpAddress.String &&
  31. strcmp(pAdapter->IpAddressList.IpAddress.String, "0.0.0.0") != 0 &&
  32. strcmp(pAdapter->GatewayList.IpAddress.String, "0.0.0.0") != 0 )
  33. {
  34. //printf("%s", pAdapter->GatewayList.IpAddress.String); Esta linea lo cambia todo, hace que funcione y no haya problema pero no quiero poner printf..
  35. *adaptador = pAdapter;
  36. seleccion = true;
  37. break;
  38. }
  39. pAdapter = pAdapter->Next;
  40. }
  41. }
  42. else
  43. seleccion = false;
  44. if (pAdapterInfo)
  45. FREE(pAdapterInfo);
  46. return seleccion;
  47. }
  48.  

La llamada y declaración de la función está aquí:

Código
  1. lista_usuarios* buscar_usuarios()
  2. {
  3. PIP_ADAPTER_INFO* adaptador = nullptr;
  4.  
  5. adaptador = (PIP_ADAPTER_INFO*)malloc(sizeof(PIP_ADAPTER_INFO));
  6.  
  7. if (seleccionar_interfaz(adaptador))
  8.        {
  9.  
  10.        printf("%s", (*adaptador)->GatewayList.IpAddress.String);
  11. }
  12. {

Este printf muestra basura, ¿porqué?. Cuando pongo el printf que muestro de comentario en seleccionar_inferfaz() no muestra basura, funciona.

Lo paso como referencia esta vez, y he reservado memoria previamente. No se que puede ser XD.

Siento que abuso del foro  :rolleyes: :rolleyes: :rolleyes:

Saludos.
120  Programación / Programación C/C++ / Variable pierde valor en: 8 Julio 2015, 15:35 pm
Hola a todos, miren tengo la siguiente clase:

Código
  1. struct host
  2. {
  3. u_char ip[4];
  4. u_char mac[6];
  5. };
  6.  
  7. class lista_usuarios
  8. {
  9. public:
  10. vector<host> usuarios;
  11. void insertar_host(u_char* ip, u_char* mac);
  12. };

Tiene un vector de estructuras como se puede observar. Claro, ¿cómo hago para reservar memoria dinamica si tiene un vector que desconozco cuanto puede llegar a valer?

Declaración de un puntero de tipo clase lista_usuarios:

Código
  1. lista_usuarios* buscar_usuarios()
  2. {
  3. lista_usuarios *lista_host = nullptr;
  4. printf("ANTES: %d\n", lista_host->usuarios.size());
  5. auto envio_arp = async(enviando_arp, capturador, ip_cliente, mac_adaptador, ip_gateway);
  6. auto recojo_arp = async(recogiendo_arp, capturador, *lista_host);
  7.  
  8. envio_arp.get();
  9. recojo_arp.get();
  10.  
  11. printf("\nDESPUES: %d\n", lista_host->usuarios.size());
  12. return lista_host;
  13.  

Como se puede observar la paso como parámetro a la función recogiendo_arp.
En esa clase se añadirán estructuras de tipo host a la lista de hosts de lista_usuarios, con su mac e ip, se incrustarán.

El problema es que la lista me debería de salir que tiene 6 hosts y me dice que tiene 0, los valores se pierden.

Código
  1. void recogiendo_arp(pcap_t *capturador, lista_usuarios lista)
  2. {lista.insertar_host(ip, mac);}
  3.  

El problema es que tras llamar a la funcion y añadir host a el vector de lista_host de lista_usuarios, me dice que el vector lista_host tiene 0 elementos, cuando he podido comprobar que se añaden hasta 6.

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