人人农场 renren 外挂 Java 实现
看过《被偷无奈写个收菜外挂》 http://www.iteye.com/topic/692028
建议大家不要偷菜,因为偷菜如果遇到有狗的、有蜜蜂的将会失掉非常多的金币,本人以前的程序就有此功能,后来给删除了,
先交上java程序,供大家享用,
程序中添加了验证码功能,每隔5分钟收割一次。
MainFrame.java
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
/* * MainFrame.java * * Created on Oct 10, 2011, 12:22:32 PM */package com.myproj.renren3g_threads_2;
import java.awt.Image;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Date;import java.util.List;import java.util.logging.Level;import java.util.logging.Logger;import javax.imageio.ImageIO;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JLabel;import javax.swing.JRadioButton;
/** * * @author User */public class MainFrame extends java.awt.Frame implements Runnable {
private User currentUser; private boolean verifyCodeFlag; private String verifyCode; private Renren3G_Farm renren; private ByteArrayOutputStream bais; private Thread thread; private int actionCounter; private boolean pauseFlag;
/** Creates new form MainFrame */ public MainFrame() { }
public void init() { initComponents();
currentUser = new User();
renren = new Renren3G_Farm(); renren.setTextArea(outputTextArea);
// actionCounter = 0; counterField.setText("" + actionCounter);
pauseFlag = false; pauseButton.setSelected(pauseFlag);
// redraw layout gifPanel.setVisible(false); validate(); repaint(); }
/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {
basePanel = new javax.swing.JPanel(); usersPanel = new javax.swing.JPanel(); jSeparator1 = new javax.swing.JSeparator(); loginPanel = new javax.swing.JPanel(); userPanel = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); usernameTextField = new javax.swing.JTextField(); passwordPanel = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); passwordTextField = new javax.swing.JTextField(); gifPanel = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); imgPanel = new javax.swing.JPanel(); refreshImgButton = new javax.swing.JButton(); jSeparator3 = new javax.swing.JSeparator(); dbImgPanel = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); dbImgTextField = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); dbCodeTextField = new javax.swing.JTextField(); jPanel3 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); verifyTextField = new javax.swing.JTextField(); dbUpdateButton = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); loginButton = new javax.swing.JButton(); jPanel4 = new javax.swing.JPanel(); jLabel6 = new javax.swing.JLabel(); counterField = new javax.swing.JTextField(); pauseButton = new javax.swing.JToggleButton(); jSeparator2 = new javax.swing.JSeparator(); textPanel = new javax.swing.JPanel(); textScrollPane = new javax.swing.JScrollPane(); outputTextArea = new javax.swing.JTextArea(); exitButton = new javax.swing.JButton();
setMinimumSize(new java.awt.Dimension(500, 600)); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } });
basePanel.setLayout(new javax.swing.BoxLayout(basePanel, javax.swing.BoxLayout.Y_AXIS));
usersPanel.setLayout(new javax.swing.BoxLayout(usersPanel, javax.swing.BoxLayout.Y_AXIS)); basePanel.add(usersPanel); basePanel.add(jSeparator1);
loginPanel.setLayout(new javax.swing.BoxLayout(loginPanel, javax.swing.BoxLayout.Y_AXIS));
userPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabel1.setText("Username"); userPanel.add(jLabel1);
usernameTextField.setColumns(25); usernameTextField.setMinimumSize(new java.awt.Dimension(6, 200)); usernameTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { usernameTextFieldActionPerformed(evt); } }); userPanel.add(usernameTextField);
loginPanel.add(userPanel);
passwordPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabel2.setText("Password"); passwordPanel.add(jLabel2);
passwordTextField.setColumns(25); passwordTextField.setMinimumSize(new java.awt.Dimension(6, 200)); passwordPanel.add(passwordTextField);
loginPanel.add(passwordPanel);
gifPanel.setLayout(new javax.swing.BoxLayout(gifPanel, javax.swing.BoxLayout.Y_AXIS));
jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel2.add(imgPanel);
refreshImgButton.setText("Refresh"); refreshImgButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { refreshImgButtonActionPerformed(evt); } }); jPanel2.add(refreshImgButton);
jSeparator3.setOrientation(javax.swing.SwingConstants.VERTICAL); jPanel2.add(jSeparator3); jPanel2.add(dbImgPanel);
jLabel4.setText("Size"); jPanel2.add(jLabel4);
dbImgTextField.setColumns(6); dbImgTextField.setEditable(false); jPanel2.add(dbImgTextField);
jLabel5.setText("Verify Code"); jPanel2.add(jLabel5);
dbCodeTextField.setColumns(6); dbCodeTextField.setEditable(false); jPanel2.add(dbCodeTextField);
gifPanel.add(jPanel2);
jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabel3.setText("Input Verify Code:"); jPanel3.add(jLabel3);
verifyTextField.setColumns(6); jPanel3.add(verifyTextField);
dbUpdateButton.setText("Update database"); dbUpdateButton.setEnabled(false); dbUpdateButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { dbUpdateButtonActionPerformed(evt); } }); jPanel3.add(dbUpdateButton);
gifPanel.add(jPanel3);
loginPanel.add(gifPanel);
jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
loginButton.setText("Login"); loginButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loginButtonActionPerformed(evt); } }); jPanel1.add(loginButton);
jPanel4.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.TRAILING));
jLabel6.setText("Action Count:"); jPanel4.add(jLabel6);
jPanel1.add(jPanel4);
counterField.setColumns(5); counterField.setText("jTextField1"); counterField.setEnabled(false); jPanel1.add(counterField);
pauseButton.setText("Pause"); pauseButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { pauseButtonActionPerformed(evt); } }); jPanel1.add(pauseButton);
loginPanel.add(jPanel1);
basePanel.add(loginPanel); basePanel.add(jSeparator2);
textPanel.setLayout(new java.awt.BorderLayout());
outputTextArea.setColumns(20); outputTextArea.setRows(5); textScrollPane.setViewportView(outputTextArea);
textPanel.add(textScrollPane, java.awt.BorderLayout.CENTER);
basePanel.add(textPanel);
add(basePanel, java.awt.BorderLayout.CENTER);
exitButton.setText("Exit"); exitButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitButtonActionPerformed(evt); } }); add(exitButton, java.awt.BorderLayout.SOUTH);
pack(); }// </editor-fold>
/** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); }
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); }
private void usernameTextFieldActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: }
private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {
// update user info. currentUser.setUsername(usernameTextField.getText()); currentUser.setPassword(passwordTextField.getText());
// clear output outputTextArea.setText("---- " + (new Date()).toString() + " ----\n");
verifyCode = verifyTextField.getText(); //outputTextArea.append("Verify code = '" + verifyCode + "'"); System.out.println("Verify code = '" + verifyCode + "'");
boolean firstTimeLogon; if (!verifyCodeFlag) { // first time, no verify image firstTimeLogon = renren.logon(currentUser); } else { // firstTimeLogon = renren.logon(currentUser, verifyCode); } //System.out.println("first time logon : " + firstTimeLogon);
if (firstTimeLogon) { // login success thread.start(); }
if (!firstTimeLogon) { // require verify code System.out.println("verify image url : " + renren.getVerifyImageUrl());
// show verify image try { bais = renren.getRenrenVerifyImage(); System.out.println("bais.size() = " + bais.size());
String digest = getDigest_md5(bais); System.out.println("Digest_md5 = '" + digest + "'");
Image image = ImageIO.read(new ByteArrayInputStream(bais.toByteArray()));
imgPanel.removeAll(); JLabel label = new JLabel(new ImageIcon(image)); imgPanel.add(label);
verifyCodeFlag = true;
// redraw layout verifyTextField.setText(""); gifPanel.setVisible(true); validate(); repaint(); } catch (IOException ex) { Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex); } } }
private void refreshImgButtonActionPerformed(java.awt.event.ActionEvent evt) { try { outputTextArea.setText((new Date()).toString() + " ---- from outputTextArea ----");
bais = renren.refreshRenrenVerifyImage(); System.out.println("bais.size() = " + bais.size());
String digest = getDigest_md5(bais); System.out.println("Digest_md5 = '" + digest + "'");
Image image = ImageIO.read(new ByteArrayInputStream(bais.toByteArray()));
imgPanel.removeAll(); JLabel label = new JLabel(new ImageIcon(image)); imgPanel.add(label);
// redraw layout validate(); repaint(); } catch (IOException ex) { Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex); } }
private void dbUpdateButtonActionPerformed(java.awt.event.ActionEvent evt) { }
private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) { pauseFlag = pauseButton.isSelected(); }
private String getDigest_md5(ByteArrayOutputStream bais) {
// demo : get md5 digest for String StringBuilder hexString = new StringBuilder();
byte[] defaultBytes = bais.toByteArray(); try { MessageDigest algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(defaultBytes); byte messageDigest[] = algorithm.digest();
for (int i = 0; i < messageDigest.length; i++) { hexString.append(Integer.toHexString(0xFF & messageDigest[i])); } //String foo = messageDigest.toString(); //System.out.println("sessionid " + sessionid + " md5 version is " + hexString.toString()); } catch (NoSuchAlgorithmException nsae) { }
return hexString.toString(); }
/** * @param args the command line arguments */ public static void main(String args[]) {// java.awt.EventQueue.invokeLater(new Runnable() {//// public void run() {// new MainFrame().setVisible(true);// }// }); MainFrame frame = new MainFrame(); Thread renrenThread = new Thread(frame); frame.setThread(renrenThread); frame.setVisible(true); frame.init(); } // Variables declaration - do not modify private javax.swing.JPanel basePanel; private javax.swing.JTextField counterField; private javax.swing.JTextField dbCodeTextField; private javax.swing.JPanel dbImgPanel; private javax.swing.JTextField dbImgTextField; private javax.swing.JButton dbUpdateButton; private javax.swing.JButton exitButton; private javax.swing.JPanel gifPanel; private javax.swing.JPanel imgPanel; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JButton loginButton; private javax.swing.JPanel loginPanel; private javax.swing.JTextArea outputTextArea; private javax.swing.JPanel passwordPanel; private javax.swing.JTextField passwordTextField; private javax.swing.JToggleButton pauseButton; private javax.swing.JButton refreshImgButton; private javax.swing.JPanel textPanel; private javax.swing.JScrollPane textScrollPane; private javax.swing.JPanel userPanel; private javax.swing.JTextField usernameTextField; private javax.swing.JPanel usersPanel; private javax.swing.JTextField verifyTextField; // End of variables declaration
public void run() { while (true) { if (!pauseFlag) { Date date = new Date(); //System.out.println(date); outputTextArea.append("" + date + "\n"); outputTextArea.scrollRectToVisible(new Rectangle(0, outputTextArea.getHeight() - 2, 1, 1));
renren.getFarmURLs(); renren.showStatus0(); renren.processFarm();
// loss money //List<String> friends = renren.getFriendsURL(); //for (int index = 0; index < friends.size(); index++) { // renren.processFriend(friends.get(index)); //} renren.showStatus1();
outputTextArea.append("\n"); outputTextArea.append("Wait for 5 minutes...\n"); outputTextArea.append("\n"); outputTextArea.scrollRectToVisible(new Rectangle(0, outputTextArea.getHeight() + 80, 1, 1));
actionCounter++; counterField.setText("" + actionCounter); }
try { Thread.sleep(5 * 60 * 1000); // wait 5 minutes } catch (InterruptedException ex) { Logger.getLogger(Renren3G_Farm.class.getName()).log(Level.SEVERE, null, ex); } } }
private void setThread(Thread thread) { this.thread = thread; }}
人人农场 renren 外挂 Java 实现相关推荐
- 改进我的人人农场收菜外挂
之前在论坛里发了我的收菜外挂代码(详见文章<被偷无奈写个收菜外挂>),嘿嘿,关注的人还真多,还上了首页! 这两天把代码改进了一下,调整了一下结构,设计得更OO了.另外主要的变化是增加了自动 ...
- 人人农场机器人v3.0测试版 正式发布
爱农场爱劳动..经过五一假期的一番努力..人人农场机器人的第一个公开测试版终于完工了~ 本软件的主要目的是要帮助人减轻在农场收获与播种的反复劳动..主要实现的功能如下: 1.按作物的成熟时间定时收取. ...
- qq农场js外挂详细制作(转帖)
qq农场js外挂详细制作(提供源码.有注释.有抓包数据分析.不再更新 http://blog.csdn.net/lin379184514/archive/2009/12/10/4979622.aspx ...
- qq农场js外挂详细制作(提供源码、有注释、有抓包数据分析、不再更新、不回答提问)
(图片不能用另存为下载,用属性查看链接,然后下载) 源代码下载:http://download.csdn.net/source/1889334 以下为html文件代码,即外挂主程序. <scri ...
- 和Sun一起开源(武林外传游戏外挂Java源代码) - 论坛版
以下是我在大三时,武林外传游戏还在公测时写的一个外挂,辅助玩游戏.以前在大学时用着很好用,和大家共享出来.希望有朋友能够进行重构,发布一些更好用的JAVA实现的外挂程序. 由于这是本人的处女做,所以代 ...
- 和Sun一起开源(武林外传游戏外挂Java源代码) - 博客版
以下是我在大三时,武林外传游戏还在公测时写的一个外挂,辅助玩游戏.以前在大学时用着很好用,和大家共享出来.希望有朋友能够进行重构,发布一些更好用的JAVA实现的外挂程序. 由于这是本人的处女做,所以代 ...
- 和Sun一起开源(武林外传游戏外挂Java源代码)
package game; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.e ...
- 微信小游戏「跳一跳」外挂(java版)
image 其实也不能说算是外挂吧,算是个游戏小助手吧,毕竟不能抓包,也不能直接修改分数(据说之前可以直接抓包修改分数,不过这漏洞已经被微信官方修复),今天这个是 Android 同学可以非常容易看懂 ...
- Docker部署renren-fast人人开源后台项目
引言:renren-fast是一个轻量级的,前后端分离的Java快速开发平台,能快速开发项目并交付.由于开源脚手架部署方式各不相同,本文仅仅针对renren-fast开源框架的docker部署. do ...
最新文章
- 【数据结构】链表中的 指针,地址
- 函数 php_PHP函数缺陷详解
- python培训Day1 随笔
- Python基础教程(三):运算符、条件语句
- 怎么看python环境变量配置是否好了验证图片_简述验证Anaconda是否安装成功的两种方式和Anaconda环境变量配置过程...
- webRTC+coturn穿透服务器的安装与搭建
- Javascript——DOM编程
- pytorch ner
- Xen虚拟化平台安装及实时迁移
- Android JSON: JSONArray cannot be converted to JSONObject
- accept 返回0_Netty深入浅出系列:Netty源码分析之accept过程
- Google Guava学习(10)-Guava字符串工具CharMatcher
- 【iOS】通过URL Scheme启动app(收集了常用的app的URL Scheme)
- Java实现 LeetCode 808 分汤 (暴力模拟)
- 第一篇 香橙派刷机和开发环境准备(Armbian版)
- 还在用excel做可视化图表?这款数据可视化软件让你事半功倍
- Web Components入门实例教程
- Kafka 入门 (一)
- 类别,非正式协议,正式协议
- 前端代码拆分的意义,以及如何拆分代码,文件拆分--前端教学文-f