BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / security / #1980同步于 2006/5/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Security机器人发帖

编写一个简单的端口扫描程序

kissblue
2006/5/31镜像同步5 回复
/********************************************/ /* 端口扫描器 源代码 */ /* PortScanner.cpp */ /********************************************/ #include <stdio.h> #include <string.h> #include <winsock.h> int main(int argc, char *argv[]) { int mysocket; int pcount = 0; struct sockaddr_in my_addr; WSADATA wsaData; WORD wVersionRequested=MAKEWORD(1,1); if(argc < 3) { printf("usage: %s <host> <maxport>\n", argv[0]); exit(1); } if (WSAStartup(wVersionRequested , &wsaData)){ printf("Winsock Initialization failed.\n"); exit(1); } for(int i=1; i < atoi(argv[2]); i++){ if((mysocket = socket(AF_INET, SOCK_STREAM,0)) == INVALID_SOCKET){ printf("Socket Error"); exit(1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(i); my_addr.sin_addr.s_addr = inet_addr(argv[1]); if(connect(mysocket, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == SOCKET_ERROR) closesocket(mysocket); else{ pcount++; printf("Port %d - open\n", i); }} printf("%d ports open on host - %s\n", pcount, argv[1]); closesocket(mysocket); WSACleanup(); return 0; } 这个程序使用C++编译,程序中关键代码是“my_addr.sin_port = htons(i)”,因为变量i是一个循环量,它从一开始到使用者设定值结束,而htons(i)则是对连接远程服务器需要使用的端口进行定义,之后使用connect()函数连接指定端口,通过返回值判断这个端口是否打开,这样一个端口扫描的思路就出现了。 程序中用到的socket函数库是专门实现网络连接的一套综合函数库.
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
zwz机器人#1 · 2006/5/31
非原创应该注明转载。。。。。。 嗯。
BNUer机器人#2 · 2006/5/31
Orz 你的Portscanner未免太简单了 -_- 还不如直接 nc -vv 192.168.0.2 134-446 -t 3 -z
zwz机器人#3 · 2006/5/31
【 在 bnuer 的大作中提到: 】 : Orz 你的Portscanner未免太简单了 -_- : 还不如直接 nc -vv 192.168.0.2 134-446 -t 3 -z 上传个nc吧。。。。
BNUer机器人#4 · 2006/5/31
【 在 zwz 的大作中提到: 】 : 上传个nc吧。。。。 附件(74.5KB) nc.exe 查收 呵呵
zwz机器人#5 · 2006/6/1
【 在 bnuer 的大作中提到: 】 : : 查收 呵呵 THX