论坛: 编程破解 标题: 一个多线程在线扫描的CGI----PERL(win2000+apache) 复制本贴地址    
作者: skywee [skywee]    论坛用户   登录
写了这个程序后,一般服务器的perl都不支持多线程,痛苦,于是想起了saint,请问这里有研究过saint代码的吗?能和我说说吗,如果没有,有人愿意一起研究吗?谢谢!

#!/usr/bin/perl 

print "Content-type: text/html\n\n"; 
print"<html>\n"; 

use Thread 'async'; 
use Socket; 

$proto=getprotobyname('tcp'); 
$host = '192.168.0.10'; 
$iaddr = inet_aton($host); 

$portstart=1; 
$portend=200; 
$portnum=($portend-$portstart)+1; 
if($portnum%10==0) 

        $forknum=$portnum/10; 

else 

        $forknum=($portnum-$portnum%10)/10+1; 


for($i=0;$i<$forknum;$i++) 


        $th[$i] = async 

        { 
                $m=$i; 
                for($port=$portstart+$m*10;$port<$portstart+$m*10+10 and $port<=$portend;$port++){ 
                        
                        socket(SOCKET,PF_INET,SOCKET_STREAM,$proto) or die "Can't create socket: $!"; 

                        $serv_addr = sockaddr_in($port,$iaddr); 

                        if(connect(SOCKET,$serv_addr)) 
                        { 
                                print"$port port is open!\n"; 
                        } 
                        close(SOCKET); 
                } 
                return "OK"; 
        
        }; 


for($i=0;$i<$forknum;$i++) 

        $th[$i]->join(); 


print"</html>\n"; 


地主 发表时间: 12/05 13:53

回复: NetDemon [netdemon]   ADMIN   登录
不错,很好,不过不明白为什么你非要用CGI方式运行
难道做个叶面让人输入IP地址去扫描?
谁愿意自己的机器让人家当肉鸡用呢?
如果非要用CGI方式的话,建议用fastcgi或mod_perl写,mod_perl比普通CGI快10倍以上,fastcgi更是快有15倍(我亲自用这个论坛测试的结果)不过,对你这样的程序却是起不到什么作用。
另外,建议写perl程序的时候尽量都use strict;
除非你想进一步体会痛苦这个词的含义。

B1层 发表时间: 12/05 19:04

回复: skywee [skywee]   论坛用户   登录
谢谢,我学perl主要就是为了写CGI,我写这个扫描程序的作用是为了让我的个人主页里有在线扫描和攻击的功能。我没有学很长时间的perl,对于perl的语法还不是很清楚,在看saint的原码时有些困难,能给我提些建议码?不胜感激。

B2层 发表时间: 12/06 17:27

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号