📄 00000013.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: tjb (老六), 信区: Linux <BR>标 题: 将前面的Proxyscan.c改在Linux上 <BR>发信站: BBS 水木清华站 (Tue Jul 14 22:45:37 1998) <BR> <BR>也许前面的编译时加参数可以过, 但我没试 <BR>因为gcc -o proxyscan proxyscan.c看到的只是几个小 <BR>问题, 我就稍加了一点点改动, 不要笑哟 <BR>就可以在我的slackware3.4下跑了 <BR>try gcc -o proxyscan proxyscan.c <BR> <BR> <BR>/* free proxy搜索程序,for UNIX */ <BR>/* 用法: 程序名 起始IP地址 结束IP地址 日志文件 */ <BR>/* 本程序将把搜索结果存于日志文件中 */ <BR>/* Author: Happy(Netguy) */ <BR>/* */ <BR>/* 1998.07.02 calvin注: */ <BR>/* 原来版本在Solaris上,我将它改到FreeBSD上来. :) */ <BR>/* */ <BR>/* 1998.07.14 TJB: */ <BR>/* 不好意思, 我又稍加改动跑到linux下来了:) */ <BR> <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>#include <sys/ioctl.h> <BR> <BR>#define N 11 <BR> <BR>int port[N]={ <BR>80,81,88,8083,8080,8001,8888,3128,3124,3000,1080}; /* 欲搜的端口号 */ <BR>int status=-1; <BR>char serverName[20]; <BR>u_char p1,p2,p3,p4; <BR>int sockfd=-1; <BR>struct timeval timeout={2,0}; <BR>fd_set mask; <BR>FILE *f=NULL; <BR>int err; <BR>int errlen; <BR>u_long startIP,endIP,k; <BR> <BR>void terminate(int sig)/*TJB改terminate(void)为(int sig) */ /* 异常中止处理子程序 */ <BR>{ <BR> p1=(u_char)( (k>>24) & 0xFF); <BR> p2=(u_char)( (k>>16) & 0xFF); <BR> p3=(u_char)( (k>>8 ) & 0xFF); <BR> p4=(u_char)( k & 0xFF); <BR> fprintf(f,"%d.%d.%d.%d killed.\n",p1,p2,p3,p4); <BR> fclose(f); <BR> if(sockfd>0) close(sockfd); <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," Error open socket\n"); <BR> exit(-1); <BR> } <BR> <BR> <BR> /* 试连一个可能提供proxy服务的一个端口 */ <BR> /* O_NDELAY = FNDELAY = O_NONBLOCK */ <BR> <BR> if(fcntl(sockfd,F_SETFL,O_NDELAY) < 0 ) /* 非阻塞式socket */ <BR> { fprintf(f,"fcntl() error\n"); <BR> exit(-1); <BR> } <BR> status=connect(sockfd,(struct sockaddr *)& host,sizeof(host)); <BR> timeout.tv_sec=1; <BR> timeout.tv_usec=0; /* 超时限制 */ <BR> FD_ZERO( & mask); <BR> FD_SET(sockfd,& mask); <BR> status=select(sockfd+1,(fd_set *)0,& mask, (fd_set *)0,& timeout); <BR>/* TJB修改struct fd_set * 为fd_set * :) */ <BR> switch(status) <BR> { case -1: <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -