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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 242 fois - Téléchargée 34 fois

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

Ajouter un commentaire Commentaires
Messages postés
16
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
3 juin 2008

marche pas
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
WSAData sorry.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
De plus l'initialisation de SWAData peut ce faire en dehors de la boucle, cela ferai déjà des intructions en moint à répéter. Mais sinon l'idée est bonne :D
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
Heu tu est allergique au passage de paramètre que toutes tes variables sont en global?? lol et aussi pour récupérer tes numero de port, pourquoi passer pas des chaine de caractères et pas int? cela t'éviterai la atoi() :s .
Messages postés
3
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
22 avril 2006

je croix que c'est trop tard de mettre mon comentaire mais je tiens à ce que je te dise bravo malgré tout ce qu'ils disent pour toi c'est bien.et je croix que maintenat tu peux faire mieu :).
Afficher les 12 commentaires

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.