Aaron😄ཽ

Aaron😄ཽ 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

Aaron😄ཽ 发布了文章 · 9月19日

autoxjs入门-高级开发环境搭建

概述

autoxjs 是继续维护升级的Auto.js 项目,在原来项目的基础上,实现了如下功能:

  • [x] autoxjs 项目工程化:结合webpack vscode插件,开发、编译、打包、部署、混淆、加密一体化 文档资料
  • [x] vscode 插件右键,自动提示操作等下载地址
  • [x] vscode 自动补全、方法注释等, 文档资料
  • [x] 发布新版autoxjs 4.2.1 : 打包插件,运行apk、autox.js下载地址
  • [x] 建设论坛、提供交流社区,交流社区
  • [ ] 建设应用商店
  • [ ] 提供更好的sdk 封装

下面我主要对工程化、规划范化这块的环境搭建进行讲解:

优酷视频讲解

环境搭建

  1. 你需要安装 nodejs ,安装过程中请注意要 [ 将node添加PATH中 ] 和 安装 npm 这两个选项都要勾选上。(一般的前端工程师都有这个环节)
  2. 安装vscode 并安装 autoxjs开发插件即:Auto.js-VSCodeExt-Fixed 注意是0.3.11 或以上版本。 (ctr+ shift+p 选择autojs 启动服务)
  3. 安装全局安装 webpack: npm i -g webpack webpack-cli --registry=https://registry.npm.taobao.org
  4. 下载本项目 或git clone 项目 git clone https://github.com/kkevsekk1/webpack-autojs.git
  5. cmd 到项目 , 运行命令,安装依赖
    npm install --registry=https://registry.npm.taobao.org
  6. 到这来基本上可以说 开发环境 就完成了,(你还要一部手安装 autoxjs),下面说 这项目的配置文件和开发的形式。

项目开发、编译、打包、部署介绍

  1. work 目录: 这就是我们项目的总目录,即这里面每一个文件夹是一个autoxjs 项目。比如我们 demo,demo1,dy 即为3个项目。
  2. scriptConfig.js 文件: 我们要如何编译项目即在这个文件中配置,打开文件,有注释的可以按照注释改。
  3. header.txt 无关紧要的文件,里面的内容会原封不动的添加到 编译后的js代码头部
  4. 调整好上面 3处内容 就可用编译了我们的项目了
  5. package.json 这个文件规定 看 第6-9行,有两个命令 start 和 build 分别对应开发环境和生成环境的编译,无需修改。只要知道他们 分别对应 npm run start 和 npm run build 。
  6. 运行 npm run start 即开发环境,没每次修改代码,代码会自动编译,并且 scriptConfig.js 中的wath配置为'rerun'或'deploy' 那么代码将自动在手机中运行 或自动将重新编译的项目保存到手机中。
  7. dist目录: 运行上面编译命令( start或build),就有编译的结果,编译的结果就 dist目录中,这目录下每一个目录代表的就是一个编译后的autoxjs项目.编译后的目录的名称 可以配置一个前缀,以便和编译前的项目区分(当他们都以项目形式保存手中的时候就很有必要)。

8. npm run start 这个

编译 dex

  1. 使用工具 的来源。我用这个工具来打包,不打算重复造轮子了
  2. 安装jre
  3. 安装 auto-cli npm i "@auto.pro/cli" -g
  4. 运行编译命令 auto-cli dex ./dist/demo/main.js
  5. 如果由于愿意写个 webpapck 插件 ,来执行这里几个命令,实现自动化愿意 pull 代码,我没打算对我的代码 编译为dex 再加固,所以没有动力实现这个插件!
查看原文

赞 2 收藏 2 评论 0

Aaron😄ཽ 发布了文章 · 8月16日

c++和Java用Base64编码中文通信分析

背景

在某宝上看到一个药品管理系统,他有一个云药品库。用扫码枪一扫,就可用获取到药品的详细信息。可以在添加药品基础资料的时候,免去输入文字的麻烦,而我在上家公司的时候,也是做药品ERP的,客户拿着我们的ERP添加药品等基础资料的时候很麻烦,我就提倡做这样一个东西在erp中,由于种种原因未能普及。其中重要原因就是用户想用,但是资料太少,于是我抓包这个软件,看看能否获取到他的资料库,有机会可以爬下来,用在类似系统中。这个过程中遇到了一些问题,我记录了下来。

第一抓包

找到软件入口,输入条码,搜索看看网卡中的包信息,使用wireshark
抓包http

很明显http协议的,通过调节可以抓取到信息的,但是返回值 应该是“加密”的,为啥加密呢?是防止别人抓取?我一开始认为是,看这样子是用的base64加密的。我先在网址上找了一个在线解密base64的,果然可以解密。但是中文有乱码,看乱码的样子应该是字符编码的问题。
解密

要想看到具体的中文内容,只能用java 来写一个抓取数据和解码Base64 还要转字符编码的事情了。

第二java爬取数据,解码Base64

java解码c++ , base64编码的数据,
从base64解码到数据本来的样子,这个过程中遇到了一点小麻烦,就是jdk1.8 里面base64编码解码器,都是不带 换行符合的,而这个爬取下来的数据都是有换行符号的。通过查找资料得知下面的不可用,

 java.util.Base64.getDecoder();
 

得用jdk1.7或 第三方 commons-codec

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.14</version>
        </dependency>
org.apache.commons.codec.binary.Base64

用这个是可以解码Base64

    String url="http://116.255.186.7:9000";
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put( "Content-Type", "application/x-www-form-urlencoded");
        hashMap.put("Accept", "text/html, */*");
        hashMap.put("User-Agent", "Mozilla/3.0 (compatible; Indy Library)");
        Map map =new HashMap();
        map.put("YPACT", "YPGET");
        map.put("barcode", "12343");
        try {
           byte rs[]= OkHttpUtil.postb(url, map,hashMap);
             JSONObject jsonObject =JSON.parseObject(new String(rs));
             String encode = jsonObject.getString("rmtdset");   
             System.out.println(encode);
             byte []xm =encode.getBytes();
             byte[] dbm= Base64.decodeBase64(xm); 
             String dcodeg=new String(dbm);
             System.out.println(dcodeg);
          
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

但是中文乱码
乱码

第三 分析为什么中文乱码

为什么从Base64解码,java打印出来是乱码呢?
由于c++ 、c# 或者更准确的说,win 系统里出来的东西,默认是GBK ,java 这边默认是UTF-8
。也就是说 在win系统中base64编码的时候,是将GBK编码的字符串,变成 byte数组,再变成base64字符串 'base64String' 在网络中传送的是 'base64String',java这边收到后,用Base64解码base64String,解码成byte 数组,那这数组,对应的编码就是GBK。所以解码出来的要用GBK的方式来构建字符串,
gbk编码
就是这样的代码。

分析到这就明白了,为啥他这个系统中不直接用字符串传送,而是要base64加密后的字符串传送,就是因为Base64加密后的全是ASC码串,不会出现编码错误。而解码,只需将返回的byte 数组解析为GBK的字符串,就可用正确使用。所以可用得出结论,上的base64加密,并非真正的加密,只是为了传递数据的方便。

最后看一下正确的数据的样子

[{
    "id": "248727",
    "c1_id": "0",
    "c2_id": "",
    "c1": "糖果系列",
    "c2": "",
    "name": "长干棒棒糖",
    "pinyin": "ZGBBT",
    "spec": "",
    "unit": "支",
    "approval_number": "",
    "location": "晨光文具专营店",
    "barcode": "091361712343",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "维康堂大药房",
    "oper": "超级用户",
    "uploadipaddr": "116.255.186.7",
    "inserttime": "2019-08-30 0:30:01",
    "rows": "1"
}, {
    "id": "280240",
    "c1_id": "0",
    "c2_id": "",
    "c1": "",
    "c2": "",
    "name": "2000",
    "pinyin": "2000",
    "spec": "",
    "unit": "",
    "approval_number": "",
    "location": "无",
    "barcode": "12343",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "滦南县坨里镇康诚大药房",
    "oper": "超级用户",
    "uploadipaddr": "116.255.186.7",
    "inserttime": "2020-02-03 2:03:45",
    "rows": "2"
}, {
    "id": "222533",
    "c1_id": "0",
    "c2_id": "",
    "c1": "电器",
    "c2": "",
    "name": "电脑电源线 5m  250v",
    "pinyin": "DNDYX 5M  250V",
    "spec": "5m",
    "unit": "根",
    "approval_number": "",
    "location": "超五类",
    "barcode": "1234356574543",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "冠县回春堂大药店二分店",
    "oper": "超级用户",
    "uploadipaddr": "116.255.186.7",
    "inserttime": "2019-06-11 4:58:50",
    "rows": "3"
}, {
    "id": "78460",
    "c1_id": "0",
    "c2_id": "",
    "c1": "",
    "c2": "",
    "name": "卫康2000(125)",
    "pinyin": "WK2000(125)",
    "spec": "125ml",
    "unit": "盒",
    "approval_number": "",
    "location": "卫康",
    "barcode": "6919021123435",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "东盛大药房",
    "oper": "超级用户",
    "uploadipaddr": "61.237.136.125",
    "inserttime": "2018-11-01 17:21:48",
    "rows": "4"
}, {
    "id": "322118",
    "c1_id": "0",
    "c2_id": "",
    "c1": "7001",
    "c2": "",
    "name": "淘乡甜(熟)咸鸭蛋",
    "pinyin": "TXT(S)XYD",
    "spec": "65g",
    "unit": "包",
    "approval_number": "",
    "location": "",
    "barcode": "6921234300855",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "串业药店",
    "oper": "超级用户",
    "uploadipaddr": "116.255.186.7",
    "inserttime": "2020-06-06 14:01:48",
    "rows": "5"
}, {
    "id": "343515",
    "c1_id": "0",
    "c2_id": "",
    "c1": "",
    "c2": "",
    "name": "酒精",
    "pinyin": "JJ",
    "spec": "",
    "unit": "",
    "approval_number": "",
    "location": "",
    "barcode": "6921723712343",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "梧州长洲福膳诊所",
    "oper": "超级用户",
    "uploadipaddr": "116.255.186.7",
    "inserttime": "2020-07-07 1:50:34",
    "rows": "6"
}, {
    "id": "54075",
    "c1_id": "0",
    "c2_id": "",
    "c1": "0203保健",
    "c2": "",
    "name": "专利品决明子茶",
    "pinyin": "ZLPJMZC",
    "spec": "240g",
    "unit": "盒",
    "approval_number": "",
    "location": "宁夏",
    "barcode": "6924564712343",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "XXXXX大药房",
    "oper": "超级用户",
    "uploadipaddr": "61.237.136.147",
    "inserttime": "2018-10-12 1:49:14",
    "rows": "7"
}, {
    "id": "189861",
    "c1_id": "3",
    "c2_id": "",
    "c1": "中药饮片",
    "c2": "",
    "name": "黑枸杞(药知源)",
    "pinyin": "HGQ(YZY)",
    "spec": "80g",
    "unit": "桶",
    "approval_number": "",
    "location": "安徽药知源",
    "barcode": "6926919123439",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "长坂坡大药房干溪店",
    "oper": "超级用户",
    "uploadipaddr": "116.255.186.7",
    "inserttime": "2019-02-28 2:11:23",
    "rows": "8"
}, {
    "id": "155311",
    "c1_id": "0",
    "c2_id": "",
    "c1": "新药",
    "c2": "",
    "name": "番泻叶",
    "pinyin": "FXY",
    "spec": "40克",
    "unit": "",
    "approval_number": "",
    "location": "安徽",
    "barcode": "6933371234375",
    "zhuzhi": "",
    "explain_book": "(Memo)",
    "replenish": "",
    "logo": "",
    "is_otc": "",
    "is_del": "",
    "c_time": "",
    "datasource": "外部",
    "storename": "开元大药房",
    "oper": "超级用户",
    "uploadipaddr": "61.237.136.98",
    "inserttime": "2018-12-13 13:24:16",
    "rows": "9"
}]

我就是我,一名技术爱好者!

查看原文

赞 0 收藏 0 评论 0

Aaron😄ཽ 发布了文章 · 8月15日

智能家居解决方案

背景
---
因为我也算一名极客爱好者了,很久以前我家就搞了各种智能控制,以前的控制模块没有那么强大,我还结合诺基亚6120c用c++ 开发过控模块,不过现在我家在淘宝上买了一堆控制模块,结合小度在家,使用整体还说和可以哟!今天一朋友装新房,问我智能家居怎么搞,他不懂!于是就有了下面这几点的建议了!

总体方案
----
`wifi控制一切!不能直接控制就间接控制`

智能家居总体来说就是用来控制家里的各种电器,开关、调节。方式就有很多种,不过一套解决方案下来基本上就现在的一种:一个总控(智能音箱、或智能网关)通过wifi 控制设备,但是很多设备,比如电视: 则需要wifi控制一个红外线发射器,在通过红外遥控方式控制电视。或者wifi控制者蓝牙、zigbee发射器再控制对于设备。
![](https://csl01.oss-cn-shenzhen.aliyuncs.com/blog/9079339.png)

简单便宜版智能家居实现方式、方案13条建议。
-----
1. 总控屏 : 小度智能屏、天猫智能屏(用这控制家里大部分设备,一般都需要支持 wifi的)
2. 要一个wifi 路由器,网关! 
3. 进门锁:智能锁-支持wifi远程控制的(如果要带摄像头监控门外,可能需要充电,需预留埋插座在门后适当位置,有的不需要留充电)
4. 4.智能窗帘: 用支持wifi的,需要预留插座 给其供电
5. 智能开关:用于控制各种灯,要支持wifi的, 有很多不同类型的接线方式线了解,先买回来。 卧室、客厅的双控 开关,不需要布双控线,因为有一个开关属于贴在墙上的遥控器。
6. 扫地机器人要充电,预留插座充电位置,买的时候要注意看是否支持wifi 和总控,有些不支持总控,有些不支持wifi。
 
7. 控制普通电视机,一般只能开关机,需要给总控接一个红外发射器,总控通过wifi控制红外发射器,发射关机遥控信号,控制电视开关
8. 有智能机顶盒,通过语音可用控制机顶盒换台.
9. 空调和控制电视一样,用同一个红外发射器。现在也有可以通过wifi直接控制空调的,
10. 净化器,加湿器,可以插在智能座上,总控通过wifi 控制智能插座通电,断电,控制他们。也有智能版本的总控直接通过wifi控制他们。
11. 进屋开灯,总控里设置即可。
12. 厕所有用浴霸的话,在开关选wifi 可以控制开关的即可,
13. 活人探测、智能摄像头一般也是按照在进门上监控小偷,用那种带摄像头的智能锁就可以
14. 活人探测 安装屋内一般是放老人摔倒之类的没有必要
查看原文

赞 0 收藏 0 评论 0

Aaron😄ཽ 发布了文章 · 8月10日

逆向分析autojs基础上的“抖动”app

背景介绍

最近接到一个关于群控的项目,故四处寻找控制苹果和android 手机,实现自动化的解决方案。类似于安卓,苹果自动化测试,自动化运维。偶然了机会了解的‘抖动’这个app,于是跟作者联系,加了微信,希望跟他合作,聊一聊项目的可行性。发了微信消息没有回,于是我打算研究一下他这个app 到底用了什么技术,就有了下面的破解过程。
声明一下这其实 是一个开源项目,并不真正的破解。一位不良开发者在开源项目基础上,做了二开,并且用于商业公开出售,有违开源的初衷
开源项目地址: https://github.com/hyb1996/Au...

开源项目声明

分析抖动,dou+源码

拿到抖动apk首先用jadx 来看看,apk是否加固,加密,扰乱,这个apk只做了扰乱
jadx截图

通过这个apk的分析 我找到autojs开源项目,后面的逆向分析过程就是 分析 autojs的整体架构,和软件设计思想的过程。因为开源项目只有关于如何做脚本开发、使用的说明,并没有对整个架构介绍的问题,后面我会对整个架构,运行原来做一个系统的分析,留在后面文章介绍。
简单的说来autojs原理,就是用js写脚本,打包的‘inrt’apk中运行,抖动千万个就是inrt中的一个,打包的过程是用apkbuild的 往inrt母本中加入js,形成新的apk。理论上找到js 就可用了。我找到了js

js

和 inrt 不一样,对js加密了

多了dex这个,用jadx反编译dex得到了这样的信息

如何加密的呢? 用原来的js先加密(加密算法很简单),再生成字节码的dex,加密复杂了生成dex会有问题。
找到 ‘庖丁’就可以了!
我们没有那么做,我抓了包,分析出了一个下载 dex的网址。和一个注册码验证接口。

view-source:http://192.144.129.119:8090/code/
这个很关键。

http://192.144.129.119:8090/code/xBox/help.php
http://192.144.129.119:8090/soft/yh.js
http://192.144.129.119:8090/soft/yh.dex
http://192.144.129.119:8090/soft/tc.js
http://192.144.129.119:8090/soft/tc.dex
还有一些有内容适宜公布。
我们只需要 将yh.js 和yh.dex 放入inrt中并新的apk,就可用运行了,当然yh.dex中的 在smali语言下删除
注册的代码,或者无论网络请求什么样,都绕过就可以了
我跟‘抖动’作者无冤无仇,就不公布更多具体细节了。

我就是我,一名技术爱好者!

查看原文

赞 0 收藏 0 评论 0

Aaron😄ཽ 关注了用户 · 8月4日

我的名字豌豆 @liu_namepea

一名热爱编程的在校大学生,一起共同进步吧!

关注 160

Aaron😄ཽ 关注了专栏 · 8月4日

AWS_AI开发社区

AWS_AI 开发者社区是专注于人工智能领域 IT 人士交流与互动的平台。在这里,你可以分享和获取一切有关人工智能的相关技术和前沿知识,也可以与同行或爱好者们交流探讨,共同成长。

关注 630

Aaron😄ཽ 关注了用户 · 8月4日

西敏寺钟声 @zaigugeshangbaidu

QQ交流群:4060038
公众号:西敏寺钟声
个人主页:https://www.zhangjianbing.com
我的简书:https://www.jianshu.com/u/951...

关注 178

Aaron😄ཽ 关注了专栏 · 8月4日

前端食堂

个人公众号:前端食堂 你的前端食堂,记得按时吃饭~

关注 2284

Aaron😄ཽ 关注了用户 · 8月4日

今日长剑在握 @sfhfpc

《Python3 反爬虫原理与绕过实战》作者

关注 859

Aaron😄ཽ 关注了专栏 · 8月4日

Leo的测试之路_Fighting

转行测试,为自己拼搏一次

关注 396

认证与成就

  • 获得 2 次点赞
  • 获得 0 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 0 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 8月4日
个人主页被 109 人浏览