首页 网络安全 安全学院 查看内容

黑客编程之单线程TCP端口扫描器

2009-8-18 13:58 721 0

摘要: #include<winsock2.h>#include<stdio.h>#include <time.h>    &nbs...
关键词: nbsp addr printf StartPort include EndPort argv costtime host int

#include<winsock2.h>#include<stdio.h>#include <time.h>                          //计时需要用到的头文件#pragma comment(lib,"ws2_32.lib")#include <time.h> //计时需要用到的头文件clock_t start,end; //程序运行的起始和结束时间float costtime; //程序耗时void usage(void){ printf("\tusage: tcpscan RemoteIP StartPort-EndPort\n"); printf("\tExample: tcpscan 192.168.1.1 80-100\n");}int main(int argc,char **argv){ char *host; int startport,endport;    char *p; if(argc!=3) { usage(); return 0; } p=argv[2]; //处理端口参数    if(strstr(argv[2],"-"))    {    startport=atoi(argv[2]);        for(;*p;)            if(*(p++)=='-')break;        endport=atoi(p);                if(startport<1 || endport>65535)        {    printf("Port Error!\n");            return 0;        }    } host=argv[1];     WSADATA ws; SOCKET s; struct sockaddr_in addr; int result; long lresult; lresult=WSAStartup(MAKEWORD(1,1), &ws); addr.sin_family =AF_INET; addr.sin_addr.s_addr =inet_addr(host);    start=clock(); //开始计时 for (int i=startport;i<endport;i++) { s=socket(AF_INET, SOCK_STREAM, 0);        addr.sin_port = htons(i); if(s==INVALID_SOCKET)break; result=connect(s, (struct sockaddr*)&addr,sizeof(addr)); if(result==0) { printf("%s %d\n",host,i); closesocket(s); } } end=clock(); //计时结束 costtime= (float)(end - start) / CLOCKS_PER_SEC;  //转换时间格式 printf("Cost time:%f second",costtime); //显示耗时 WSACleanup();}
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部