Con la billetera vacia me aventure a buscar oportunidades en VWorker. Habia un monton de proyectos pero la mayoria es “Agregar X a wordpress” y los mas interesantes te piden tener experiencia, o sea, haber realizado una cantidad de trabajos en la plataforma.
Port scanner
Este proyecto no solicitaba experiencia y me pareció entretenido. Comence a codearlo en C++ e identifiqué 2 clases:
- portknock: Representa un intento de conexión a un par (address, port), que comenzo en el instante start_time.
- portscanner: Monitorea una colección de portknocks y retorna tuplas (address, port, event type) cuando se produce un evento.
Eventos de Port scanner
Hay dos tipos:
- CONNECTED (OPEN): Portscanner logro establecer una conexión.
- TIMEOUT: current_time – start_time >= timeout, se espero suficiente tiempo y no hubo respuesta.
Un intento de conexión rechazado es tratado como TIMEOUT, esto podria mejorarse creando un evento REFUSED. Finalmente Portscanner retornará una lista de eventos y finalizará cuando no haya mas portknocks en el.
Show me the code
portscanner sc(5);
std::list<struct portscanner_event> events;
std::list<struct portscanner_event>::iterator it;
...
while(sc.wait_events(&events) != 0) {
for(it = events.begin(); it != events.end(); it++) {
switch((*it).type) {
case OPEN:
output << (*it).addr << ":" << (*it).port << std::endl;
break;
case TIMEOUT:
break;
}
}
}
Este extracto lo que hace es imprimir solo los pares address:port que estan abiertos.
Mutacliente
Antes de hacer mi oferta al empleador le pregunte si prefería alguna plataforma en particular y respondió que daba igual mientras funcione. Le mostre un video de este programa funcionando y su necesidades cambiaron abruptamente, ahora lo queria para Windows con una User Interface grafica. Hasta ahi llego el proyecto. Para que no se pierda prefiero liberarlo en mi blog.
Mejorable (o defectos)
Port scanner realiza todos los intentos de conexión de una vez y si son muchos podria conllevar a un colapso, debido a algún limite en el sistema. Por ejemplo: el numero de sockets.