begin process at 2010 02 10 09:11:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > SCANNER IP ET PORTS [DEV-C++]

SCANNER IP ET PORTS [DEV-C++]


 Information sur la source

Note :
7,75 / 10 - par 4 personnes
7,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :04/10/2002 Date de mise à jour :05/10/2002 18:38:50 Vu / téléchargé :37 550 / 1 742

Auteur : Jhep

Ecrire un message privé
Site perso
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Un petit scanner d'ip et de ports très simple, en mode console. Il peut certainement être amélioré alors laissez vos remarques. Par exemple les tentatives de connexion sont très longues, si quelqu'un a une solution.

Source

  • //ScanH by Jhep
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • #include <winsock.h> // c:\dev-c++\lib\libwsock32.a
  • int CompareIP(SOCKADDR_IN, SOCKADDR_IN);
  • void Use();
  • void End();
  • void Error();
  • SOCKET ws;
  • int main(int argc, char *argv[])
  • {
  • if (argc < 5){Use(); return 0;}
  • if (!strcmp(argv[1], "-a")){
  • SOCKADDR_IN from, to, ip;
  • long Port;
  • from.sin_family = to.sin_family = ip.sin_family = AF_INET;
  • from.sin_addr.S_un.S_addr = inet_addr(argv[2]);
  • to.sin_addr.S_un.S_addr = inet_addr(argv[3]);
  • Port = atoi(argv[4]);
  • if (from.sin_addr.S_un.S_addr == to.sin_addr.S_un.S_addr == INADDR_NONE ||
  • CompareIP(from, to) == 1 || Port < 0 || Port > 65535) {Use(); return 0;}
  • WSADATA Info;
  • if (WSAStartup(MAKEWORD(2,2),&Info)) {Error(); return 0;};
  • if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}
  • printf(" ScanH\n\nScan les IP de %s à %s sur le port %s.\n\n", argv[2], argv[3], argv[4]);
  • ip = from;
  • ip.sin_port = htons(Port);
  • do{
  • printf("IP : %d.%d.%d.%d", ip.sin_addr.S_un.S_un_b.s_b1, ip.sin_addr.S_un.S_un_b.s_b2, ip.sin_addr.S_un.S_un_b.s_b3,
  • ip.sin_addr.S_un.S_un_b.s_b4);
  • if (!connect(ws, (sockaddr *) &ip, sizeof(ip))){
  • printf(" OK");
  • closesocket(ws);
  • if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}
  • }
  • printf("\n");
  • ip.sin_addr.S_un.S_un_b.s_b4++;
  • if (ip.sin_addr.S_un.S_un_b.s_b4 > 255){ip.sin_addr.S_un.S_un_b.s_b4 = 0; ip.sin_addr.S_un.S_un_b.s_b3++;}
  • if (ip.sin_addr.S_un.S_un_b.s_b3 > 255){ip.sin_addr.S_un.S_un_b.s_b3 = 0; ip.sin_addr.S_un.S_un_b.s_b2++;}
  • if (ip.sin_addr.S_un.S_un_b.s_b2 > 255){ip.sin_addr.S_un.S_un_b.s_b2 = 0; ip.sin_addr.S_un.S_un_b.s_b1++;}
  • if (ip.sin_addr.S_un.S_un_b.s_b1 > 255) break;
  • } while (CompareIP(ip, to) == 2 || CompareIP(ip, to) == 3);
  • End();
  • return 0;
  • }
  • if (!strcmp(argv[1], "-p")){
  • SOCKADDR_IN ip;
  • long Port1, Port2, Port;
  • ip.sin_family = AF_INET;
  • ip.sin_addr.S_un.S_addr = inet_addr(argv[2]);
  • Port1 = atoi(argv[3]);
  • Port2 = atoi(argv[4]);
  • if (ip.sin_addr.S_un.S_addr == INADDR_NONE || Port1 < 0 || Port1 > 65535 || Port2 < 0 || Port2 > 65535 || Port1 > Port2)
  • Use();
  • WSADATA Info;
  • WSAStartup(MAKEWORD(2, 2), &Info);
  • if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}
  • printf(" ScanH\n\nScan l'IP %s sur les ports %s à %s.\n\n", argv[2], argv[3], argv[4]);
  • Port = Port1;
  • do{
  • printf("Port : %d", Port);
  • ip.sin_port = htons(Port);
  • if (!connect(ws, (sockaddr *) &ip, sizeof(ip))){
  • printf(" OK", Port);
  • closesocket(ws);
  • if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}
  • }
  • printf("\n");
  • Port++;
  • }while(Port <= Port2);
  • End();
  • }
  • else{
  • Use();
  • }
  • return 0;
  • }
  • int CompareIP(SOCKADDR_IN IP1, SOCKADDR_IN IP2)
  • {
  • double Nb1, Nb2;
  • Nb1 = IP1.sin_addr.S_un.S_un_b.s_b4 + IP1.sin_addr.S_un.S_un_b.s_b3 * 0x100 + IP1.sin_addr.S_un.S_un_b.s_b2 * 0x10000 + IP1.sin_addr.S_un.S_un_b.s_b1 * 0x1000000;
  • Nb2 = IP2.sin_addr.S_un.S_un_b.s_b4 + IP2.sin_addr.S_un.S_un_b.s_b3 * 0x100 + IP2.sin_addr.S_un.S_un_b.s_b2 * 0x10000 + IP2.sin_addr.S_un.S_un_b.s_b1 * 0x1000000;
  • if (Nb1 > Nb2) return 1;
  • if (Nb1 < Nb2) return 2;
  • if (Nb1 == Nb2) return 3;
  • }
  • void Use()
  • {
  • printf(" ScanH\n\nUtilisation :\nScanH.exe -a IPdeDepart IPdeFin Port\nou\nScanH.exe -p IP PortdeDepart PortdeFin\n");
  • system("pause");
  • }
  • void End()
  • {
  • closesocket(ws);
  • WSACleanup();
  • system("pause");
  • }
  • void Error()
  • {
  • printf("\nErreur !\n");
  • system("pause");
  • }
//ScanH by Jhep
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock.h> // c:\dev-c++\lib\libwsock32.a

int CompareIP(SOCKADDR_IN, SOCKADDR_IN);
void Use();
void End();
void Error();

SOCKET ws;

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

if (argc < 5){Use(); return 0;}

if (!strcmp(argv[1], "-a")){

SOCKADDR_IN from, to, ip;
long Port;
from.sin_family = to.sin_family = ip.sin_family = AF_INET;
from.sin_addr.S_un.S_addr = inet_addr(argv[2]);
to.sin_addr.S_un.S_addr = inet_addr(argv[3]);
Port = atoi(argv[4]);

if (from.sin_addr.S_un.S_addr ==  to.sin_addr.S_un.S_addr == INADDR_NONE ||
 CompareIP(from, to) == 1 || Port < 0 || Port > 65535) {Use(); return 0;}


WSADATA Info;
if (WSAStartup(MAKEWORD(2,2),&Info)) {Error(); return 0;};
if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}

printf(" ScanH\n\nScan les IP de %s à %s sur le port %s.\n\n", argv[2], argv[3], argv[4]);

ip = from;
ip.sin_port = htons(Port);
do{
printf("IP : %d.%d.%d.%d", ip.sin_addr.S_un.S_un_b.s_b1, ip.sin_addr.S_un.S_un_b.s_b2, ip.sin_addr.S_un.S_un_b.s_b3,
 ip.sin_addr.S_un.S_un_b.s_b4);

if (!connect(ws, (sockaddr *) &ip, sizeof(ip))){
printf(" OK");
closesocket(ws);
if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}
}
printf("\n");

ip.sin_addr.S_un.S_un_b.s_b4++;
if (ip.sin_addr.S_un.S_un_b.s_b4 > 255){ip.sin_addr.S_un.S_un_b.s_b4 = 0; ip.sin_addr.S_un.S_un_b.s_b3++;}
if (ip.sin_addr.S_un.S_un_b.s_b3 > 255){ip.sin_addr.S_un.S_un_b.s_b3 = 0; ip.sin_addr.S_un.S_un_b.s_b2++;}
if (ip.sin_addr.S_un.S_un_b.s_b2 > 255){ip.sin_addr.S_un.S_un_b.s_b2 = 0; ip.sin_addr.S_un.S_un_b.s_b1++;}
if (ip.sin_addr.S_un.S_un_b.s_b1 > 255) break;
} while (CompareIP(ip, to) == 2 || CompareIP(ip, to) == 3);
End();
return 0;
}

if (!strcmp(argv[1], "-p")){

SOCKADDR_IN ip;
long Port1, Port2, Port;
ip.sin_family = AF_INET;
ip.sin_addr.S_un.S_addr = inet_addr(argv[2]);
Port1 = atoi(argv[3]);
Port2 = atoi(argv[4]);
if (ip.sin_addr.S_un.S_addr == INADDR_NONE || Port1 < 0 || Port1 > 65535 || Port2 < 0 || Port2 > 65535 || Port1 > Port2)
 Use();

WSADATA Info;
WSAStartup(MAKEWORD(2, 2), &Info);
if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}

printf(" ScanH\n\nScan l'IP %s sur les ports %s à %s.\n\n", argv[2], argv[3], argv[4]);

Port = Port1;
do{
printf("Port : %d", Port);
ip.sin_port = htons(Port);
if (!connect(ws, (sockaddr *) &ip, sizeof(ip))){
printf(" OK", Port);
closesocket(ws);
if ((ws = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {Error(); return 0;}
}
printf("\n");
Port++;
}while(Port <= Port2);
End();
}
else{
Use();
}

return 0;
}

int CompareIP(SOCKADDR_IN IP1, SOCKADDR_IN IP2)
{
double Nb1, Nb2;
Nb1 = IP1.sin_addr.S_un.S_un_b.s_b4 + IP1.sin_addr.S_un.S_un_b.s_b3 * 0x100 + IP1.sin_addr.S_un.S_un_b.s_b2 * 0x10000 + IP1.sin_addr.S_un.S_un_b.s_b1 * 0x1000000;
Nb2 = IP2.sin_addr.S_un.S_un_b.s_b4 + IP2.sin_addr.S_un.S_un_b.s_b3 * 0x100 + IP2.sin_addr.S_un.S_un_b.s_b2 * 0x10000 + IP2.sin_addr.S_un.S_un_b.s_b1 * 0x1000000;
if (Nb1 > Nb2) return 1;
if (Nb1 < Nb2) return 2;
if (Nb1 == Nb2) return 3;
}

void Use()
{
printf(" ScanH\n\nUtilisation :\nScanH.exe -a IPdeDepart IPdeFin Port\nou\nScanH.exe -p IP PortdeDepart PortdeFin\n");
system("pause");
}

void End()
{
closesocket(ws);
WSACleanup();
system("pause");
}

void Error()
{
printf("\nErreur !\n");
system("pause");
} 

 Conclusion

Merci à MPH pour sa source "CMphSock".

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • ScanH.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 565 octets
  • ScanH.exeTélécharger ce fichier [Réservé aux membres club]5 632 octets

Télécharger le zip


 Sources du même auteur

[DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL
Source avec Zip MINI SERVER FTP
Source avec Zip APPLI WINDOWS POUR UTILISER WINSOCK [DEV-C++]

 Sources de la même categorie

Source avec Zip TIM_RESEAU, CLASSES POUR RESEAU COMPLET par williamallas
Source avec Zip INTERNET IP FINDER TROUVER VOS ADRESSE IP (INTERNET) par xmustapha
Source avec Zip CLIENT/SERVEUR AVEC TSOCKETSERVER & TCLIENTSOCKET par xmustapha
Source avec Zip REMOTE SHELL GEN par ganjarasta
PROXY IRC SIMPLE (WINDOWS/WINSOCK) par _michel

Commentaires et avis

Commentaire de LordBob le 05/01/2003 02:51:47

sans vouloi etre mechant... bof...

Commentaire de Jhep le 05/01/2003 09:40:49

Non tu a raison c même assez mauvais mais je travaille sur une version windows qui sera (j'espere) bien meilleur.

Commentaire de vicent4 le 08/10/2003 11:07:30

je n arrive pas a faire marcher ton code avec visual c++, il reste toujours des erreurs que je n'arrive pas à enlever.
Pourrait tu m' aider.

Commentaire de pouda le 20/10/2003 09:20:05

tu pourrai simplement t'aider avec le code source de nmap sous linux
;-)

Longue vie a cppfrance
Linux poweer

Commentaire de JCpp le 23/10/2003 13:36:10

Trop Trop lent, utilise le Theard.

Tu travailles sur une version windows, tu avances ?
Je cherche un scanner d'ip rapide.
Je veux bien t'aider pour en faire un.

Commentaire de Jhep le 23/10/2003 14:15:55

Salut
En fait j'ai abandonné le projet car j'en ai perdu l'utilité mais avec windows pas besoin de thread c'est très bien géré (avec le système messages). Et pour ce prog complètement pourri (vicent oublies le) il faudrait sûrement modifier le timeout chaispascomment. Enfin pour Linux je vais enfin m'y mettre maintenant que j'ai un disque-dur de 80go.

Commentaire de pouda le 23/10/2003 16:47:01

du faite que tu as le code source tu peu a vlonter remodifier le time out de nmap ou de kelkonke ou je crois meme kil ya un parametre pour justement le modifier!
Un petit script sympa avec quelques  | pipe | et le tours est jouer...
Pour renseignment TCPDUMP sous Linux est pas mal non plus !!

Linux POwer!!!

Commentaire de Jhep le 23/10/2003 20:12:18

Je n'ai pas très bien compris tes explications. nmap ? pipe ?

Commentaire de pouda le 23/10/2003 20:34:38

Nmap c'est unpetit utils sous linux qui permet de recupere la liste des port ouverts d'un machine distante
Tcpdump qd a lui teste une plage d'adresse ip definie et te donne celle qui son active
Qt au pipe lol! c un caractere de redirection en sortie sous linux!!
Faut il encore conaitre Linxux ;-)

A ton service !!
Linux Poweeeer!!

Commentaire de pouda le 23/10/2003 20:37:26

au fait!!! vive l'open source !!!
tu peu remodifier ces outils a ta guise si tu connai un peu le C++ ca devrai aller
@@@++

Linux Poweeer!!

Commentaire de Jhep le 23/10/2003 20:59:48

Merci pouda je vais installer Debian dans les jours qui viennent.

Commentaire de GFACTION le 13/12/2004 20:25:43

Quand je compile ça dans dev-c++ j'ai c'est ces erreurs :

C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x122):test1.cpp: undefined reference to `inet_addr@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x13b):test1.cpp: undefined reference to `inet_addr@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x1d6):test1.cpp: undefined reference to `WSAStartup@8'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x1fa):test1.cpp: undefined reference to `socket@12'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x268):test1.cpp: undefined reference to `htons@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x2a9):test1.cpp: undefined reference to `connect@12'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x2d0):test1.cpp: undefined reference to `closesocket@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x2e1):test1.cpp: undefined reference to `socket@12'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x426):test1.cpp: undefined reference to `inet_addr@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x4b5):test1.cpp: undefined reference to `WSAStartup@8'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x4c6):test1.cpp: undefined reference to `socket@12'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x543):test1.cpp: undefined reference to `htons@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x560):test1.cpp: undefined reference to `connect@12'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x58e):test1.cpp: undefined reference to `closesocket@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x59f):test1.cpp: undefined reference to `socket@12'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x788):test1.cpp: undefined reference to `closesocket@4'
C:\WINDOWS\TEMP\ccmQaaaa.o(.text+0x790):test1.cpp: undefined reference to `WSACleanup@0'


Quelqu'un sait pourquoi ? merci

Commentaire de magus54 le 23/01/2005 14:05:31

t'as lié libmswsock.a a ton projet ??

Commentaire de magus54 le 23/01/2005 14:06:59

euh c:\dev-c++\lib\libwsock32.a désolé je me goure toujours avec les libs, moi aussi ^^

Commentaire de banane_rose le 17/06/2005 22:28:52

c'est classique pas besoin d'en faire une source ...

Commentaire de m m le 10/07/2005 05:45:08

COMMEN SE SERVIR DE TON SCAN

Commentaire de banane_rose le 20/07/2005 16:30:04

mince j'ai du confondre 2 sources désolé

Commentaire de trhilkil le 22/10/2005 12:25:58

slt, enfin tu es le premier ou je trouve un scanner qui fonctionne en dos ou je peux ajouté un debut et une fin d'ip ex: 127.0.0.1 255.255.255.255 avec le mode port ameliore le svp les miens sont detect comme virus ex:scan500,Sfind et d'autre j'ai besoin du prompt donc continue enfin voila ;) si tu sais me renseigné quand tu avanceras par exemple comme dit plus haut ajoute des thread sinon ma connection ce fait bouffé :P
Je ne suis pas programmeur mais j'espere le devenir bientot :D donc j'ai surtout besoin que tu le fasse , je ne sais pas si ce que je dis est bien tourné j'espere que tu comprendra .
A bientot
Ton nouvelle adepte :P

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales