回 帖 发 新 帖 刷新版面

主题:管理员注意了-网上出现论坛注册机

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;

/**
*
* @author vlinux
*/
public class AutoRegister {
    
    
    
    
    
    
    /**
     * 发送请求到目的站点
     * site 目的站点
     * port 目的端口
     * content 发送的内容
     * 发送成功返回true,但是不保证一定能在业务逻辑上的成功,仅仅是发送过去了而已
     * 发送失败,比如找不到服务器等就返回false
     */
    public boolean sendRegister(String site, int port, String content) {
        boolean result = false; //返回
        Socket socket = null;
        try{
            
            /*
             * 与对方站点建立连接
             */
            socket = new Socket(site,port);
            PrintWriter pw = new PrintWriter( socket.getOutputStream() );
            
            /*
             * 发送信息
             */
            pw.write( content );
            pw.flush();
            
            /*
             * 到这一步发送成功,返回true
             */
            result = true;
        } catch (IOException ioe) {
            
            /*
             * 如果发送过程中出现意外则返回false
             */
            result = false;
        } finally {
            /*
             * 不管是否发送成功,我们都得关闭连接
             */
            try {
                socket.close();
            } catch (IOException ex) {
                /*
                 * 关闭连接的时候发生异常
                 */
                ex.printStackTrace();
            }
            return result;
        }
    }
    
    
    
    
    

    
    /**
     * 从文件中获取注册时候的Http Header
     */
    public String getRegisterHttpHeader(String headerFilename) throws FileNotFoundException {
        
        /*
         * 因为找不到文件是不可修复的异常,
         * 所以继续抛出
         */
        BufferedReader br = new BufferedReader( new FileReader( new File(headerFilename) ) );
        StringBuffer sb=new StringBuffer();
        try {
            while(br.ready()){
                sb.append( br.readLine()+"\n" );
            }
        } catch (IOException ex) {
            /*
             * 这里在这里软件中不会有异常抛出
             * 所以就让异常死在这里了
             */
            //ex.printStackTrace();
        }
        return sb.toString();
    }
    
    
    
    
    
    
    /**
     * 注册用户
     * username 帐号名和密码
     * site 被注册的站点
     * port 该站点web服务的端口号,一般是80
     */
    public void register( String username, String site, int port ) throws FileNotFoundException {
        
        /*
         * 因为找不到文件是不可修复的异常,
         * 所以继续抛出
         */
        String header = getRegisterHttpHeader("programfan_hacker_register.txt");
        
        /*
         * @替换字符串中的帐号和密码
         * 我在抓FireFox2.0发出去的Http Header的时候用户名和密码贪图省事都是一样的
         * 都是vlinuxGXU1,所以这里也全部都替换成为一样的,呵呵。
         */
        header = header.replaceAll("vlinuxGXU1",username);
        
        /*
         * 开始注册
         */
        if( sendRegister(site,port,header) == true ) {
            System.out.println( "注册成功,用户名称:"+username+",密码:"+username );
        } else {
            System.out.println( "注册"+username+"失败." );
        }
        
    }
    
    
    
    /**
     * 主方法
     * @author vlinux
     */
    public static void main(String... args) {
        AutoRegister ar = new AutoRegister();
        try {
            /**
             * 帐号和密码都是 knockerkao
             * 当然,当你看到这个代码的时候knockerkao早就被我注册了
             * 对了,顺便提醒一句,你起的帐号名必须要超过7个字符以上
             * 否则会和我的 Content-Length: 256 对不上
             * 因为你至少要超过这个数字才能正确被服务器识别
             */
            ar.register("knockerkao","www.programfan.com",80);
        } catch (FileNotFoundException ex) {
            System.out.println( "找不到文件: "+ex.getMessage()  );
        }
    }
    
    
}

POST http://www.programfan.com/user/saveuser.asp?action=person HTTP/1.1
Host: www.programfan.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1) Gecko/20061023 SUSE/2.0-30 Firefox/2.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://www.programfan.com/user/register.asp
Cookie: style=1; ASPSESSIONIDQATDRQTQ=KEDFEAFBAMMDEGCDPABJGDJB; userid=; username=
Content-Type: application/x-www-form-urlencoded
Content-Length: 256

username=vlinuxGXU1&password=vlinuxGXU1&repassword=vlinuxGXU1&name=vlinuxGXU1&sex=%C4%D0&email=vvv%40gxu.edu.cn&question=vlinuxGXU1&answer=vlinuxGXU1&city=%C9%CF%BA%A3&year=1920&month=1&day=1&qq=&website=&address=&zipcode=&phonenumber=&Submit=%C8%B7+%B6%A8
出处:http://bbs.bc-cn.net/dispbbs.asp?boardID=8&ID=115823&page=1

不知道管理员怎么看........

个人觉得登入的时候应该有验证码,可能会有效果

回复列表 (共2个回复)

沙发

谢谢您的建议,因为我的电脑几天前电源烧掉了,一直没办法维护网站,今天终于买回了新机器了,明天会研究解决这个问题,感觉验证码确实是有必要的。

板凳

那加油了哦

我来回复

您尚未登录,请登录后再回复。点此登录或注册