C++ Portscanner



  • Ich habe mich hier mal an einem Portscanner probiert.
    Leider baut dieser keine Verbindung auf und erhalte den Rückgabewert -1.
    Ich wäre sehr froh ,wenn ihr mir helfen würdet.

    #include <sys/types.h>
    #include <sys/socket.h>
    #include <stdio.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <iostream>
    
    using namespace std; 
    
    int main()
      {
       char *ip;
       char var;
       int socket_nummer;
       int laenge;
       struct sockaddr_in adressinfo;
       int ergebnis;
       cout  << "IP-Adresse:";
       cin >> var;
       ip = &var;
       unsigned short int portnummer;
       for (portnummer = 0;portnummer<65535;portnummer++)
         {
          socket_nummer = socket(AF_INET, SOCK_STREAM, 0);
          adressinfo.sin_family      = AF_INET;
          adressinfo.sin_addr.s_addr = inet_addr(ip);
          adressinfo.sin_port        = htons(portnummer);
          laenge = sizeof(adressinfo);
          ergebnis = connect(socket_nummer, (struct sockaddr *)&adressinfo, laenge);
          if (ergebnis == 0)
            {
             printf("\n Verbindungsaufbau erfolgreich an");
             printf("IP %s - Port %d",ip,portnummer);
            }
          if (ergebnis == -1)
           {
    		   cout << "Fail";
    		   break;
    	   }
          close(socket_nummer);
         }
        printf("\n\n");
       }
    

    🙂 🙂 🙂



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • luggas schrieb:

    Ich wäre sehr froh ,wenn ihr mir helfen würdet.

    Kann es sein, dass Dir Grundlagenwissen fehlt?

    char *ip;
       char var;
    // […]
       cout  << "IP-Adresse:";
       cin >> var;
       ip = &var;
    

    Was soll den das sein?



  • Bei deinem Code muss ich kotzen.

    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <iostream>
    
    int main()
    {
    	std::string ip;
    	std::cout << "IP-Adresse:";
    	std::cin >> ip;
    
    	sockaddr_in addr;
    	addr.sin_family = AF_INET;
    	addr.sin_addr.sin_addr = inet_addr(ip.c_str());
    
    	for(unsigned short port = 1; port; ++port)
    	{
    		int socket = socket(AF_INET, SOCK_STREAM, 0);
    		addr.sin_port = htons(port);
    
    		if(!connect(socket, reinterpret_cast<sockaddr*>(&addr), sizeof(sockaddr)))
    			std::cout << "Verbindung an Port " << port << " erfolgreich" << std::endl;
    		else
    			std::cout << "Verbindung an Port " << Port << " nicht erfolgreich" << std::endl;
    
    		close(socket);
    	}
    }
    

    Bezüglich Port 0 siehe http://compnetworking.about.com/od/tcpip/p/port-numbers-0.htm



  • Ihr habt wahrscheinlich recht.
    Ich probier mich erstmal an einfacheren Dingen.
    Aber trotzdem danke für die Hinweise. 🙂


Anmelden zum Antworten