0x0scan_port v1

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 622 fois - Téléchargée 22 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
uxtobirza
Messages postés
16
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
3 juin 2008

3 juin 2008 à 10:12
ok je vais essayer
0x0syscall
Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009

2 juin 2008 à 11:26
sous windows l'utilisation de la fonction socket n'est pas la même d'où les 30 erreurs.

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

1 juin 2008 à 21:40
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
0x0syscall
Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009

1 juin 2008 à 19:34
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..."
uxtobirza
Messages postés
16
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
3 juin 2008

1 juin 2008 à 19:21
ç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.