基于socket编程的的TCP端口扫描程序
2019-09-24 09:35
1131 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44151143/article/details/101265836
基于socket编程的的TCP端口扫描程序
Ubuntu下的C语言编程
用户设定扫描目的的地址;并设定扫描端口的范围;
先通过gcc编译 gcc scanip.c -o scanip
然后运行./scanip 127.0.0.1 1 65535(可修改为自己想要扫描的IP和端口范围)
#include<stdlib.h> #include<stdio.h> #include<sys/socket.h> #include<string.h> #include<unistd.h> #include<netinet/in.h> #include<arpa/inet.h> struct servent{ char* s_name; char** s_aliases; int s_port; char* s_proto; }; void print_usage(char * cmd) { fprintf(stderr," %s usage:\n",cmd); fprintf(stderr,"%sIP_Addr[port]\n",cmd); } int scanport(int sockfd,struct sockaddr_in scanip,int port,char** arg){ if(-1==(sockfd=socket(AF_INET,SOCK_STREAM,0))){ perror("can not create socket\n"); exit(1); } memset(&scanip,0,sizeof(struct sockaddr_in)) scanip.sin_family = AF_INET; scanip.sin_addr.s_addr =inet_addr(arg[1]); scanip.sin_port = htons(port); int ret =connect(sockfd,(struct sockaddr*)&scanip,sizeof(struct sockaddr)); close(sockfd); return ret; } int main(int argc,char** argv) { int sockfd; struct servent* sp; int start_port=atoi(argv[2]); int end_port=atoi(argv[3]); struct sockaddr_in scanip; if (4!=argc) { print_usage(argv[0]); exit(1); } for(start_port;start_port<=end_port;start_port++){ if(!scanport(sockfd,scanip,start_port,argv)){ if (-1==(sockfd=socket(AF_INET,SOCK_STREAM,0))) { perror("can not create socket\n"); exit(1); } connect(sockfd,(struct sockaddr*)&scanip,sizeof(struct sockaddr)); sp=getservbyport(htons(start_port),"tcp"; if (NULL!=sp){ printf("%d,%s\n",start_port,sp->s_name); } else{ printf("%d unknow\n",start_port); } close(sockfd); } } exit(0); }
可以通过nmap进行验证,结果一致
nmap的安装:opt install nmap
相关文章推荐
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- 基于Python socket的端口扫描程序实例代码
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- 网络编程,IP地址、端口、tcp、socket、TCP客户端,服务端和TCP多任务版服务端程序
- 基于Python socket的端口扫描程序
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- linux网络编程之socket(十四):基于UDP协议的网络程序
- 基于TCP的socket编程
- 基于Socket的UDP和TCP编程介绍(转)
- 基于TCP的socket编程步骤
- socket编程基于UDP的服务端客户端回声程序
- VC面向对象的方式 写一个基于TCP的 客户端服务端程序 (SOCKET)
- Android Socket编程基于TCP实现客户端与服务器简易通信
- 基于TCP的socket编程
- 基于Socket的UDP和TCP编程介绍
- 基于TCP的socket编程网络掉线重连
- 基于C#的socket编程的TCP异步实现
- 【SOCKET编程】基于C++的TCP/UDP的聊天室
- Python学习之socket编程(基于tcp)