人生理想,技术交流加Q:411239339

简单的TCP端口扫描器

浏览:641次阅读
一条评论

共计 1746 个字符,预计需要花费 5 分钟才能阅读完成。

    该程序用于扫描某台主机中开放的 TCP 端口,比较简单,至于扫描到了端口后做什么事,由大家去发挥咯。

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <time.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
void msg()
{        printf("EP:scan ip startport endport\nEP:scan 127.0.0.1 20 2009\n");
}
int main(int argc,char** argv)
{
        char *ip;
        int startport,endport,sockfd,i;
        struct sockaddr_in to;
        float costtime;
        clock_t start,end;
        if(4!=argc)
        {                msg();
                return 0;
        }
        ip=argv[1];
        startport=atoi(argv[2]);
        endport=atoi(argv[3]);
        if(startport<1 || endport>65535 || endport<startport)
        {                printf(" 端口范围出错 \n");
                return 0;
        }
        else
                printf("Scaned IP:\t[%s]\nStart port:\t[%d]\nEnd port:\t[%d]\n",ip,startport,endport);
        to.sin_family=AF_INET;
        to.sin_addr.s_addr=inet_addr(ip);
        start=clock();
        for(i=startport;i<=endport;i++)
        {                sockfd=socket(AF_INET,SOCK_STREAM,0);
                to.sin_port=htons(i);
                if(connect(sockfd,(struct sockaddr *)&to,sizeof(struct sockaddr))==0)
                {                        printf("%s    %d\n",ip,i);
                }
                close(sockfd);
        }
        end=clock();
        costtime=(float)(end-start)/CLOCKS_PER_SEC;
        printf(" 用时:%f 秒 \n",costtime);
        return 0;
}

编译运行后的示例如下:

./tcp_scan 192.168.0.1 10 65535     
Scaned IP:      [192.168.0.1]
Start port:     [10]
End port:       [65535]
192.168.0.1    22
192.168.0.1    80
192.168.0.1   443
192.168.0.1    1194
192.168.0.1   3306
192.168.0.1    8181
192.168.0.1    8183
192.168.0.1    36588
192.168.0.1    37527
用时:2.440000 秒

说明:程序扫描起始端口为 10,结束端口为 65536,从扫描结果可以看到有 22 80 等这些端口是开放的监听 TCP 连接。

正文完
创作不易,扫码加点动力
post-qrcode
 0
果较瘦
版权声明:本站原创文章,由 果较瘦 于2014-10-10发表,共计1746字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。
评论(一条评论)
匿名
2015-04-14 14:18:33 回复

在linux下,扫描没*放的端口时,就卡住了

   Denglu  中国福建省厦门市联通