大麦网抢票工具系列(一)

前言

《大麦网》都知道吧,就是那个被网友声称“大麦网你卖啥了?”票务平台。近期有听到朋友说《大麦网》的票很难抢,基本上都是说:“哎哟喂,被挤爆啦,请稍后重试!”,也不知道《大麦网》到底有没有票!!!

言归正传,准备做个《大麦网》抢票的软件,就是想证明下《大麦网》到底有没有票(推广公众号)!!,做之前也从百度、Github里面搜索过, Github里面有几个好用的Python抢票脚本,有兴趣的可以去里面搜索。此次做的抢票小工具是基于《大麦网》移动端接口的,直达《大麦网》服务器,没有网页元素,速度肯定棒。

这个系列的文章主要是偏教程方面,学习一些Hook、抓包、反编译的知识。再者《大麦网》已经被阿里给收了,所以这是个阿里系的App,看完这个系统的文章对某宝、某猪、某猫App的逆向很有帮助。说了这么多,先列出逆向时用到的工具软件,以及主要用途:

  • Frida
  • Xposed
  • Apktool
  • Selenium
  • Root后的手机一台

还有一些逆向过程中的难点:

  • Charles抓包
  • 生成Api签名
  • 自动过人机校验

大纲

为了思路更加清晰,为大家列出这个系列后面的一些文章相关内容:

  1. 基本工具使用、介绍
  2. 阿里网络库逆向分析、Charles抓包
  3. MTOP签名参数分析、绕路
  4. 人机检验分析、绕路

Frida基本使用

使用Frida的目地是为了hook应用关键方法,找到App的突破口如:日志开关、ssl开关等关键方法或变量。Frida的安装方式也非常简单,只需要将frida-server上传到手机里面使用shell运行起来,然后就可以执行一些hook操作,篇幅有限就不一一讲解了,只简单介绍一下本系列文章中使用的一些命令,有兴趣到查看具体使用文档。

frida-server上传到手机目录:

$ adb root # might be required
$ adb push frida-server /data/local/tmp/
$ adb shell "chmod 755 /data/local/tmp/frida-server"
$ adb shell "/data/local/tmp/frida-server &"

查看系统运行进程:

$ frida-ps -U

打开需要hook的程序,并传入hook脚本:

$ frida -U  -l src/index.js  -f cn.damai

这几条命令下来,差不多就够了,hook相关的点都在src/index.js里面,后面再来讲解需要hook的关键点。

Xposed基本使用

使用Xposed的目的是为是数据签名的,接过阿里系Api的都知道会有签名这个步骤的。签名算法就不去倒腾了,技术有限..., 但是可以绕过的麻,退而求其次。Xposed只需要会创建Module了了解几个核心Api就可以啦。

引入Xposed依赖:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
  provided 'de.robv.android.xposed:api:82'
  provided 'de.robv.android.xposed:api:82:sources'
}

声明你的模块信息:

    <meta-data
        android:name="xposedmodule"
        android:value="true" />
    <meta-data
        android:name="xposeddescription"
        android:value="大麦网签名" />
    <meta-data
        android:name="xposedminversion"
        android:value="53" />
        

实现模块入口:

package com.xposed;

import de.robv.android.xposed.*;
import de.robv.android.xposed.callbacks.*;

public class HookToast implements IXposedHookLoadPackage
{
   @Override
   public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
   {
      ....
   }
}

Selenium基本使用

使用Selenium主要是过人机校验,Api调太多后端程序会检测出是机器在访问Api,所以为了限制保护系统《大麦网》会弹出一个带滑块的网页来辨别用户身份,如果不处理就会限制访问Api基本调用不了Api除非限制时间过了,才能正常访问,引入Selenium就是模拟人为行为滑动完成人机校验,告诉后端不是机器人在抢票。

添加Selenium依赖:

 <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
  </dependency>

设置WebDriver:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("excludeSwitches", Arrays.asList("enable-automation"));
chromeOptions.addArguments("--user-agent=" + String.format("Mozilla/5.0 App"));
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--lang=zh-CN");

//            chromeOptions.setHeadless(true);
webDriver = new ChromeDriver(chromeOptions)  ;//new ChromeDriver(chromeOptions);

打开滑动网页:


webDriver.get(httpUrl.toString());
new WebDriverWait(webDriver, 2).until(ExpectedConditions.textToBe(
        By.className("nc-lang-cnt"),
        "请按住滑块,拖动到最右边"
));

解锁地址是动态的,后续再来说明地址的使用和操作。

总结

基本上使用Frida、Selenium、Xposed就能解决抓包、人机校验、生成签名这几个关键问题了,后续再来讲解具体的操作流程,以及逆向分析关键代码。

最后欢迎大家关注我的公众号,获取最新《大麦网抢票工具》抢票工具的进展。

免责声明:
本文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请读者自负

原文地址:https://www.cnblogs.com/xwgblog/p/11619219.html

时间: 2024-08-30 00:39:38

大麦网抢票工具系列(一)的相关文章

自制 12306 抢票工具 5秒内完成订票

五一假期到了,身边朋友订票又难订了,抽空做了个订票的小工具,试试了一下,几秒内就可以完成订票过程,效果还不错:(订的快慢取决于验证码的输入速度) 目前验证码自动识别功能还没有加,如果有哪位朋友对验证码识别这块有比较好的建议的,可以告诉我qq:909 888 791,先谢了! 自制 12306 抢票工具 5秒内完成订票,码迷,mamicode.com

12306抢票工具的使用

注意:本篇博客用IE浏览器或者edage浏览器打开 1,安装.netframework4.5 点我 2, 安装工具箱(IE浏览器) 点我 3,打开工具箱搜索 4,安装和使用 1,登录 2,设置 原文地址:https://www.cnblogs.com/damsoft/p/9090068.html

12306改版之后简单抢票软件的实现(转载)

又到一年抢票时,各种抢票软件的肆虐让12306不堪重负,最近这几天12306频繁的更换手段来阻止抢票软件. 先来吐槽一下红红的验证码,过年的时候都喜欢用红色来喜庆一下,12306也深刻的表达了他的喜悦之情,又红又大的验证码啊,不过到底跨越了几个维度呢?看起来晕晕的,感觉像在时空里穿梭. 科学告诉我们,牛是色盲,分不出来颜色,但是伟大的黄牛们不是,不知道黄牛们看到鲜红的验证码之后会不会疯了一样的撞向显示器?那场面一定非常壮观 很快红色的验证码消失了,但是,在抢票的每一步都加了一个验证,过滤掉抢票软

12306改版之后简单抢票软件的实现

本文作者 russellwang,转载请标明出处 又到一年抢票时,各种抢票软件的肆虐让12306不堪重负,最近这几天12306频繁的更换手段来阻止抢票软件. 先来吐槽一下红红的验证码,过年的时候都喜欢用红色来喜庆一下,12306也深刻的表达了他的喜悦之情,又红又大的验证码啊,不过到底跨越了几个维度呢?看起来晕晕的,感觉像在时空里穿梭. 科学告诉我们,牛是色盲,分不出来颜色,但是伟大的黄牛们不是,不知道黄牛们看到鲜红的验证码之后会不会疯了一样的撞向显示器?那场面一定非常壮观 很快红色的验证码消失了

归心似箭,IT达人分享抢票攻略

[51CTO专稿]随着春节一天天临近,“购票难”的问题也愈发凸显,猎豹.火狐.360等“春运抢票神器”占领了各大网站的重要版面,“技术抢票”成为炙手可热的话题,看看身为程序员的邓以克是如何抢到回家的票. 邓以克(@一路向西-phinecos)是一位进入IT行业3年的Java程序员:业务时间,比较喜欢研究技术,也写一些技术方面的文章. 其实去年12306推出以后,就有相应的刷票工具出来,邓以克谈到,自己也是从那个时候开始使用刷票工具,给 自己和身边的同事.朋友们顺利地买到回家的卧铺票的.今年,由于

2019抢票攻略

抢票是每年都绕不开的话题,即使我们的基础交通.高铁技术发展迅速,也难以满足现实“迁徙”的需求,这根本的原因是人口众多.东西贫富差距.虽然我们不能从根本问题去解决,但可以为家人.朋友争取到一张更合适的车票. 一.抢票要点 1.总体原则 ,选择的顺序是动车(G.D开头)二等.一等,快车(Z.T)硬卧.硬座,普通车(K)硬卧.硬座:不要选慢车(部分K).临时车(L):当然也不排除有的临时车也很快. 2.无论你的目的地是大站还小站.尽量选择最近的大站购买,大站放票.购票.退票多,机率更大. 3.不要长距

不是所有的大作业都叫微信抢票大作业

为时四周的微信抢票大作业终于接近尾声,回首这段时间,真是感慨万千.不是所有的大作业都是微信抢票大作业,能够让人同时体验产品经理.开发工程师.测试工程师.运维工程师四个角色.经过了微信抢票大作业的洗礼,才知道之前对老师上课讲的内容只是一知半解,只有实践才能出真知. 一.搞开发 讲道理,这次大作业的开发工作其实不是很多.因为框架设计的很好,接口也介绍的很详细,只需要按部就班填坑就可以达到基本要求了. 但是既然助教上课都提到了几个优化方案,比如内存型数据库,异步队列等,好奇如我怎能不试呢.于是就开始给

通达OA 几次通过OA进行的足球抢票活动确实对OA系统提出了很大挑战

今年集团赞助了中超的足球比赛,有比赛的时候会提前发一些球票,怎么发.发给谁这就是一个问题,后来确定通过OA来抢票.通过在OA上发表帖子,通过信息提醒,大家看到信息提示后在帖子后面回复,根据回复先后确定.这样的模式应用了两次后,有人反映有的提示早,有的提示晚,提示晚的看到提示再回复已经是个把小时之后了,抢票也就根本没有什么机会. 通过OA回复抢票的优势就是结果比较直接,大家回复之后就能看到自己排到多少,对抢票结果大概知道个什么情况. 后来用了一次微信答题的方式,提前先确定开始时间,到时间后大家可以

使用Python和Splinter实现12306火车票查询与抢票

有一段时间没有使用Python了,前几天经朋友提起一篇关于用Python实现抢火车票的文章,百度了实现抢火车票的技术细节,网上却有不少资料,也不是新鲜的东西.在了解了一些技术手段,阅读了一些大神的博文后,也尝试实现了一下,代码写得粗糙,纯当娱乐,本文在Windows系统下完成.需要提到的是,抢票过程中的验证码部分只能手动完成. 首先,我需要的工具和组件有: Chrome浏览器 浏览器驱动ChromeDriver Python 3.5 Web应用测试工具Splinter Chrome浏览器可自行下