Ferramenta de CLI para escaneamento de portas TCP, desenvolvida em C++ moderno (C++17).
A ferramenta foi construída sem dependências externas de rede (como Boost.Asio), utilizando apenas a API nativa do Linux (POSIX).
- Performance: Implementação de
ThreadPoolcustomizado para varredura paralela. - Low-Level Networking: Uso de
sys/socketcomfcntleselectpara conexões não-bloqueantes. - Concorrência Segura: Uso de
std::mutexestd::lock_guardpara proteção de I/O (Thread Safety).
O código foi modularizado para separar a lógica de rede, concorrência e controle de fluxo.
| Componente | Arquivo | Detalhes da Implementação |
|---|---|---|
| ThreadPool Engine | src/threadpool.cpp |
Gerenciador de workers usando std::thread, std::queue e std::condition_variable para distribuir tarefas eficientemente. |
| Non-Blocking I/O | src/network.cpp |
Wrapper de socket que utiliza O_NONBLOCK e select() para implementar timeouts precisos em conexões TCP. |
| Scanner Logic | src/scanner.cpp |
Orquestrador que define a estratégia de scan (Rápido vs Preciso) e gerencia a saída no terminal com Mutex. |
| CLI Entrypoint | src/main.cpp |
Tratamento de argumentos e inicialização da engine de scan. |
Este projeto utiliza CMake para build
Compilação:
mkdir build
cd build
cmake ..
makeRodar Execução: A sintaxe é: ./recon <porta_inicio> <porta_fim>
Modo Rápido (f): Usa 50 threads e timeout de 1s (Estilo Masscan).
Modo Preciso (s): Usa conexão sequencial com timeout maior (Estilo Nmap padrão).
'''bash
./recon f 8.8.8.8 1 100
./recon s 127.0.0.1 20 8080