Problem mit Portscanner
-
Hi Leut ich hab n Kleines Problem mit mein Portscanner .
mein portscanner soll jeden port den er scannt in eine listbox schreiben soweit sogut das functioniert ja prob: er schreibt erst nach den 5 oder 6 port was in die listbox sonst zeigt er nichts an achja ich lese exat nur 10 ports aus mehr muss er nicht könnenthx im voraus

hier mein Code:
[code] // port.cpp #include "stdafx.h" #include "resource.h" #include <winsock.h> #include <stdlib.h> #include <commctrl.h> #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "comctl32.lib") LRESULT CALLBACK DlgProc( HWND, UINT, WPARAM, LPARAM ); void ScanForOpenPorts(PVOID pVoid); HINSTANCE hComCtl; char g_szIpAdress[50]; int g_iPortStart1, g_iPortStart2, g_iPortStart3, g_iPortStart4, g_iPortStart5, g_iPortStart6, g_iPortStart7, g_iPortStart8, g_iPortStart9, g_iPortStart10; int iDif; HWND g_hWndList, g_hDlg, g_hWndStatus; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { hComCtl = LoadLibrary(TEXT("comctl32.dll")); DialogBox(hInstance, (LPCTSTR)IDD_SCANNER, NULL, (DLGPROC)DlgProc); return 0; } LRESULT CALLBACK DlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { char szPortStart1[10]; char szPortStart2[10]; char szPortStart3[10]; char szPortStart4[10]; char szPortStart5[10]; char szPortStart6[10]; char szPortStart7[10]; char szPortStart8[10]; char szPortStart9[10]; char szPortStart10[10]; static HWND hWndIP, hWndSrtPrt1 , hWndSrtPrt2, hWndSrtPrt3, hWndSrtPrt4, hWndSrtPrt5, hWndSrtPrt6, hWndSrtPrt7, hWndSrtPrt8, hWndSrtPrt9, hWndSrtPrt10; switch( message ) { case WM_INITDIALOG: SetWindowText(GetDlgItem(hDlg, IDC_IPADDRESS), "127.0.0.1"); SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART1), "21");//ftp SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART2), "25");//smtp SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART3), "80");//http SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART4), "110");//pop3 SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART5), "143");//imap SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART6), "443");//https SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART7), "3306");//mysql SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART8), "8009");//ajp SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART9), "8080");//httpalt SetWindowText(GetDlgItem(hDlg, IDC_PORTSTART10), "65535");//chat hWndIP = GetDlgItem(hDlg, IDC_IPADDRESS); hWndSrtPrt1 = GetDlgItem(hDlg, IDC_PORTSTART1); hWndSrtPrt2 = GetDlgItem(hDlg, IDC_PORTSTART2); hWndSrtPrt3 = GetDlgItem(hDlg, IDC_PORTSTART3); hWndSrtPrt4 = GetDlgItem(hDlg, IDC_PORTSTART4); hWndSrtPrt5 = GetDlgItem(hDlg, IDC_PORTSTART5); hWndSrtPrt6 = GetDlgItem(hDlg, IDC_PORTSTART6); hWndSrtPrt7 = GetDlgItem(hDlg, IDC_PORTSTART7); hWndSrtPrt8 = GetDlgItem(hDlg, IDC_PORTSTART8); hWndSrtPrt9 = GetDlgItem(hDlg, IDC_PORTSTART9); hWndSrtPrt10 = GetDlgItem(hDlg, IDC_PORTSTART10); g_hWndList = GetDlgItem(hDlg, IDC_OPENPORTS); g_hWndStatus = GetDlgItem(hDlg, IDC_STATUS); g_hDlg = hDlg; return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: SendMessage(hWndIP, WM_GETTEXT, (WPARAM)sizeof(g_szIpAdress), (LPARAM)g_szIpAdress); SendMessage(hWndSrtPrt1, WM_GETTEXT, (WPARAM)sizeof(szPortStart1), (LPARAM)szPortStart1); SendMessage(hWndSrtPrt2, WM_GETTEXT, (WPARAM)sizeof(szPortStart2), (LPARAM)szPortStart2); SendMessage(hWndSrtPrt3, WM_GETTEXT, (WPARAM)sizeof(szPortStart3), (LPARAM)szPortStart3); SendMessage(hWndSrtPrt4, WM_GETTEXT, (WPARAM)sizeof(szPortStart4), (LPARAM)szPortStart4); SendMessage(hWndSrtPrt5, WM_GETTEXT, (WPARAM)sizeof(szPortStart5), (LPARAM)szPortStart5); SendMessage(hWndSrtPrt6, WM_GETTEXT, (WPARAM)sizeof(szPortStart6), (LPARAM)szPortStart6); SendMessage(hWndSrtPrt7, WM_GETTEXT, (WPARAM)sizeof(szPortStart7), (LPARAM)szPortStart7); SendMessage(hWndSrtPrt8, WM_GETTEXT, (WPARAM)sizeof(szPortStart8), (LPARAM)szPortStart8); SendMessage(hWndSrtPrt9, WM_GETTEXT, (WPARAM)sizeof(szPortStart9), (LPARAM)szPortStart9); SendMessage(hWndSrtPrt10, WM_GETTEXT, (WPARAM)sizeof(szPortStart10), (LPARAM)szPortStart10); g_iPortStart1 = atoi(szPortStart1); g_iPortStart2 = atoi(szPortStart2); g_iPortStart3 = atoi(szPortStart3); g_iPortStart4 = atoi(szPortStart4); g_iPortStart5 = atoi(szPortStart5); g_iPortStart6 = atoi(szPortStart6); g_iPortStart7 = atoi(szPortStart7); g_iPortStart8 = atoi(szPortStart8); g_iPortStart9 = atoi(szPortStart9); g_iPortStart10 = atoi(szPortStart10); ScanForOpenPorts(0); break; case IDCANCEL: EndDialog(hDlg, LOWORD(wParam)); return TRUE; } break; } return FALSE; } void ScanForOpenPorts(PVOID pVoid) { char Buffer[100]; int contr, a,b,c,d,e,f,g,h,i,j; SOCKET sock = INVALID_SOCKET; WORD wVersionReg = MAKEWORD(1, 1); WSADATA wsaData; iDif = g_iPortStart1, g_iPortStart2, g_iPortStart3, g_iPortStart4, g_iPortStart5, g_iPortStart6, g_iPortStart7, g_iPortStart8, g_iPortStart9, g_iPortStart10; if (int err = WSAStartup(wVersionReg, &wsaData) != 0) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Winsock32.dll"); } struct sockaddr_in server; server.sin_addr.s_addr = inet_addr(g_szIpAdress); server.sin_family = AF_INET; if (a = g_iPortStart1) { server.sin_port = htons(a); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //FTP", a); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //FTP", a); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (b = g_iPortStart2) { server.sin_port = htons(b); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //SMTP", b); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //SMTP", b); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (c = g_iPortStart3) { server.sin_port = htons(c); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //HTTP", c); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //HTTP", c); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (d = g_iPortStart4) { server.sin_port = htons(c); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //POP3", d); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //POP3", d); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (e = g_iPortStart5) { server.sin_port = htons(e); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //IMAP", e); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //IMAP", e); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (f = g_iPortStart6) { server.sin_port = htons(f); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //HTTPS", f); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //HTTPS", f); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (g = g_iPortStart7) { server.sin_port = htons(g); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //MYSQL", g); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //MYSQL", g); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (h = g_iPortStart8) { server.sin_port = htons(h); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //AJP", h); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //AJP", h); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (i = g_iPortStart9) { server.sin_port = htons(i); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //HTTPALT", i); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //HTTPALT", i); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } if (j = g_iPortStart10) { server.sin_port = htons(j); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)"-Err: Port erstellen"); } contr = connect(sock, (sockaddr *) &server ,sizeof(server)); if (contr < 0) { //Port Closed wsprintf(Buffer, "Port %d is closed //CHAT", j); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } else { //Port Open !!! wsprintf(Buffer, "Port %d is open //CHAT", j); SendMessage(g_hWndList, LB_ADDSTRING, (WPARAM)0, (LPARAM)Buffer); } closesocket(sock); SendMessage(g_hWndList, WM_VSCROLL, (WPARAM)MAKEWPARAM(SB_PAGEDOWN, 0), (LPARAM)0); } WSACleanup(); } [/code][code] //port.rc //Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Deutsch (Deutschland) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) #ifdef _WIN32 LANGUAGE LANG_GERMAN, SUBLANG_GERMAN #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_MAINFRAME ICON DISCARDABLE "Res\\Icons\\port.ico" IDI_SCAN ICON DISCARDABLE "Res\\Icons\\connected.ico" ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_SCANNER DIALOGEX 0, 0, 223, 252 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION " Port Scanner" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "Scan Ports",IDOK,111,231,50,14 PUSHBUTTON "Beenden",IDCANCEL,166,231,50,14 LISTBOX IDC_OPENPORTS,19,170,183,41,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP EDITTEXT IDC_PORTSTART1,50,68,40,12,ES_AUTOHSCROLL CONTROL "IPAddress1",IDC_IPADDRESS,"SysIPAddress32",WS_TABSTOP, 101,20,100,12 LTEXT "IP Adresse : ",IDC_STATIC,53,20,39,12,SS_CENTERIMAGE ICON IDI_SCAN,IDC_STATIC,14,14,21,20,SS_REALSIZEIMAGE, WS_EX_DLGMODALFRAME EDITTEXT IDC_PORTSTART2,50,82,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART3,50,97,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART4,50,111,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART5,50,126,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART6,133,68,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART7,133,82,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART8,133,97,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART9,133,111,40,12,ES_AUTOHSCROLL EDITTEXT IDC_PORTSTART10,133,126,40,12,ES_AUTOHSCROLL GROUPBOX "",IDC_STATIC,7,7,209,37,BS_CENTER GROUPBOX "Ports : ",IDC_STATIC,7,50,209,102,BS_CENTER GROUPBOX "Status",IDC_STATIC,7,157,209,65,BS_CENTER END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO DISCARDABLE BEGIN IDD_SCANNER, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 216 TOPMARGIN, 7 BOTTOMMARGIN, 245 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // 24 // 1 24 DISCARDABLE "Res\\Style\\xpstyle.xml" #endif // Deutsch (Deutschland) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED [/code]
-
Wenn Du nach einem LB_ADDSTRING nicht die Msg-Loop durchläufst, wird dies nicht gezeichnet...
Deshalb musst Du die Msg-Loop einige Mal durchlaufen, bis Du wieder weitermachst... oder Du verlagerst Dein "Scanner" in einen anderen Thread als den UI-Thread.
PS: Port-"Scanner" arbeiten nicht mit "connect"...
-
Mit was dann auser connect
bsp.:Raw
-
Jau... mit RAW sockets und dem senden von SYN-Paketen... dazu kannst Du ja mal die RFC zu TCP/IP lesen...
http://www.faqs.org/rfcs/rfc793.htmlBeispiele (nicht verifiziert):
http://www.codeproject.com/internet/NagTPortScanner.asp
http://www.codeproject.com/internet/tcpscan.asp
-
Hab bei den Beispielen n Kleines Problem Codeprojekt programmiert überwiegend mit mfc das ich aber nicht kann bsp nicht benutze.
andere ideen
Aber dank für die Schnelle Antwort
