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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Necesito un código Escaner de Puertos en C++ usando Threads
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito un código Escaner de Puertos en C++ usando Threads  (Leído 4,654 veces)
Príncipe_Azul

Desconectado Desconectado

Mensajes: 21


while (1):


Ver Perfil WWW
Necesito un código Escaner de Puertos en C++ usando Threads
« en: 26 Abril 2014, 08:09 am »

Hola compañeros!! Un gusto otra vez por aquí

Bueno les comento que estoy con ganas de crear un programa en C++, hasta ahora digamos que voy bien, pero me topo ahora con un inconveniente, que en realidad no les, pero por el momento si.

Lo que yo deseo es crear un Bot Escaner de Puertos en C++ para Redes IRC de chat, yo al bot lo pude hacer solo y hasta cree una función split() para poder separar palabras en una cadena string.


La conexión me sale bien, el bot entra al Servidor, se loguea y recibe la IP del usuario que conecta al chat, el tema viene a la hora de escaner ciertos puertos para determinar si el usuario tiene un X puerto abierto que es prohibido.

Estos tipo de bots son de seguridad y se utilizan para prevenir ataques masivos de clones.


Yo he podido hacer el escaner que analiza por ejemplo 10 puertos para saber si un usuario tiene algún proxy no permitido, estos puertos casi siempre son usados por proxys y utilizan las IPs proxys para entrar "camuflados" o anónimos al servidor.


El escaner escanea puerto por puerto hasta terminar con el último puerto, pero lo que yo necesito es crear una función y hacer llamadas a esa función con el valor de la IP del usuario para saber si tiene un puerto abierto, pero cláro, para poder hacer esto, voy a necesitar el uso de Threads, en Python esto es simple, podría lograrlo con:


Código
  1. threading.Thread(target=Escaner.Analizar()).start()


o utilizar otra clase para lograr esto o usar la clase padre que es threading.


Pero en C++ por lo que leí es mucho más difícil o más difícil, en realidad lo quiero hacer no creo que sea algo difícil, pienso que un poco, porque el programa no tiene más que hacer que escanear puertos de IPs que van conectando al servidor


Esas IPs pueden ser cientas en cuestión de minutos, por eso necesito usar Threads, necesito que se divida por hilos los procesos para poder hacer esto posible.

Osea que por ejemplo en 3 segundos, el bot escanee 5 IPs al mismo tiempo, eso es lo que necesito.


Me encantaría que me dejaran un código de ejemplo para poder hacer esto posible, uso windows, así que utilizo la librería winsock2.


Me imagino que para el que sabe esto debe ser algo fácil o pan comido, yo seguiré intentando poder lograr esto y tratar de entender de alguna manera como hacer un código que utilice los Threads.


Desde ya les agradezco, muchas gracias a todos y que tengan buen día!! :-)


En línea

Foro de Ayuda de Programación General, IRC y mIRC Scripting: 
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Necesito un código Escaner de Puertos en C++ usando Threads
« Respuesta #1 en: 26 Abril 2014, 10:18 am »

Todo depende del estandar de C++ que uses.

Si usas el nuevo estadar C++11. Este tiene una clase para threads bastante sencilla:

Crear un thread
Código
  1. #include <iostream>
  2. #include <thread>
  3.  
  4. using namespace std;
  5.  
  6. void hilo()
  7. {
  8.    cout<<"Creando hilo..."<<endl;
  9. }
  10.  
  11. int main()
  12. {
  13.    thread t(hilo);
  14.  
  15.    t.join();
  16.    return 0;
  17. }

Crear un thread con parametros

Código
  1. #include <iostream>
  2. #include <thread>
  3.  
  4. using namespace std;
  5.  
  6. void hilo(int a,int b)
  7. {
  8.    cout<<"Creando hilo..."<<endl;
  9.    cout<<"Los argumentos son "<<a<<" y "<<b<<endl;
  10. }
  11.  
  12. int main()
  13. {
  14.    thread t(hilo,2,3);
  15.  
  16.    t.join();
  17.    return 0;
  18. }

Crear un thread en un miembro no estatico de una clase:
Código
  1. #include <iostream>
  2. #include <thread>
  3.  
  4. using namespace std;
  5.  
  6. class A
  7. {
  8.    int dato;
  9. public:
  10.    A(int n) {dato = n;}
  11.  
  12.    void hilo()
  13.    {
  14.        cout<<"Creando hilo..."<<endl;
  15.        cout<<"El objeto contiene "<<dato<<endl;
  16.    }
  17. };
  18.  
  19. int main()
  20. {
  21.    A Objeto(1);
  22.  
  23.    thread t(&A::hilo,Objeto);
  24.  
  25.    t.join();
  26.    return 0;
  27. }

Los códigos funcionan perfectamente en mi compilador. Si no funciona en el tuyo es porque o bien, tienes que activar el modo C++11 (en el Mingw es -std=c++11).

O bien, tu versión del compilador no soporta la nueva clase thread (es una clase joven y no todos los compiladores se han actualizado). Te dejo mi compilador por si te interesa (incluye la librería gráfica SFML, por eso ocupa de más):
https://dl.dropboxusercontent.com/u/69551225/x64-4.8.0-release-posix-seh-rev2.rar


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Príncipe_Azul

Desconectado Desconectado

Mensajes: 21


while (1):


Ver Perfil WWW
Re: Necesito un código Escaner de Puertos en C++ usando Threads
« Respuesta #2 en: 26 Abril 2014, 14:44 pm »

Hola, muchas gracias por tu ayuda!!  :D
Pero el primer código ni el segundo me funcionan, me dan este error al compilarlo:

C:\Users\Daniel\Desktop\C++\SocketPuertos.cpp||In function 'int main()':|
C:\Users\Daniel\Desktop\C++\SocketPuertos.cpp|12|error: 'thread' was not declared in this scope|
C:\Users\Daniel\Desktop\C++\SocketPuertos.cpp|12|error: expected ';' before 't'|
C:\Users\Daniel\Desktop\C++\SocketPuertos.cpp|13|error: 't' was not declared in this scope|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

¿Como puedo solucionarlo? o que establezco en la variable t?
En línea

Foro de Ayuda de Programación General, IRC y mIRC Scripting: 
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Necesito un código Escaner de Puertos en C++ usando Threads
« Respuesta #3 en: 26 Abril 2014, 15:50 pm »

Primero pruebalo en un proyecto aparte copiando y pegando tu codigo. Si te sigue sin funcionar es por que tu compilador no soporta el estandar C++11 (vuelve a leer mi mensaje, pero hazlo entero ahora ¬¬).

En algún lugar de mi mensaje ¬¬ dejé un link para descargar un compilador con los threads 100% funcionales. Solo es usarlo con el flag -std=c++11

Por cierto la documentación de los threads:
http://en.cppreference.com/w/cpp/thread
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Necesito un código Escaner de Puertos en C++ usando Threads
« Respuesta #4 en: 26 Abril 2014, 20:11 pm »

En mi Code::Blocks, activando la opción C++11, van perfecto.

¿Qué versión de SFML tienes instalada?

¡¡¡¡ Saluditos! ..... !!!!


« Última modificación: 26 Abril 2014, 20:17 pm por leosansan » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Necesito un código Escaner de Puertos en C++ usando Threads
« Respuesta #5 en: 26 Abril 2014, 20:52 pm »

La ultima, la instalé hace una semana.

Te dejo mi plantilla para proyectos de SFML:
https://dl.dropboxusercontent.com/u/69551225/SFML-Plantilla.rar

En el modo DEBUG sale una consola en segundo plano para que puedas usar tus cout y printfs para depurar. Para que salga solo la ventana, el modo RELEASE y reconstruir el proyecto entero.
« Última modificación: 26 Abril 2014, 20:55 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Necesito un código Escaner de Puertos en C++ usando Threads
« Respuesta #6 en: 26 Abril 2014, 22:06 pm »


Muchas Thanks, campeón.

¡¡¡¡ Saluditos! ..... !!!!


En línea

Príncipe_Azul

Desconectado Desconectado

Mensajes: 21


while (1):


Ver Perfil WWW
Re: Necesito un código Escaner de Puertos en C++ usando Threads
« Respuesta #7 en: 15 Mayo 2014, 08:19 am »

Muchas gracias, muy amables!!!  :)
En línea

Foro de Ayuda de Programación General, IRC y mIRC Scripting: 
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Escaner de puertos online « 1 2 »
PHP
AntonioPalma 12 6,890 Último mensaje 14 Octubre 2011, 18:20 pm
por ~ Yoya ~
[Código-PyQT4] Escaner de Puertos - JaAViEr | 0x5d
Scripting
0x5d 0 2,362 Último mensaje 31 Octubre 2013, 04:59 am
por 0x5d
¿ Me pueden explicar este código ? (Escaner de puertos)
Programación C/C++
pacosn1111 7 3,976 Último mensaje 20 Junio 2015, 11:58 am
por Eternal Idol
Python3 Escaner de puertos.
Scripting
@XSStringManolo 3 2,378 Último mensaje 28 Marzo 2020, 23:21 pm
por W17CH3R
Escáner de Puertos y WebUI Integrada
Scripting
Julio0 0 2,574 Último mensaje 22 Agosto 2023, 00:56 am
por Julio0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines