宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 3360|回复: 1

[页游辅助图文教程] QQ农场辅助开发实践

  [复制链接]
  • TA的每日心情
    开心
    2024-12-9 18:45
  • 签到天数: 124 天

    [LV.7]常住居民III

    admin 发表于 2010-5-2 22:30:56 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x
    闲来无聊,国庆期间看别人在玩农场,我也开通了一下,发现钱不够,偷起来很麻烦,所以想写一个自动偷菜的程序,因此有了这篇文章:
    QQ农场是基于http协议的,因此只要通过工具软件截取http数据包,从而进一步进行分析提交和接收到的数据含义,然后再模拟一个flash client和服务器打交道即可。
    为了实现以上目标,下载安装截获tcp/ip数据包的工具软件ethereal,安装好以后,登陆QQ进入农场,然后开启ethereal软件开始截获数据包,然后在农场里点刷新好友列表按钮,然后去ethereal里看看截获到的数据包,发现读取好友列表的url地址是:
    http://happyfarm.qzone.qq.com/api.php?mod=friend
    需要的参数有:login_time 、skey、uin 三个
    知道这个地址以后,可以用apache httpclient模拟一个flash client,具体代码如下:

    1.    String login_time = ConfigProperties.getProperty("login_time");
    2.    String skey = ConfigProperties.getProperty("skey");
    3.    String _s_ = ConfigProperties.getProperty("_s_");
    4.    String uin = ConfigProperties.getProperty("uin");
    5.    HttpClient hc = new HttpClient();
    6.    // 创建GET方法的实例
    7.    GetMethod getMethod = new GetMethod(url);
    8.    //
    9.    getMethod.addRequestHeader("Accept", "*/*");
    10.    getMethod
    11.      .addRequestHeader(
    12.        "User-Agent",
    13.        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; 360SE)");
    14.    getMethod.addRequestHeader("Accept-Encoding", "gzip, deflate");
    15.    getMethod.addRequestHeader("Accept-Language", "zh-CN");
    16.    getMethod.addRequestHeader("Connection", "Keep-Alive");
    17.    getMethod.addRequestHeader("Pragma", "no-cache");
    18.    hc.getState().clearCookies();
    19.    //
    20.    String cookies = "1" + "; _s_=" + _s_ + "; uin=" + uin + "; skey="
    21.      + skey + "; login_time=" + login_time;
    22.    hc.getState().addCookie(
    23.      new Cookie("happyfarm.qzone.qq.com", "jump", cookies, "/",
    24.        new Date(2011, 12, 8), false));
    25.    // 执行getMethod
    26.    int statusCode = hc.executeMethod(getMethod);
    27.    //
    28.    String result = getMethod.getResponseBodyAsString();
    复制代码
    按照这种方法,可以找到获取某个好友农场信息的url地址是:
    http://nc.qzone.qq.com/cgi-bin/cgi_farm_index?mod=user&act=run&ownerId=
    偷某个好友某块或多块地的url地址是:
    http://nc.qzone.qq.com/cgi-bin/cgi_farm_steal?mod=farmlandstatus&act=scrounge
    ok,这些都搞定了,另外偷菜的 url地址需要提交一个参数farmKey,这个生成方法有点难度,具体方法为:

    1. int curTime = (int) (System.currentTimeMillis() / 1000L);
    2. String s = "sdoit78sdopig7w34057";
    3. int yushu = curTime % 10;
    4. s = s.substring(yushu, 20);
    5. String farmKey = com.sourceware.util.StringUtil
    6.        .getMD5(curTime + s);
    复制代码
    另外需要分析一下服务器返回的数据包格式,目前看到的都是 json格式,
    比如得到好友列表的数据为:
    [{"userId":1905432,"userName":"\u6c38\u8fdc\u7684\u9ed1","headPic":"http:\/\/qlogo2.store.qq.com\/qzonelogo\/1265877\/1\/1242884728","yellowlevel":0,"yellowstatus":0,"exp":7776,"money":38961,"pf":0},{"userId":159805,"userName":"\u8f7b\u63cf\u6de1\u5199","headPic":"http:\/\/imgcache.qq.com\/qzone_v4\/client\/userinfo_icon\/5001.gif","yellowlevel":0,"yellowstatus":0,"exp":20332,"money":22665,"pf":0},{"userId":65178,"userName":"Air-F","headPic 后面省略...
    如果是用java开发的话可以用json-lib包来解析。
    另外根据返回的错误提示语整理如下:
    如果返回{"code":0,"direction":"这块地没东西可摘的!","farmlandIndex":2,"fkey":"8297832f9f305bd1ad2d083c35148d815069b5c61da3382c0119b74f65b8e42e6d597313b9101acb","poptype":1}
    应该是这块地已经成熟,且被人摘光了(成熟的地都有一个产量,剩余数,最小的剩余数《通过这个可以得到最多可以被偷几个》)。
    如果返回的是{"code":0,"direction":"获取农田信息失败","fkey":"e3c2806e13df1092281157971b0f9466dcfbe7433a368f4d2398b0721398add7afc8c76f889555d5","poptype":0}
    那么应该是这块地还没成熟就去偷了;或者已经被主人收割了;或者这块地什么都没种;
    如果返回的是:{"code":0,"direction":"做人不能贪得无厌!","farmlandIndex":1,"fkey":"2848bb16cb28e1929822cb716b0e87292864ea9068ebe95b5d6d51580fb4b13718e3c2787af58294","poptype":1},{"code":0,"direction":"做人不能贪得无厌!","farmlandIndex":2,"poptype":1}
    那说明你已经偷过了还要去偷;

    该用户从未签到

    jianxirn1988 发表于 2011-12-22 22:39:34 | 显示全部楼层
    看着很晕呀哥哥
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2025-5-8 13:43 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表