Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Dump with captcha

Name: Anonymous 2010-09-07 15:38

Hi, has anybody made a dump script that supports the captchas? If not, I'll get to working on one in a few weeks.
It should post one picture every 60 seconds, asking for the captcha answers as needed.

Name: Anonymous 2010-11-12 14:50

Note: if you use this, you will get banned. I'm having trouble getting all the HTTP emulation stuff right.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Captchan {

    public static String url = "";
    public static String challenge = "";
    public static String response = "";

    JFileChooser filechooser = new JFileChooser();
    JFrame frame = new JFrame("Captchan");
    JPanel panel = new JPanel();
    JButton select = new JButton("Select Files...");
    JTextField tfBoard = new JTextField("Board");
    JTextField tfThread = new JTextField("Thread");
    JTextField tfName = new JTextField("Name");
    JTextField tfEmail = new JTextField("Email");
    JTextField tfSubject = new JTextField("Subject");
    JTextField tfComment = new JTextField("Comment");
    JTextField tfSeconds = new JTextField("Seconds to wait");
    JButton start = new JButton("Start");
   
    File files[];
   
    public static void main(String[] args) {
        new Captchan();
    }
   
    public Captchan() {
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setContentPane(panel);
        panel.setLayout(new java.awt.GridLayout(9,1,0,3));
        panel.add(select);
        panel.add(tfBoard);
        panel.add(tfThread);
        panel.add(tfName);
        panel.add(tfEmail);
        panel.add(tfSubject);
        panel.add(tfComment);
        panel.add(tfSeconds);
        panel.add(start);
        frame.pack();
       
        select.addActionListener(new OpenAction());
        start.addActionListener(new StartAction());
       
        filechooser.setMultiSelectionEnabled(true);
       
        frame.setVisible(true);
   
    }
   
    private void work() {
       
        select.setEnabled(false);
        tfBoard.setEnabled(false);
        tfThread.setEnabled(false);
        tfName.setEnabled(false);
        tfEmail.setEnabled(false);
        tfSubject.setEnabled(false);
        tfComment.setEnabled(false);
        tfSeconds.setEnabled(false);
        start.setEnabled(false);
       
        for(File file:files) {
            String topic = "";
            try {
                String topicURL = "http://boards.4chan.org/" + tfBoard.getText() + "/res/" + tfThread.getText();
                topic = wget(new URL(topicURL), false);
                int left = topic.indexOf("http://api.recaptcha.net/challenge?k=") + "http://api.recaptcha.net/challenge?k=".length();
                int right = topic.indexOf('"', left);
                reCaptcha(topic.substring(left, right));
               
               
                ClientHttpRequest chr;
                chr = new ClientHttpRequest("http://sys.4chan.org/"+tfBoard.getText()+"/post");
                chr.setUserAgent("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12");
                chr.setReferer(topicURL);
                chr.setParameter("name", tfName.getText());
                chr.setParameter("email", tfEmail.getText());
                chr.setParameter("sub", tfSubject.getText());
                chr.setParameter("com", tfComment.getText());
                chr.setParameter("recaptcha_challenge_field", challenge);
                chr.setParameter("recaptcha_response_field", response);
                chr.setParameter("upfile", file);
                chr.setParameter("pwd", genPass());
                chr.setParameter("mode", "regist");
                chr.post();
                try {
                    Thread.sleep(1000000L * Long.parseLong(tfSeconds.getText()));
                } catch (NumberFormatException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
               
            } catch (MalformedURLException e) {
                System.exit(1);
            } catch (IOException e) {
                System.exit(1);
            }
        }
    }
   
    private String genPass() {
        String result = "";
        for(int i=0;i<8;i++) {
            result += (char)(((int)Math.random()*26)+97);
        }
        return result;
    }
   
    public static String wget (URL url, boolean post, String... post_data)
    {
        return wget(url, post, false, post_data);
    }
    public static String wget(URL url, boolean post, boolean ignore, String... post_data)
    {
        try
        {
            URLConnection urlcon = url.openConnection();
           
            if (post)
            {
                String msg = "";
                boolean key = false;
                for (String s : post_data)
                {
                    msg += URLEncoder.encode(s, "UTF-8");
                    if (key = !key) msg += "=";
                    else msg += "&";
                }
                urlcon.setDoOutput(true);
                urlcon.getOutputStream().write(msg.getBytes());
            }
           
            InputStream urlin = urlcon.getInputStream();
            String data = ignore ? null : "";
            int len;
            byte[] buffer = new byte[1023];
            while ((len = urlin.read(buffer)) >= 0)
            {
                if (!ignore)
                    data += new String(buffer, 0, len);
            }
            return data;
        }
        catch (Exception ex)
        {
            System.err.println("[" + url + "]:");
            ex.printStackTrace();
            return null;
        }
    }

    private void reCaptcha(String id)
    {
        try
        {
            String captcha = wget(new URL("http://www.google.com/recaptcha/api/challenge?k=" + id + "&ajax=1&cachestop=0.34919850158610977"), false);
            int idx0 = captcha.indexOf("challenge : '") + "challenge : '".length();
            int idx1 = captcha.indexOf('\'', idx0);
            String challenge = captcha.substring(idx0, idx1);
           
            new ReCaptchaWindow(challenge);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    class OpenAction implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            int returnval = filechooser.showOpenDialog(null);
            if (returnval == JFileChooser.APPROVE_OPTION) {
                files = filechooser.getSelectedFiles();
            }
        }
    }

    class StartAction implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            work();
        }
    }
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List