论坛: 编程破解 标题: 求一端口扫描器源代码 复制本贴地址    
作者: tosy [tosy0070]    论坛用户   登录
  本人是一初学者,请各位不吝赐教,谢谢了

地主 发表时间: 05-04-10 20:19

回复: jhkdiy [jhkdiy]   版主   登录
要那种语言实现的?

B1层 发表时间: 05-04-10 20:39

回复: tosy [tosy0070]   论坛用户   登录
c++,VC,BCB都可以,你有吗,有的话发个给我啊,谢谢了

B2层 发表时间: 05-04-10 21:26

回复: tosy [tosy0070]   论坛用户   登录
我的邮箱是tosy0070@tom.com

B3层 发表时间: 05-04-10 21:29

回复: jhkdiy [jhkdiy]   版主   登录
个端口扫描器的源代码

本文作者: Hikaru
文章出处: 原创
发布日期:2005-1-26
阅读次数:22
引用:
--------------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <winbase.h>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")

#define MAXThreadCount 100 //设置最大线程数
#define SumScanCount 65535 //设置扫描端口总数
struct sockaddr_in server;
int ThreadCount=0;
int dwThrdParam = 1; //CreateThread的参数,提到前面好计算

unsigned int resolve(char *name)
{
struct hostent *he;
unsigned int ip;

if((ip=inet_addr(name))==(-1))
{
if((he = gethostbyname(name))==0)
{
printf("ERROR: Don't find the %s .\n",name);
exit(0);
}
memcpy(&ip,he->h_addr,4);
}
return ip;
}

DWORD WINAPI Scan(LPVOID lpParam )
{
int mysock,code,port=(int)lpParam ;
mysock=socket(AF_INET,SOCK_STREAM,0);
if(mysock < 0) { printf("socket error!"); }


server.sin_port = htons(port);

if(connect(mysock,(struct sockaddr *) & server,sizeof(server))!=0)
{
code=GetLastError();
}
else
{
printf("port %d openning\n",port);
}
closesocket(mysock);
ThreadCount--;
return 0;
}
void thread(int port)
{
DWORD dwThreadId;
HANDLE hThread;
WSADATA ws;
if (WSAStartup( MAKEWORD(2,2), &ws )!=0)
{
printf(" [-] WSAStartup() error\n");
exit(0);
}

hThread = CreateThread(
NULL, // no security attributes
0, // use default stack size
Scan, // thread function
(LPVOID)port, // argument to thread function
0, // use default creation flags
&dwThreadId); // returns the thread identifier
if (hThread == NULL)
printf( "CreateThread failed." );
dwThrdParam++;
ThreadCount++;
Sleep(200); //延时,否则CPU会用满……
CloseHandle(hThread);
}


void main(int argc, char* argv[])
{
if(argc!=2)
{
printf("\n- portscaner -\n");
printf("- code by hikaru QQ:65505381 - \n");
printf("Usage: %s IP\n",argv[0]);
exit(0);
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = resolve( argv[1] );
printf("Starting and waiting..............\n");
while( dwThrdParam <= SumScanCount )
{
if( ThreadCount < MAXThreadCount ){ thread(dwThrdParam); }
}
while( ThreadCount!=0 ){ }
WSACleanup();
printf("Done!");
}




B4层 发表时间: 05-04-10 22:17

回复: wxngzybb [wxngzybb]   论坛用户   登录
我去找找

B5层 发表时间: 05-04-10 23:01

回复: tosy [tosy0070]   论坛用户   登录
谢谢了,编译通过

B6层 发表时间: 05-04-11 10:33

回复: llk2005 [llk2005]   论坛用户   登录
#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>

#pragma comment(lib,"ws2_32")

main(int ac,char *av[])

    WSADATA wsaData;
    SOCKET S;
    struct sockaddr_in targ;
    int ret;
    int sp;
    int re;
       
    if(ac<4)
    {
        printf("usage: %s <host> <startport> <endport>",av[0]);
        exit(1);
    }
   
    ret=WSAStartup(MAKEWORD(2,2),&wsaData);
    if (ret==-1)
    {
        printf("Faild !");
    }
   
    for(sp=(atoi)(av[2]);sp<=(atoi)(av[3]);sp++)
    {
       
        if(((atoi)(av[2]))>((atoi)(av[3])))
        {
            printf("start port must be lower than the end port! : [ ");
            exit(0);
        }
        S=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
   
        targ.sin_addr.s_addr=inet_addr(av[1]);
        targ.sin_family=AF_INET;
        printf("scan port:%d\n",sp);
        targ.sin_port=htons((unsigned short)sp);
       
        re = connect(S,(struct sockaddr*)&targ,sizeof(struct sockaddr));
        if (re == 0)
        {
            printf("port: %d open\n",sp);
        }
        closesocket(S);
       
    }
    WSACleanup();
    exit(0);
}
单线程的 很慢 但很简单 QQ群:2016334的共享盘里有它的.exe文件欢迎加入我们

B7层 发表时间: 05-04-26 17:51

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号