📄 269.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="192.htm">上一层</a>][<a href="270.htm">下一篇</a>]
<hr><p align="left"><small>寄信人: guru.bbs@bbs.gznet.edu.cn <br>
标 题: [转寄] FreeProxyScan <br>
注 意: 站外信件 <br>
日 期: Mon Aug 6 20:05:18 2001 <br>
<br>
/* free proxy搜索程序,运行于UNIX平台 */ <br>
/* 用法: 程序名 起始IP地址 结束IP地址 日志文件 */ <br>
/* 搜索结果存于日志文件中 */ <br>
/* 作者: Happy(Netguy) */ <br>
<br>
#include <stdio.h> <br>
#include <netinet/in.h> <br>
#include <sys/types.h> <br>
#include <sys/socket.h> <br>
#include <sys/signal.h> <br>
#include <sys/time.h> <br>
#include <fcntl.h> <br>
#include <unistd.h> <br>
<br>
#define N 11 <br>
#define ZERO (struct fd_set *)0 <br>
<br>
int port[N]={ 80,81,88,8083,8080,8001,8888,3128,3124,3000,1080}; <br>
/* 欲搜的端口号 */ <br>
int status; <br>
struct in_addr serverIP; <br>
char serverName[20]; <br>
int sockfd; <br>
struct timeval timeout; <br>
struct fd_set mask; <br>
FILE *f; <br>
char errorCode; <br>
int errorLen; <br>
u_long startIP,endIP,k; <br>
<br>
void terminate(void) /* 处理SIGTERM信号 */ <br>
{ <br>
fprintf(f,"Program killed at %s\n",serverName); <br>
exit(0); <br>
} <br>
<br>
void findProxy(u_long addr) <br>
{ <br>
int i; <br>
struct sockaddr_in host; <br>
<br>
/* 若连上了某个主机,则看其所有有可能提供proxy服务的端口 */ <br>
<br>
for(i=0;i<N;i++) <br>
{ <br>
host.sin_family=AF_INET; <br>
host.sin_addr.s_addr=htonl(addr); <br>
host.sin_port=htons(port[i]); <br>
<br>
if ( (sockfd=socket(AF_INET,SOCK_STREAM,0))<0 ) <br>
{ fprintf(f,"socket( ) error at %s\t%d\n",serverName,port[i]); <br>
exit(-1); <br>
} <br>
<br>
if(fcntl(sockfd,F_SETFL,O_NDELAY) < 0 ) /* 非阻塞式socket */ <br>
{ fprintf(f,"fcntl() error at %s\t%d\n",serverName,port[i]); <br>
exit(-1); <br>
} <br>
<br>
status=connect(sockfd,(struct sockaddr *)& host,sizeof(host)); <br>
timeout.tv_sec=2; <br>
timeout.tv_usec=0; /* 超时限制 */ <br>
FD_ZERO( & mask); <br>
FD_SET(sockfd,& mask); <br>
status=select(sockfd+1,ZERO,& mask,ZERO,& timeout); <br>
switch(status) <br>
{ case -1: <br>
fprintf(f,"select( ) error at %s\t%d\n",serverName,port[i]); <br>
exit(-1); <br>
case 0: /* 连接超时则继续扫下一个IP地址 */ <br>
close(sockfd); <br>
return; <br>
default: /* 连上了 */ <br>
if( FD_ISSET(sockfd,& mask) ) <br>
{ errorCode=1; <br>
errorLen=sizeof(errorCode); <br>
getsockopt(sockfd,SOL_SOCKET,SO_ERROR,&errorCode,&errorLen); <br>
if(errorCode==0) <br>
fprintf(f,"%s\t%d\n",serverName,port[i]); <br>
} <br>
} <br>
close(sockfd); <br>
fflush(f); <br>
} <br>
} <br>
} <br>
/*===========================================================================*/ <br>
main(int argc,char *argv[]) <br>
{ <br>
<br>
int i; <br>
<br>
if(argc!=4) <br>
{ printf("Usage: %s startIP endIP logFile\n",argv[0]); <br>
exit(-1); <br>
} <br>
<br>
startIP=ntohl(inet_addr(argv[1])); /* 搜索的IP范围 */ <br>
endIP=ntohl(inet_addr(argv[2])); /* 保证endIP大于startIP */ <br>
if(startIP>endIP) <br>
{ k=startIP; <br>
startIP=endIP; <br>
endIP=k; <br>
} <br>
<br>
f=fopen(argv[3],"a"); /* 打开日志文件 */ <br>
if(f==NULL) <br>
if(f==NULL) <br>
{ printf("Error open log file: %s\n",argv[3]); <br>
exit(-1); <br>
} <br>
fprintf(f,"%s--------->%s\n",argv[1],argv[2]); <br>
fflush(f); <br>
<br>
printf("Searching proxy...\n"); <br>
printf("%s----------->%s\n",argv[1],argv[2]); <br>
printf("\tport:\n"); <br>
for( i=0;i<N;i++) printf("\t%d\n",port[i]); <br>
<br>
signal(SIGTERM,terminate); /* 处理SIGTERM信号 */ <br>
<br>
switch(fork()) <br>
{ case 0: /* 子进程继续 */ <br>
break; <br>
case -1: /* 出错 */ <br>
perror("fork( )"); <br>
exit(-1); <br>
default: /* 父进程结束 */ <br>
exit(0); <br>
} <br>
<br>
if(setsid( )<0) /* 脱离进程组,脱离控制终端 */ <br>
{ perror("setsid( )"); <br>
exit(-1); <br>
} <br>
<br>
for(k=startIP;k<=endIP;k++) /* 循环扫描指定范围内的所有IP */ <br>
{ if( (k % 256)==0) continue; <br>
if( (k % 256)==255) continue; /* 略过两类特殊的IP地址 */ <br>
serverIP.s_addr=k; <br>
sprintf(serverName,"%s",ntohl(inet_ntoa(serverIP))); <br>
findProxy(k); <br>
} <br>
fprintf(f,"All done\n"); <br>
fclose(f); <br>
} <br>
<br>
<br>
<br>
-- <br>
※ 修改:.Happy 于 Aug 14 12:19:34 修改本文.[FROM: 202.38.198.197] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="192.htm">上一层</a>][<a href="270.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -