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 !!
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.