Skaner portów

tobix10

Użytkownik
Dołączył
Luty 25, 2009
Posty
65
Napisałem sobie ten skaner, ale chciałem się upewnić czy zrobiłem to poprawnie.
Oto kod:

Kod:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#include <sstream>

int main()
{
    int sock;
    addrinfo hints, *addr;
    WSAData data;

    if(WSAStartup(MAKEWORD(2,2), &data) != 0)
    {
        std::cerr << "Can't initialize winsock 2.2";
        return -1;
    }

    ZeroMemory(&hints, sizeof (hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_flags = AI_PASSIVE;

    char port[10];
    std::stringstream ss;
    for(int i = 0; i < 65535; ++i)
    {
        ss << i;
        ss >> port;
        getaddrinfo(0, port, &hints, &addr);
        sock = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
        if(bind(sock, addr->ai_addr, addr->ai_addrlen))
            std::cout << "port :\t" << i << "\t open\n";

        ss.clear();
        freeaddrinfo(addr);
        shutdown(sock, SD_BOTH);
        closesocket(sock);
    }

    return 0;
}
Dziękuje za odpowiedzi.
 
Do góry Bottom