Passer au contenu principal
Menu
← BACK TO WORK

Scanner Réseau C++

Network Security Tool

Outil d'analyse de ports multi-threadé développé en C++ pour l'audit réseau.

ClientProjet Lab
RoleDéveloppeur Sécurité
Year2024
StackC++, TCP/IP, Linux, Multithreading
Scanner Réseau C++

THE CHALLENGE

Optimiser les performances du scan multi-threadé tout en évitant les faux positifs et la détection par les IDS.

port_scanner.cpp
1
#include <iostream>
2
#include <thread>
3
#include <vector>
4
#include <sys/socket.h>
5
#include <arpa/inet.h>
6
#include <unistd.h>
7
 
8
bool scanPort(const std::string& host, int port) {
9
    int sock = socket(AF_INET, SOCK_STREAM, 0);
10
    if (sock < 0) return false;
11
 
12
    struct timeval timeout;
13
    timeout.tv_sec = 1;
14
    timeout.tv_usec = 0;
15
    setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
16
 
17
    struct sockaddr_in addr;
18
    addr.sin_family = AF_INET;
19
    addr.sin_port = htons(port);
20
    inet_pton(AF_INET, host.c_str(), &addr.sin_addr);
21
 
22
    bool isOpen = (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) == 0);
23
    close(sock);
24
 
25
    return isOpen;
26
}
27
 
28
int main() {
29
    std::string target = "192.168.1.1";
30
    std::vector<std::thread> threads;
31
 
32
    for (int port = 1; port <= 1024; port++) {
33
        threads.emplace_back([target, port]() {
34
            if (scanPort(target, port)) {
35
                std::cout << "Port " << port << " is open\n";
36
            }
37
        });
38
    }
39
 
40
    for (auto& t : threads) t.join();
41
    return 0;
42
}
Detail View

Explore More

All Projects