Scanner de port en c

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 212 fois - Téléchargée 34 fois

Contenu du snippet

C'est un scanner de port, vous n'avez qu'à modifier l'ip de la machine et la liste des ports à scanner.
Créé avec Dev-C++ aucun problème d'execution.

Source / Exemple :


#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

int main(int argc, char* argv[])
     {

char *ip = "127.0.0.1";//ip de la machine a scnanner (dans ce cas-ci localhost)
float o;
o=0;
float f;    
f=0;
float x;
float port;
float port_max;
float port_initial;
port_initial = 20; //premier port a scanner
port_max = 30; //dernier port a scanner
x = port_max-port_initial;

/* on initialise notre winsock */
	WSADATA WSAData;
	WSAStartup(MAKEWORD(2,0), &WSAData);
/* fin d'initialisation */

	
/* on construit notre socket */
	SOCKET sock;
	SOCKADDR_IN sin;

for (port=port_initial ; port <= port_max ; port++)

do
{
                 sock = socket(AF_INET, SOCK_STREAM, 0);
                 sin.sin_addr.s_addr = inet_addr(ip);
                 sin.sin_family     = AF_INET;
                 sin.sin_port     = htons(port);
                 if((connect(sock,(struct sockaddr*)&sin,sizeof(struct sockaddr))) == 0)
                         {
                         printf("Port %.f ouvert\n",port);
                         o++;
                         }
                 else
                         {
                         printf("Port %.f Ferme\n",port);
                         f++;
                         }
         port++;
}
while(port < port_max);

printf("\n\nAnalyse terminee avec succes !\n\n");
printf("%.f ports ont ete scannes :)\n", x);
printf("%.f port ouvert et %.f port ferme", o, f);
printf("\n\n\nAppuyez sur une touche pour quitter");
	                  	                  
getchar();

WSACleanup(); //on libére les ressources allouées
closesocket(sock); //on ferme le socket

return 0;
                                              	             
     }//fin int main

Conclusion :


Je suis débutant en C donc ne soyez pas trop méchant ;-)
Si vous avez des améliorations à apporter notamment pour la vitesse du scan, faites moi signe ;-)
shown@ifrance.com

A voir également

Ajouter un commentaire

Commentaires

deck_bsd
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1 -
Yop,

sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr(ip);
sin.sin_family = AF_INET;

peut être mis hors de la boucle pour optimiser ton code.
wizard512
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013
-
Bonne source,
simple et utile, trés utile,
et en plus avec dev c++
Merci....

Note : 9/10
enhr
Messages postés
3
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
4 décembre 2005
-
j'ai moi aussi des problème de compilation
les messages d'erreurs
undefined reference to `WSAStartup@8'
undefined reference to `socket@12'

undefined reference to `inet_addr@4'
undefined reference to `htons@4'
undefined reference to `connect@12'
undefined reference to `closesocket@4'
undefined reference to `WSACleanup@0'
collect2: ld returned 1 exit status
j'ai vraiment besion d'aide comment configurer mon compilateur?
excrt
Messages postés
75
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2006
-
//...
char *ip = "127.0.0.1";//ip de la machine a scnanner (dans ce cas-ci localhost)
WORD o 0; // WORD> unsigned short
WORD f = 0;
WORD x;
WORD port;
WORD port_max = 30;
WORD port_initial = 20;
//port_initial = 20; //premier port a scanner
//port_max = 30; //dernier port a scanner
x = (port_max - port_initial);
//...

pour obtenir un max de portabilité d'un compilateur/lieur(linker) à un autre, éviter les extensions dans le noms des librairies
« #pragma comment(lib, "ws2_32.lib") » devient ceci « #pragma comment(lib, "ws2_32") »
sous Dev-C++/CodeBlocks c'est « libws2_32.a » et sous MSVC c'est « ws2_32.lib », seul le nom(sans extension) de la librairie suffit dans le « #pragma ... »

si par malheur le pragma ne fonctionne pas alors il faut ajouter la librairie dans les options de compilation(pour le lieur/linker)
cs_YURIX
Messages postés
18
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
12 décembre 2009
-
J'ai un problème lorsque j'essaie de compiler le code avec Dev-C++ 4

Le log du compilateur me donne:

Compilateur: Default compiler
Exécution de g++.exe...
g++.exe "C:\Documents and Settings\YuRi\Bureau\Scanner.cpp" -o "C:\Documents and Settings\YuRi\Bureau\Scanner.exe" -fno-access-control -fmessage-length=0 -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" -fmessage-length=0

In function `int main(int, char**)':
warning: passing `float' for converting 1 of `u_short htons(u_short)'

undefined reference to `WSAStartup@8'
undefined reference to `socket@12'

undefined reference to `inet_addr@4'
undefined reference to `htons@4'
undefined reference to `connect@12'
undefined reference to `closesocket@4'
undefined reference to `WSACleanup@0'
collect2: ld returned 1 exit status

Exécution terminée

A chaque fois que j'essaie de faire un fichier cpp avec le code pour les winsocks j'ai cette erreur. Quelqu'un aurait-il une solution a mon problème ?

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.