begin process at 2012 02 13 00:08:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > SCANNEUR DE PORTS V1.2 WIN32 (SANS MFC)

SCANNEUR DE PORTS V1.2 WIN32 (SANS MFC)


 Information sur la source

Note :
5,67 / 10 - par 3 personnes
5,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :25/05/2003 Date de mise à jour :07/07/2003 15:58:02 Vu / téléchargé :8 682 / 756

Auteur : Anacr0x

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

 Description

Encor une fois, g copier pas mal de truc sur d'autre source (hé ouais, jsui un débutant en c++), mé bon, vu que la source d'origine du scanner (http://www.cppfrance.com/article.aspx?Val=1859) est en mode console et relativement lente, g voulu la faire en win32 en rajoutant d'autres petits truc.

Cette mise a jour suporte le style XP, le changement de focus avec tab, et quelque petits changements. Dans le fichier zip, j'ai en plus rajouté la liste d'un bon nombre de ports connus.  

Source

  • #include <windows.h>
  • #include <stdlib.h>
  • // ID du EditBox
  • #define ID_EDITBOX 100
  • // ID du Button
  • #define ID_BUTTON 101
  • #define ID_BUTTON_QUIT 102
  • #define ID_BUTTON_AIDE 103
  • #define ID_BUTTON_VIDER 104
  • // ID de la ListBox
  • #define ID_LISTBOX 105
  • // Nom de la classe
  • char MainClassName[] = "Scanneur de ports";
  • // Instance du programme
  • HINSTANCE MainInstance;
  • // Handle de la fenêtre
  • HWND MainHandle;
  • // Handle des EditBox
  • HWND OrdiHandle;
  • HWND IPHandle;
  • HWND OrdiScanHandle;
  • HWND MinHandle;
  • HWND MaxHandle;
  • HWND AttenteHandle;
  • HWND ListHandle;
  • // Handle des Boutons
  • HWND ButtonHandle;
  • HWND ButtonAideHandle;
  • HWND ButtonViderHandle;
  • HWND ButtonQuitHandle;
  • // Handle d'un des labels
  • HWND lblhWnd6;
  • // ID du thread
  • DWORD threadID;
  • // Pour le hook (capture d'une touche)
  • HHOOK hhk = 0;
  • ///////////Fonction qui affiche l'adresse ip et le nom de l'ordi////////////////
  • void adresseIP()
  • {
  • // Ne sert strictement à rien mais permet un affichage avec style Xp normal (???)
  • ShellExecute (NULL, NULL, NULL, NULL, NULL, 0);
  • struct sockaddr_in sin;
  • struct hostent * phe;
  • char FAR buffer[64] ;
  • WORD wVersionRequested;
  • WSADATA wsaData;
  • int err;
  • wVersionRequested = MAKEWORD(1, 1);
  • err = WSAStartup(wVersionRequested, &wsaData);
  • if (err != 0)
  • {
  • MessageBox(MainHandle, "Impossible de trouver winsock.dll", "Erreur", MB_ICONERROR | MB_OK);
  • }
  • gethostname(buffer, sizeof(buffer));
  • phe = gethostbyname(buffer);
  • if(phe==NULL)
  • {
  • MessageBox(MainHandle, "Erreur : pointeur nul", "Erreur", MB_ICONERROR | MB_OK);
  • WSACleanup();
  • exit(1);
  • }
  • int I = 0 ;
  • while((phe->h_addr_list[I+1])!=NULL)
  • {
  • I++;
  • }
  • memcpy(&sin.sin_addr.s_addr, phe->h_addr_list[I], phe->h_length);
  • SetWindowText(OrdiHandle, buffer);
  • SetWindowText(IPHandle, inet_ntoa(sin.sin_addr));
  • WSACleanup();
  • }
  • ////////////////////////////////////////////////////////////////////////////////
  • char PortOuvert[255], NbPChar[255], PortChar[255], *Ordi = NULL;
  • int PORT, PortMax, PortMin, n=5, NbP=0, affichage=0, AttenteInt;
  • /////////////////////////////Thread du scanner//////////////////////////////////
  • DWORD WINAPI ScanThread(LPVOID param)
  • {
  • if (affichage==0)
  • {
  • wsprintf(PortChar,"Scan : port %i", PORT-1);
  • SetWindowText(MainHandle, PortChar);
  • UpdateWindow(MainHandle);
  • }
  • int PORT=(int)param;
  • WSADATA WSAData; // tout les prog de
  • WSAStartup(MAKEWORD(2,0),&WSAData); // sockets commence par ca
  • struct hostent * sock2;
  • SOCKET sock; // declare la socket
  • SOCKADDR_IN sin; // pareil
  • sin.sin_family = AF_INET; // de la socket
  • sock2 = gethostbyname(Ordi);
  • memcpy(&sin.sin_addr.s_addr, sock2->h_addr_list[0], sock2->h_length);
  • sock = socket(AF_INET,SOCK_STREAM,0); // initialise la socket
  • sin.sin_port = htons(PORT); // le port du socket (qui change, c'est le but !)
  • n = connect(sock,(SOCKADDR *)&sin,sizeof(sin));
  • if(n == 0) // si on peut se connecter (donc si le port est ouvert)
  • {
  • NbP++;
  • wsprintf(PortOuvert,"Port %i : OUVERT", PORT);
  • SendMessage(ListHandle, LB_ADDSTRING, 0, (LPARAM)(LPCTSTR)PortOuvert);
  • }
  • wsprintf(NbPChar,"Nb de ports ouverts : %i", NbP);
  • SetWindowText(lblhWnd6, NbPChar);
  • closesocket(sock); // ferme la socket
  • WSACleanup();
  • return 0;
  • }
  • ////////////////////////////////////////////////////////////////////////////////
  • //////////////////Thread qui répète en boucle le 1er thread/////////////////////
  • DWORD WINAPI BoucleThread(LPVOID param)
  • {
  • for(PORT = PortMin; PORT <= PortMax; PORT++) // boucle pour lancer le scan
  • { // plusieurs fois...
  • Sleep(AttenteInt);
  • CreateThread(NULL, 0, ScanThread, (LPVOID)PORT, 0, &threadID);
  • }
  • Sleep(200);
  • affichage=1;
  • SetWindowText(MainHandle, "Scan terminé");
  • UpdateWindow(MainHandle);
  • return 0;
  • }
  • ////////////////////////////////////////////////////////////////////////////////
  • ///////////////////////////////////Hook/////////////////////////////////////////
  • // le HOOK LOCAL est ICI
  • LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
  • {
  • MSG *lpmsg;
  • lpmsg = (MSG*) lParam;
  • if(nCode < 0) goto defRet; // NE JAMAIS TOUCHER DANS CE CAS
  • // Hook sur la touche Tab
  • if(lpmsg->message == WM_KEYDOWN && lpmsg->wParam == VK_TAB && IsChild(MainHandle, lpmsg->hwnd))
  • {
  • HWND Focus;
  • // Change le focus si on appui sur tab
  • if(GetFocus()==OrdiHandle) Focus=IPHandle;
  • if(GetFocus()==IPHandle) Focus=OrdiScanHandle;
  • if(GetFocus()==OrdiScanHandle) Focus=MinHandle;
  • if(GetFocus()==MinHandle) Focus=MaxHandle;
  • if(GetFocus()==MaxHandle) Focus=AttenteHandle;
  • if(GetFocus()==AttenteHandle) Focus=OrdiHandle;
  • SetFocus(Focus);
  • }
  • defRet:
  • return (CallNextHookEx(hhk, nCode, wParam, lParam));
  • }
  • ////////////////////////////////////////////////////////////////////////////////
  • // Prototype
  • LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
  • /*************************************************/
  • // Entré du programme
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
  • {
  • // Pour recevoir et transmettre les messages
  • MSG msg;
  • // Pour créé la fenêtre
  • WNDCLASSEX wc;
  • // Sauvegarde l'instance
  • MainInstance = hInstance;
  • // Création de la classe
  • wc.hInstance = MainInstance; // Instance du programme
  • wc.lpszClassName = MainClassName; // Nom de la classe
  • wc.lpfnWndProc = WinProc; // Procédure qui va recevoir les messages
  • wc.style = CS_DBLCLKS; // Le style...
  • wc.cbSize = sizeof(WNDCLASSEX); // Taille de la struct
  • wc.hIcon = LoadIcon(hInstance, "A"); // L'icône(grande)
  • wc.hIconSm = LoadIcon(hInstance, "A"); // L'icône(petite)
  • wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Le curseur
  • wc.lpszMenuName = NULL; // Menu
  • wc.cbClsExtra = 0; // ...
  • wc.cbWndExtra = 0; // ...
  • wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); // BackColor(Couleur de fond)
  • // Enregistre la classe
  • if (!RegisterClassEx(&wc))
  • return 0; // Erreur ...
  • // Hook
  • hhk = SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, 0, GetCurrentThreadId());
  • // Crée la fenêtre principale
  • MainHandle = CreateWindowEx(0, MainClassName, "Scanneur de ports", WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,
  • CW_USEDEFAULT, CW_USEDEFAULT, 327, 230, HWND_DESKTOP, NULL,hInstance, NULL);
  • if (MainHandle == NULL)
  • return 0; // Erreur ...
  • // Crée le label pour avoir une couleur uniforme
  • HWND lblhWnd0 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE|WS_CHILD, 0, 0, 327, 230, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • // Crée les 2 cadres avec les titres
  • HWND lblhWndCadre1 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE|WS_CHILD|SS_SUNKEN, 5, 12, 137, 60, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWndTitre1 = CreateWindowEx(0, "STATIC", " Cet ordinateur", WS_VISIBLE|WS_CHILD, 35, 5, 72, 50, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWndCadre2 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE|WS_CHILD|SS_SUNKEN, 150, 12, 165, 60, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWndTitre2 = CreateWindowEx(0, "STATIC", " Ordi à scanner", WS_VISIBLE|WS_CHILD, 195, 5, 75, 50, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • // Crée tous les autres textes
  • HWND lblhWnd1 = CreateWindowEx(0, "STATIC", "Nom :", WS_VISIBLE|WS_CHILD, 10, 24, 100, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWnd2 = CreateWindowEx(0, "STATIC", "IP :", WS_VISIBLE|WS_CHILD, 10, 49, 100, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWnd3 = CreateWindowEx(0, "STATIC", "Nom ou IP :", WS_VISIBLE|WS_CHILD, 155, 24, 100, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWnd4 = CreateWindowEx(0, "STATIC", "Ports de à", WS_VISIBLE|WS_CHILD, 155, 49, 150, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWnd5 = CreateWindowEx(0, "STATIC", "Liste des ports ouverts :", WS_VISIBLE|WS_CHILD, 10, 80, 300, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • lblhWnd6 = CreateWindowEx(0, "STATIC", "Nb de ports ouverts :", WS_VISIBLE|WS_CHILD, 167, 115, 150, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • HWND lblhWnd7 = CreateWindowEx(0, "STATIC", "Temps d'attente : ms", WS_VISIBLE|WS_CHILD, 167, 90, 150, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • // Crée les 2 EditBox (ordi et IP)
  • OrdiHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", ES_READONLY|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
  • 45, 22, 90, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • IPHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", ES_READONLY|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
  • 45, 47, 90, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • OrdiScanHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
  • 217, 22, 90, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • MinHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_VISIBLE|WS_CHILD|ES_RIGHT|ES_NUMBER|ES_NOHIDESEL,
  • 202, 47, 45, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • MaxHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_VISIBLE|WS_CHILD|ES_RIGHT|ES_NUMBER|ES_NOHIDESEL,
  • 263, 47, 45, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • AttenteHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "50", WS_VISIBLE|WS_CHILD|ES_RIGHT|ES_NUMBER|ES_NOHIDESEL,
  • 260, 87, 38, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
  • ListHandle = CreateWindowEx(WS_EX_CLIENTEDGE, "LISTBOX", NULL, WS_VISIBLE|WS_CHILD|LBS_NOSEL|LBS_NOTIFY|WS_VSCROLL|ES_AUTOVSCROLL,
  • 5, 100, 150, 100, MainHandle, (HMENU)ID_LISTBOX, hInstance, NULL);
  • // Cré le Button Scanner
  • ButtonHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Scanner",
  • WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
  • 167, 140, 66, 25, MainHandle, (HMENU)ID_BUTTON, hInstance, NULL);
  • // Cré le Button Aide
  • ButtonAideHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Aide",
  • WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
  • 244, 140, 66, 25, MainHandle, (HMENU)ID_BUTTON_AIDE, hInstance, NULL);
  • // Cré le Button Effacer
  • ButtonViderHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Effacer",
  • WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
  • 167, 170, 66, 25, MainHandle, (HMENU)ID_BUTTON_VIDER, hInstance, NULL);
  • // Cré le Button Quitter
  • ButtonQuitHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Quitter",
  • WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
  • 244, 170, 66, 25, MainHandle, (HMENU)ID_BUTTON_QUIT, hInstance, NULL);
  • // Changements des polices
  • SendMessage(OrdiHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(IPHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(ListHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(OrdiScanHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(MaxHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(MinHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(AttenteHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(ButtonHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(ButtonQuitHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(ButtonViderHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(ButtonAideHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWnd1, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWnd2, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWnd3, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWnd4, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWnd5, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWnd6, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWnd7, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWndTitre1, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • SendMessage(lblhWndTitre2, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
  • // Appelle la fontion adresseIP
  • adresseIP();
  • // Affiche la fenêtre
  • ShowWindow(MainHandle, SW_SHOW);
  • // Met à jour la fenêtre
  • UpdateWindow(MainHandle);
  • // Recoie et transmet les messages à WinProc
  • while (GetMessage(&msg, NULL, 0, 0))
  • {
  • TranslateMessage(&msg);
  • DispatchMessage(&msg);
  • }
  • // Fin du programme
  • return msg.wParam;
  • }
  • /*************************************************/
  • // Réception des messages
  • LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  • {
  • switch (msg)
  • {
  • // Ferme le programme
  • case WM_DESTROY:
  • if(hhk) UnhookWindowsHookEx(hhk); // enleve le hook
  • PostQuitMessage(0);
  • break;
  • // Reception des commandes
  • case WM_COMMAND:
  • // Détruit la fenètre si on clique sur le boutton quitter
  • if((LOWORD(wParam) == ID_BUTTON_QUIT) && (HIWORD(wParam) == BN_CLICKED))
  • DestroyWindow(hwnd);
  • // Vide la liste si on à cliquer sur le bouton vider
  • if((LOWORD(wParam) == ID_BUTTON_VIDER) && (HIWORD(wParam) == BN_CLICKED))
  • SendMessage(ListHandle, LB_RESETCONTENT, 0, 0);
  • // Affiche l'aide si on clique sur le boutton aide
  • if((LOWORD(wParam) == ID_BUTTON_AIDE) && (HIWORD(wParam) == BN_CLICKED))
  • MessageBox(MainHandle, "Ce logiciel permet de scanner plusieurs ports très rapidemment. Ceci afin "
  • "de savoir si votre ordi à été affecté par un trojan ou pour connaître les "
  • "ports ouverts d'un serveur. Vous pouvez augmenter ou diminuer la vitesse en "
  • "choisissant la durée d'attente entre chaque scan (en millisecondes).\n\nSi"
  • " le scan est mauvais et qu'il saute certains ports, il faut le recommencer "
  • "avec une durée plus importante...\n\nPS : Sachez que le fait de scanner les"
  • " ports d'un serveur par exemple vous log directement (l'administrateur peut "
  • "connaître votre IP), donc à utiliser avec précaution pour un éventuel hack "
  • "risqué !!", "Aide", MB_OK);
  • // Vérifie si on à cliquer sur le bouton
  • if ((LOWORD(wParam) == ID_BUTTON) && (HIWORD(wParam) == BN_CLICKED))
  • {
  • // Va contenir le texte du EditBox
  • char *Min = NULL;
  • char *Max = NULL;
  • char *Attente = NULL;
  • // Va contenir le nombres de caractères dans le EditBox
  • unsigned int OrdiLen = 0;
  • unsigned int MinLen = 0;
  • unsigned int MaxLen = 0;
  • unsigned int AttenteLen = 0;
  • // Récupère le nombres de caractères dans le EditBox
  • OrdiLen = GetWindowTextLength(OrdiScanHandle);
  • MinLen = GetWindowTextLength(MinHandle);
  • MaxLen = GetWindowTextLength(MaxHandle);
  • AttenteLen = GetWindowTextLength(AttenteHandle);
  • // S'il n'est pas vide
  • if (OrdiLen && MinLen && MaxLen && AttenteLen)
  • {
  • // Alloue de la mémoire pour stocker le texte
  • Ordi = new char[(OrdiLen + 2)];
  • Min = new char[(MinLen + 2)];
  • Max = new char[(MaxLen + 2)];
  • Attente = new char[(AttenteLen + 2)];
  • // Récupère le texte
  • OrdiLen = GetWindowText(OrdiScanHandle, Ordi, (OrdiLen + 1));
  • MinLen = GetWindowText(MinHandle, Min, (MinLen + 1));
  • MaxLen = GetWindowText(MaxHandle, Max, (MaxLen + 1));
  • AttenteLen = GetWindowText(AttenteHandle, Attente, (AttenteLen + 1));
  • // Conversion des variable char en int
  • PortMin = atoi(Min);
  • PortMax = atoi(Max);
  • AttenteInt = atoi(Attente);
  • // Si aucune erreur et le EditBox contient bien quelque chose
  • if (OrdiLen && MinLen && MaxLen && AttenteLen)
  • {
  • ////////////////////////////Scanneur de ports///////////////////////////////////
  • if (PortMin>PortMax)
  • {
  • MessageBox(MainHandle, "Le deuxième nombre doit être plus grand que le premier", "Erreur", MB_ICONERROR | MB_OK);
  • }
  • else
  • {
  • WSADATA WSAData; // tout les prog de
  • WSAStartup(MAKEWORD(2,0),&WSAData); // sockets commence par ca
  • struct hostent * sock2;
  • SOCKET sock; // declare la socket
  • sock2 = gethostbyname(Ordi);
  • if (sock2==NULL)
  • MessageBox(MainHandle, "Impossible de se connecter à cet ordi, dsl...", "Erreur", MB_ICONERROR | MB_OK);
  • else
  • {
  • // Remet les variables utilisés à 0
  • PORT=0;
  • NbP=0;
  • affichage=0;
  • CreateThread(NULL, 0, BoucleThread, (LPVOID)PORT, 0, &threadID); // lance le thread de la boucle
  • }}
  • ////////////////////////////////////////////////////////////////////////////////
  • }
  • if (!OrdiLen || !MinLen || !MaxLen || !AttenteLen)
  • {
  • MessageBox(MainHandle, "Erreur lors de la récupération du texte", "Erreur", MB_ICONERROR | MB_OK);
  • }
  • // Libère la mémoire
  • delete [] Ordi;
  • delete [] Min;
  • delete [] Max;
  • delete [] Attente;
  • }
  • if (!OrdiLen || !MinLen || !MaxLen || !AttenteLen)
  • {
  • MessageBox(MainHandle, "Il faut tout remplir bordel...", "Erreur", MB_ICONERROR | MB_OK);
  • }
  • break;
  • }
  • default: // Par default...
  • return DefWindowProc(hwnd, msg, wParam, lParam);
  • break;
  • }
  • return 0;
  • }
#include <windows.h>
#include <stdlib.h>

// ID du EditBox
#define ID_EDITBOX 100
// ID du Button
#define ID_BUTTON 101
#define ID_BUTTON_QUIT 102
#define ID_BUTTON_AIDE 103
#define ID_BUTTON_VIDER 104
// ID de la ListBox
#define ID_LISTBOX 105

// Nom de la classe
char MainClassName[] = "Scanneur de ports";
// Instance du programme
HINSTANCE MainInstance;
// Handle de la fenêtre
HWND MainHandle;
// Handle des EditBox
HWND OrdiHandle;
HWND IPHandle;
HWND OrdiScanHandle;
HWND MinHandle;
HWND MaxHandle;
HWND AttenteHandle;
HWND ListHandle;
// Handle des Boutons
HWND ButtonHandle;
HWND ButtonAideHandle;
HWND ButtonViderHandle;
HWND ButtonQuitHandle;

// Handle d'un des labels
HWND lblhWnd6;

// ID du thread
DWORD threadID;

// Pour le hook (capture d'une touche)
HHOOK hhk = 0;

///////////Fonction qui affiche l'adresse ip et le nom de l'ordi////////////////
void adresseIP()
{
    // Ne sert strictement à rien mais permet un affichage avec style Xp normal (???)
    ShellExecute (NULL, NULL, NULL, NULL, NULL, 0);
    
    struct sockaddr_in sin;
    struct hostent * phe;
    char FAR buffer[64] ;

    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
    wVersionRequested = MAKEWORD(1, 1);
    err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0)
    {
    MessageBox(MainHandle, "Impossible de trouver winsock.dll", "Erreur", MB_ICONERROR | MB_OK);
    }
    gethostname(buffer, sizeof(buffer));
    phe = gethostbyname(buffer);
    if(phe==NULL)
    {
    MessageBox(MainHandle, "Erreur : pointeur nul", "Erreur", MB_ICONERROR | MB_OK);
    WSACleanup();
    exit(1);
    }
    int I = 0 ;
    while((phe->h_addr_list[I+1])!=NULL)
    {
    I++;
    }
    memcpy(&sin.sin_addr.s_addr, phe->h_addr_list[I], phe->h_length);
    SetWindowText(OrdiHandle, buffer); 
    SetWindowText(IPHandle, inet_ntoa(sin.sin_addr)); 
    
    WSACleanup();
}
////////////////////////////////////////////////////////////////////////////////

char PortOuvert[255], NbPChar[255], PortChar[255], *Ordi = NULL;
int PORT, PortMax, PortMin, n=5, NbP=0, affichage=0, AttenteInt;

/////////////////////////////Thread du scanner//////////////////////////////////
DWORD WINAPI ScanThread(LPVOID param)
{  
 if (affichage==0)
   {
    wsprintf(PortChar,"Scan : port %i", PORT-1);
    SetWindowText(MainHandle, PortChar);
    UpdateWindow(MainHandle);
   }
 int PORT=(int)param;
 WSADATA WSAData;                      // tout les prog de
 WSAStartup(MAKEWORD(2,0),&WSAData);   // sockets commence par ca

 struct hostent * sock2;       
 SOCKET sock;                          // declare la socket  
 SOCKADDR_IN sin;                      // pareil          
 sin.sin_family = AF_INET;             // de la socket
 sock2 = gethostbyname(Ordi);        
 memcpy(&sin.sin_addr.s_addr, sock2->h_addr_list[0], sock2->h_length);
    
 sock = socket(AF_INET,SOCK_STREAM,0); // initialise la socket
 sin.sin_port = htons(PORT); // le port du socket (qui change, c'est le but !)
   
 n = connect(sock,(SOCKADDR *)&sin,sizeof(sin));     
 if(n == 0)      // si on peut se connecter (donc si le port est ouvert)
   {  
    NbP++;
    wsprintf(PortOuvert,"Port %i : OUVERT", PORT);
    SendMessage(ListHandle, LB_ADDSTRING, 0, (LPARAM)(LPCTSTR)PortOuvert);         
   }
 wsprintf(NbPChar,"Nb de ports ouverts : %i", NbP);
 SetWindowText(lblhWnd6, NbPChar);   
                              
 closesocket(sock);       // ferme la socket
 WSACleanup(); 

 return 0;
}
////////////////////////////////////////////////////////////////////////////////

//////////////////Thread qui répète en boucle le 1er thread/////////////////////
DWORD WINAPI BoucleThread(LPVOID param)
{
 for(PORT = PortMin; PORT <= PortMax; PORT++)  // boucle pour lancer le scan 
     {                                         // plusieurs fois...
      Sleep(AttenteInt);
      CreateThread(NULL, 0, ScanThread, (LPVOID)PORT, 0, &threadID);    
     }
 Sleep(200);
 affichage=1;
 SetWindowText(MainHandle, "Scan terminé");
 UpdateWindow(MainHandle);
 return 0;
}
////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////Hook/////////////////////////////////////////  
// le HOOK LOCAL est ICI
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  MSG *lpmsg;
  lpmsg = (MSG*) lParam;
  if(nCode < 0) goto defRet; // NE JAMAIS TOUCHER DANS CE CAS
  // Hook sur la touche Tab
  if(lpmsg->message == WM_KEYDOWN && lpmsg->wParam == VK_TAB && IsChild(MainHandle, lpmsg->hwnd))
   {
    HWND Focus;
    // Change le focus si on appui sur tab
    if(GetFocus()==OrdiHandle) Focus=IPHandle;
    if(GetFocus()==IPHandle) Focus=OrdiScanHandle;
    if(GetFocus()==OrdiScanHandle) Focus=MinHandle;
    if(GetFocus()==MinHandle) Focus=MaxHandle;
    if(GetFocus()==MaxHandle) Focus=AttenteHandle;
    if(GetFocus()==AttenteHandle) Focus=OrdiHandle;
    SetFocus(Focus);
   }
defRet:
  return (CallNextHookEx(hhk, nCode, wParam, lParam));
}
////////////////////////////////////////////////////////////////////////////////
// Prototype
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);

/*************************************************/

// Entré du programme
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
{

// Pour recevoir et transmettre les messages
MSG msg;
// Pour créé la fenêtre
WNDCLASSEX wc;

// Sauvegarde l'instance
MainInstance = hInstance;

// Création de la classe
wc.hInstance = MainInstance; // Instance du programme
wc.lpszClassName = MainClassName; // Nom de la classe
wc.lpfnWndProc = WinProc; // Procédure qui va recevoir les messages
wc.style = CS_DBLCLKS; // Le style...
wc.cbSize = sizeof(WNDCLASSEX); // Taille de la struct
wc.hIcon = LoadIcon(hInstance, "A"); // L'icône(grande)
wc.hIconSm = LoadIcon(hInstance, "A"); // L'icône(petite)
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Le curseur
wc.lpszMenuName = NULL; // Menu
wc.cbClsExtra = 0; // ...
wc.cbWndExtra = 0; // ...
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); // BackColor(Couleur de fond)

// Enregistre la classe
if (!RegisterClassEx(&wc))
return 0; // Erreur ...

// Hook
hhk = SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, 0, GetCurrentThreadId());

// Crée la fenêtre principale
MainHandle = CreateWindowEx(0, MainClassName, "Scanneur de ports", WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT, 327, 230, HWND_DESKTOP, NULL,hInstance, NULL);

if (MainHandle == NULL)
return 0; // Erreur ...

// Crée le label pour avoir une couleur uniforme
HWND lblhWnd0 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE|WS_CHILD, 0, 0, 327, 230, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

// Crée les 2 cadres avec les titres
HWND lblhWndCadre1 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE|WS_CHILD|SS_SUNKEN, 5, 12, 137, 60, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
HWND lblhWndTitre1 = CreateWindowEx(0, "STATIC", " Cet ordinateur", WS_VISIBLE|WS_CHILD, 35, 5, 72, 50, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

HWND lblhWndCadre2 = CreateWindowEx(0, "STATIC", "", WS_VISIBLE|WS_CHILD|SS_SUNKEN, 150, 12, 165, 60, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
HWND lblhWndTitre2 = CreateWindowEx(0, "STATIC", " Ordi à scanner", WS_VISIBLE|WS_CHILD, 195, 5, 75, 50, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

// Crée tous les autres textes
HWND lblhWnd1 = CreateWindowEx(0, "STATIC", "Nom :", WS_VISIBLE|WS_CHILD, 10, 24, 100, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
HWND lblhWnd2 = CreateWindowEx(0, "STATIC", "IP :", WS_VISIBLE|WS_CHILD, 10, 49, 100, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL); 
HWND lblhWnd3 = CreateWindowEx(0, "STATIC", "Nom ou IP :", WS_VISIBLE|WS_CHILD, 155, 24, 100, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);    
HWND lblhWnd4 = CreateWindowEx(0, "STATIC", "Ports de                   à", WS_VISIBLE|WS_CHILD, 155, 49, 150, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);    
HWND lblhWnd5 = CreateWindowEx(0, "STATIC", "Liste des ports ouverts :", WS_VISIBLE|WS_CHILD, 10, 80, 300, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
lblhWnd6 = CreateWindowEx(0, "STATIC", "Nb de ports ouverts :", WS_VISIBLE|WS_CHILD, 167, 115, 150, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);    
HWND lblhWnd7 = CreateWindowEx(0, "STATIC", "Temps d'attente :                  ms", WS_VISIBLE|WS_CHILD, 167, 90, 150, 13, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
      
// Crée les 2 EditBox (ordi et IP)
OrdiHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", ES_READONLY|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
45, 22, 90, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

IPHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", ES_READONLY|WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
45, 47, 90, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

OrdiScanHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
217, 22, 90, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

MinHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_VISIBLE|WS_CHILD|ES_RIGHT|ES_NUMBER|ES_NOHIDESEL,
202, 47, 45, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

MaxHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_VISIBLE|WS_CHILD|ES_RIGHT|ES_NUMBER|ES_NOHIDESEL,
263, 47, 45, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

AttenteHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "50", WS_VISIBLE|WS_CHILD|ES_RIGHT|ES_NUMBER|ES_NOHIDESEL,
260, 87, 38, 20, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

ListHandle = CreateWindowEx(WS_EX_CLIENTEDGE, "LISTBOX", NULL, WS_VISIBLE|WS_CHILD|LBS_NOSEL|LBS_NOTIFY|WS_VSCROLL|ES_AUTOVSCROLL, 
5, 100, 150, 100, MainHandle, (HMENU)ID_LISTBOX, hInstance, NULL);

// Cré le Button Scanner
ButtonHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Scanner", 
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
167, 140, 66, 25, MainHandle, (HMENU)ID_BUTTON, hInstance, NULL);

// Cré le Button Aide
ButtonAideHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Aide", 
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
244, 140, 66, 25, MainHandle, (HMENU)ID_BUTTON_AIDE, hInstance, NULL);

// Cré le Button Effacer
ButtonViderHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Effacer", 
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
167, 170, 66, 25, MainHandle, (HMENU)ID_BUTTON_VIDER, hInstance, NULL);

// Cré le Button Quitter
ButtonQuitHandle = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Quitter", 
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
244, 170, 66, 25, MainHandle, (HMENU)ID_BUTTON_QUIT, hInstance, NULL);

// Changements des polices
SendMessage(OrdiHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(IPHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(ListHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(OrdiScanHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(MaxHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(MinHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(AttenteHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(ButtonHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(ButtonQuitHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(ButtonViderHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(ButtonAideHandle, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWnd1, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWnd2, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWnd3, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWnd4, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWnd5, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWnd6, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWnd7, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWndTitre1, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
SendMessage(lblhWndTitre2, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));

// Appelle la fontion adresseIP
adresseIP();

// Affiche la fenêtre
ShowWindow(MainHandle, SW_SHOW);
// Met à jour la fenêtre
UpdateWindow(MainHandle);

// Recoie et transmet les messages à WinProc
while (GetMessage(&msg, NULL, 0, 0))
{

TranslateMessage(&msg);
DispatchMessage(&msg);

}

// Fin du programme
return msg.wParam;

}

/*************************************************/

// Réception des messages
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

switch (msg)
{
// Ferme le programme
case WM_DESTROY:
if(hhk) UnhookWindowsHookEx(hhk);  // enleve le hook
PostQuitMessage(0);
break;

// Reception des commandes
case WM_COMMAND:
// Détruit la fenètre si on clique sur le boutton quitter
if((LOWORD(wParam) == ID_BUTTON_QUIT) && (HIWORD(wParam) == BN_CLICKED))
	DestroyWindow(hwnd);
// Vide la liste si on à cliquer sur le bouton vider
if((LOWORD(wParam) == ID_BUTTON_VIDER) && (HIWORD(wParam) == BN_CLICKED))
	SendMessage(ListHandle, LB_RESETCONTENT, 0, 0);
// Affiche l'aide si on clique sur le boutton aide
if((LOWORD(wParam) == ID_BUTTON_AIDE) && (HIWORD(wParam) == BN_CLICKED))
    MessageBox(MainHandle, "Ce logiciel permet de scanner plusieurs ports très rapidemment. Ceci afin "
                           "de savoir si votre ordi à été affecté par un trojan ou pour connaître les "
                           "ports ouverts d'un serveur. Vous pouvez augmenter ou diminuer la vitesse en "
                           "choisissant la durée d'attente entre chaque scan (en millisecondes).\n\nSi"
                           " le scan est mauvais et qu'il saute certains ports, il faut le recommencer "
                           "avec une durée plus importante...\n\nPS : Sachez que le fait de scanner les"
                           " ports d'un serveur par exemple vous log directement (l'administrateur peut "
                           "connaître votre IP), donc à utiliser avec précaution pour un éventuel hack "
                           "risqué !!", "Aide", MB_OK);
// Vérifie si on à cliquer sur le bouton
if ((LOWORD(wParam) == ID_BUTTON) && (HIWORD(wParam) == BN_CLICKED))
{

// Va contenir le texte du EditBox
char *Min = NULL;
char *Max = NULL;
char *Attente = NULL;

// Va contenir le nombres de caractères dans le EditBox
unsigned int OrdiLen = 0;
unsigned int MinLen = 0;
unsigned int MaxLen = 0;
unsigned int AttenteLen = 0;

// Récupère le nombres de caractères dans le EditBox
OrdiLen = GetWindowTextLength(OrdiScanHandle);
MinLen = GetWindowTextLength(MinHandle);
MaxLen = GetWindowTextLength(MaxHandle);
AttenteLen = GetWindowTextLength(AttenteHandle);

// S'il n'est pas vide
if (OrdiLen && MinLen && MaxLen && AttenteLen)   
{

// Alloue de la mémoire pour stocker le texte
Ordi = new char[(OrdiLen + 2)];
Min = new char[(MinLen + 2)];
Max = new char[(MaxLen + 2)];
Attente = new char[(AttenteLen + 2)];

// Récupère le texte
OrdiLen = GetWindowText(OrdiScanHandle, Ordi, (OrdiLen + 1));
MinLen = GetWindowText(MinHandle, Min, (MinLen + 1));
MaxLen = GetWindowText(MaxHandle, Max, (MaxLen + 1));
AttenteLen = GetWindowText(AttenteHandle, Attente, (AttenteLen + 1));

// Conversion des variable char en int 
PortMin = atoi(Min);
PortMax = atoi(Max);
AttenteInt = atoi(Attente);

// Si aucune erreur et le EditBox contient bien quelque chose
if (OrdiLen && MinLen && MaxLen && AttenteLen)
{
////////////////////////////Scanneur de ports///////////////////////////////////
if (PortMin>PortMax)
 {
  MessageBox(MainHandle, "Le deuxième nombre doit être plus grand que le premier", "Erreur", MB_ICONERROR | MB_OK);
 }

else
 {
  WSADATA WSAData;                      // tout les prog de
  WSAStartup(MAKEWORD(2,0),&WSAData);   // sockets commence par ca

  struct hostent * sock2;       
  SOCKET sock;               // declare la socket            

  sock2 = gethostbyname(Ordi); 

  if (sock2==NULL) 
    MessageBox(MainHandle, "Impossible de se connecter à cet ordi, dsl...", "Erreur", MB_ICONERROR | MB_OK);
  else
   {
    // Remet les variables utilisés à 0
    PORT=0;     
    NbP=0;
    affichage=0;
    
    CreateThread(NULL, 0, BoucleThread, (LPVOID)PORT, 0, &threadID);   // lance le thread de la boucle
}}               
////////////////////////////////////////////////////////////////////////////////
}
 
if (!OrdiLen || !MinLen || !MaxLen || !AttenteLen)
 {
  MessageBox(MainHandle, "Erreur lors de la récupération du texte", "Erreur", MB_ICONERROR | MB_OK);
 }

// Libère la mémoire
delete [] Ordi;
delete [] Min;
delete [] Max;
delete [] Attente;

}
if (!OrdiLen || !MinLen || !MaxLen || !AttenteLen)
 {
  MessageBox(MainHandle, "Il faut tout remplir bordel...", "Erreur", MB_ICONERROR | MB_OK);
 }
break;
}

default: // Par default...
return DefWindowProc(hwnd, msg, wParam, lParam);
break;

}

return 0;
}

 Conclusion

ATTENTION : vous devez mettre la librairie wsock32 dans les options du compilateur pour que ca marche      

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture SCYTHIA V0.9.3
Source avec Zip Source avec une capture KILM V1.0 AVEC QT (WIN32, LINUX)
Source avec Zip Source avec une capture I FOUND U V1.3 (UN MESSENGER WIN32) [VS2003]
Source avec Zip TESTS DE RAPIDITÉ (SPRINTF, FOPEN...) [DEV-C++]
Source avec Zip Source avec une capture I FOUND U 1.1 (UN MESSENGER WIN32) [DEV-C++, VC++]

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de BruNews le 25/05/2003 12:40:43 administrateur CS

J'ai survole vite fait, j'ai pas vu a quoi te sert:
#include &lt;stdlib.h&gt;

Commentaire de Anacr0x le 25/05/2003 12:54:44

C'est pour utiliser la fonction atoi. Si je le met pas, Dev C++ ne veu pa le compiler :(

Commentaire de MaOmeT le 13/06/2003 09:15:14

&lt;-- Salut à Toi --&gt;
Et je voulais dire merci bien pouir ton source mais il me semble
qu'il ne fonctionne pas (enfin pas treès bien).
-&gt;Il ne scan que 200 à 300 port (repère les ports ouverts)
mais provoque une erreure!
mais peutre ca viens de mon WinDaube ahahah!
-&gt;dit moi si il y a des restrictions (µP, Os..)

_-HORS SUJET-_

Toutes les sources de ce site sont elles compilablent
avec tous les compilateurs?
-&gt;Si non pourquoi ne pas indiquer le compillateur?
-&gt;Si oui ....  c CoOl !

Commentaire de Anacr0x le 13/06/2003 16:47:14

Alor la jsui désolé mé je vais pas pouvoir beaucoup t'aider... En fait, j'ai WinXP et je n'ai remarquer aucun problème... Et comme je ne l'ai pas essayer sur d'autres OS, je ne peut rien affirmer (bien ke je pense que ca marche quand meme). Pour t'aider la dessus, il fodrais que d'autres personnes me dise si ca ne marche pas (et comment l'améliorer ou le débugger si possible ;)

Sinon, les sources ne sont pas toute compilable avec n'importe quel compilateur, en effet, les projets sont propre a chaque compilateur et incompatible en eux si il n'y a pas de modifications (et en plus, ya parfois certains bug dans certain compilateur)... C'est pour contrer ce problème que j'ai fais mes sources de cette facon (sans fichier ressource, sans mfc etc...), elles doivent normalement être utilisable par tout les compilateurs les plus courant (meme si je ne les é testé uniquement avec Dev-C++4 et VC++6).
Et si tout le monde ne précise pas leur compilateur, j'y suis pour rien, faut leur demander (mais on peut le deviner très rapidement en regardant le projet)

Commentaire de Sigma le 01/09/2003 10:36:44

Je suis avec win 2000 et aucun probleme de se coté la !

Commentaire de Sigma le 01/09/2003 10:52:53

Ce serait possible que tu m'envoie ta source au complet, avec le fichier .dsw ?? Sa m'aiderai bcp !

PS : Mon mail : dj_sigma@isuisse.com

Commentaire de Sigma le 01/09/2003 10:54:04

pfff, je suis nul c'est dj_sigma@hotmail.com ...... vraiment, les lundis matin, c'est dur... ;)

Commentaire de Anacr0x le 01/09/2003 18:09:44

Pas de pb, mes source sont initialement faites avec Dev-C++ 4 et c une des raison qui fait que je ne met pas les projets avec, mes si tu le veu en dsw, je reinstalle VC++6 (g formater ya pas longtps) et jte l'envoi...

Commentaire de Sigma le 01/09/2003 22:08:53

Hello,
merci bcp ! C'est bien simpa ! Et merci pour l'astuce, je connaissait pas !

Commentaire de yohan8 le 06/09/2003 20:19:40

Bonjour;
J'ai besoin d'une aide au sujet du hooking ;
voila le sujet; j'aimerais ajouter un message de confimation au moment de la fermeture de IE.
Je sais que c'est possible à faire mais je ne sais pas vraiment comment...
1)La première question c'est comment identifier le Handle déclenché lorsque le bouton de la fenêtre IE est cliqué ?
2)La deuxième question :je pense que le hook doit être placé dans une dll Pouvez vous me confirmer cela ?
3)j'aimerais que cette correction soit facilement distribuable comment faire ?
merci pour votre aide...

Commentaire de BruNews le 07/09/2003 00:03:51 administrateur CS

J'ai publie plusieurs exemples sur les hooks dont un sur l'interception de IE. Va voir et tu sauras comment le systeme te donne le handle de la fenetre concernee. Tu devras par contre changer le type de hook.
Un exe + dll, meme un bat devrait suffire pour l'install car tu peux les poser nimporte ou.

Commentaire de ehrro le 08/10/2003 20:56:09

Salut je n'arrive pas à lire ton programme sur dev c++ quand je mets run ca me dit aucune error mais apres il m'ouvre une fenetre avec plein d'erreur?
Pk
merci

Commentaire de Anacr0x le 08/10/2003 21:12:53

Ah... Bon, je détaille tte les étapes :
1/ Crée un nouveau projet win32
2/ Met le fichier .cpp, .ico, .manifest et .rc du zip a coté du projet
3/ Virer le fichier principale qu'il te donne automatiquement et inclure le mien (ScanneurPorts.cpp)

jusque la c tt con...

4/ Aller ds les options du projet, et inclure manuellement la librairie wsock32 (du moin avec Dev-C++)
5/ Changer également ds les options le fichier .rc par le mien (pas obligatoire mais bon)
6/ Ben... c tt, ya plus qua le compiler

PS : je crois ke dans ton cas c'est le type du projet qui n'est pas bon

Commentaire de ptiscripter le 01/11/2003 20:31:26

soit sympas kan ta des source ki fon 200 lignes (jegsagere un pe!) mets les ds un zip !!!!! bon sinon c tres bien

Commentaire de ekinoks le 31/08/2004 20:26:15

Super ton programe !
Il est vrement tres bien, j'ai juste repéré une erreur :^/
Si tu scanne une ip qui n'existe pas il dit que les port 21 et 25 son ouvert alors que ce n'est pas le cas car l'ip n'existe pas...

Commentaire de ncoder le 29/08/2005 18:13:41

Bonjour à tous,

Je suis pt etre un peu en retard, mais j'ai téléchargé cette source il y a assez longtemps, et tout marchait impec.

Maintenant, le programme se lance bien, indique tt ce qu'il faut, mais qd je lance le scan, au bout de 45 à 55 ports il s'arrète et bug!

Est-ce dû aux améliorations de Windows XP?
Et comment y remédier ?

Merci

Commentaire de Sigma le 30/11/2005 14:35:22

J'ai fait une amélioration de ce programme il y a 1-2 ans. Donc si quelqu'un est interessé, faites moi signe ;)

Commentaire de unknoweb le 24/06/2006 20:35:10

slt!!!

j'ai téléchargé le zip fait comme indiqué ensuite rajouter cette ligne   #pragma comment(lib, "wsock32.lib")    car marche pas sans avec   visual studio .net 2003    ensuite compiller impecable ça marche ....

Maintenant j'ai refait la même manipe pour le fun et pour modifier des truc et rajouter des trucs il me dit erreur .... comprend plus rien le soft me dit erreur voici la fin de la phrase          ScanneurPorts.cpp(452) : fatal error C1010: fin de fichier inattendue lors de la recherche d'une directive d'en-tête précompilé

J'ai besoin d'aide svp voici mon en-tête  

#include <windows.h>
#include <stdlib.h>
#pragma comment(lib, "wsock32.lib")

// ID du EditBox
#define ID_EDITBOX 100
// ID du Button
#define ID_BUTTON 101
#define ID_BUTTON_QUIT 102
#define ID_BUTTON_AIDE 103
#define ID_BUTTON_VIDER 104
// ID de la ListBox
#define ID_LISTBOX 105

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,465 sec (3)

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