0x0scan_port v1

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 420 fois - Téléchargée 20 fois

Contenu du snippet

Name : 0X0SCAN_PORT V1
Author : 0x0syscall
Date : 30/04/2008

Scanner de base sous linux qui scan une plage de port.
Dans la prochaine version il y aura :

-scan une plage d'ip.
-scan une plage de port.
-identifie le service utilisé par le port ouvert.

Source / Exemple :


#include "stdio.h"
#include "unistd.h"
#include "stdlib.h"
#include "netdb.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "netinet/in.h"

#define MAX_PORT 65535

char syntax()
{
        printf("\n=>Scan port by 0x0syscall\n");
	printf("-------------------------\n");
	printf("=>Syntax : <file> <host> <port_start_scan> <port_end_scan>\n\n");
	return 0;
}

char port()
{
	printf("\nERREUR\n");
	printf("------\n");
	printf("Le port doit être inferieur à 65535\n");
	printf("et le port de debut doit être inférieur au port de fin.\n\n");
	return 0;
}

int main(int argc, char **argv[])
{
	if (argc < 4)
		{
		syntax();
	  	return 0;
		}
	
	int start;
	int end;
	start = atoi(argv[2]);
	end   = atoi(argv[3]);
		
	if(end > MAX_PORT)
		{
		port();
		return 0;
		}

	if(start > end)
		{
		port();
		return 0;
		}
			
			int prt;
			int mysocket;
			int mysocket2;
			int srv_connect;
			int sockaddr_long;
	
			struct sockaddr_in sockaddr_mysocket;
        		sockaddr_long = sizeof(sockaddr_mysocket);

				sockaddr_mysocket.sin_family = PF_INET;
				sockaddr_mysocket.sin_addr.s_addr = inet_addr(argv[1]);
				
				FILE *fp;
				fp=fopen(argv[1], "a");

                                printf("\nPORT    STATUS \n");
                                printf("-----------------\n");
				
                                               
				for(prt=start;prt<=end;prt++)
					{
						sockaddr_mysocket.sin_port = htons(prt);

						mysocket2 = socket(PF_INET, SOCK_STREAM, 0);
						if(mysocket2 == -1)
						perror("");
				
						srv_connect = connect(mysocket2, (struct sockaddr*)&sockaddr_mysocket, sockaddr_long);
						
						if (srv_connect != -1)
							{
							printf("%d	Ouvert	\n", prt);
			    	   		    	fprintf(fp, "Port %d ouvert\n", prt);
						   	}
						close(fp);
						close(mysocket2);
					}
		
	printf("\n"); // pour faire plus propre ;)
	close(mysocket);
	return 0;

}

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

ok je vais essayer
Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009

sous windows l'utilisation de la fonction socket n'est pas la même d'où les 30 erreurs.

test le sous linux ;)
Messages postés
16
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
3 juin 2008

testé avec devcpp et borland c++ sous win xp
plus de 30 erreurs empêchent la compilation dans les deux cas (les mêmes)
même après correction des erreurs, rien ne marche
Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009

La source a bien été testée par moi :) et elle fonctionne très bien :)
tu dois être sous windows et mon code fonctionne que sous linux, comme j'ai cité dans ma description "Scanner de base sous linux..."
Messages postés
16
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
3 juin 2008

ça marche pas, et je suis certain que cette source n'a pas été testée
je m'explique

même en faisant ça,

#pragma argsused
#include "stdio.h"
#include "stdlib.h"
#include "sys/types.h"
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
#define MAX_PORT 65535
char syntax();
char port();

il y a un problème avec argv et argc
le fichier sortie est vide
le socket ne connecte pas
il n'y a pas de prototypes
les globales sont déclarées après le début

pas glop pas glop

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.