Scanne les ports ouverts en local et sauvegarde dans un fichier txt [vc++]

Contenu du snippet

Salut,
voici mon premier code proprement dit utilisant les socket en C...

Il scanne les ports d'une machine en local et affiche les ports touvert dans un petit fichier texte...

Voilà, j'ai besoin des commentaires pour continuer...

++

Source / Exemple :


#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")

using namespace std;

// déclarations des variables...
//socket
#define BUFF_SIZE 1000
SOCKET sListener;
struct sockaddr_in SockAddrBuffer;
int SockAddrLen = sizeof(struct sockaddr);
struct hostent* HostEntPointer;
SOCKET s;
SOCKADDR_IN sin;
BOOL bFini=FALSE;
char buffer[BUFF_SIZE];
WORD wVersionRequested;
//--------------------------
void listen(int port);
void scanning(char*debut,char*fin);
void save(int port);
char start[100];
char end[100];
int err;

// fonction principale
int main()
{
  cout<<"Entrez un port de depart : ";
  cin>>start;
  cout<<"\n\nEntrez un port de fin : ";
  cin>>end;
  cout<<"\n\n\nScanning des ports "<<start<<" a "<<end<<" en cours...\n\n";
  cout<<"----------------------------\n";
  scanning(start, end);
  cout<<"----------------------------\n";
  cout<<"Scanning fini !\a\n\n";
  cout<<"La liste des ports ouverts a ete sauvegardee dans le fichier \"port_open.txt\"\n\n\n";
  system("PAUSE");	
  return 0;
}

void scanning(char*debut,char*fin)
{
    int pnumber;
	for(pnumber = (atoi(debut)); pnumber < (atoi(fin)); pnumber++)
    {
	  // initialisation de la socket
	  WSADATA wsaData;
      wVersionRequested = MAKEWORD( 2, 0 );
	  err = WSAStartup( wVersionRequested, &wsaData );
	  
	  // Création d'une socket serveur
	  sListener = socket( AF_INET, SOCK_STREAM, 0 );
     
      // On définit le port associé à la socket
      struct sockaddr_in sin;
	  sin.sin_family = AF_INET;
      sin.sin_port = htons(pnumber);
      sin.sin_addr.s_addr = INADDR_ANY;

      // S'il y'a une erreur d'écoute du port, il est ouvert...
	  err = bind( sListener, (LPSOCKADDR)&sin, sizeof(sin) );
      if ( err == SOCKET_ERROR ) {
          closesocket( sListener );
		  save(pnumber);
		cout<<"Port "<<pnumber<<" Open\n";
	  }
	  closesocket(sListener);
    }

closesocket(sListener);
}

// fonction de sauvegarde du port dans un txt
void save(int n)
{
	FILE * fichier;
	fichier = fopen("port_open.txt","a");
	fprintf(fichier,"Port %d ouvert\n",n);
	fclose(fichier);
}

Conclusion :


Vos commentaires svp !!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.