开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 39304|回复: 8
收起左侧

[交流] 某巴克咖啡APPzc分析成果,主要是设备指纹算法的分析

[复制链接]
发表于 2019-7-26 23:45:49 | 显示全部楼层 |阅读模式   安徽省合肥市
本帖最后由 yshell 于 2019-7-26 23:55 编辑

最近定制区很火的某巴克注册分析
首先看下注册包
  1. {"birthday":"01/05/1985","device":{"app_version":"7.2.0","device_external_code":"hnISk9rMhqf6QfvEN4arIQu4MrUFVl7gYGChItYkc7SPbUwC0CiN_ZXyT3QaZJq7B34FRCeTwdEFqRxlPlEIa42m_L5EcQsioWjaMgO2Wogr03yESrca4JAQ7AkXRn-LkkZuasYvkTTFoWNYGU5MjnIzNOIOXNSk","id":"dcoqgmhcxqmiy6b","language":"zh","latitude":31.887948,"longitude":117.304802,"manufacturer":"OnePlus","model":"ONE E1001","os_name":"Android","os_version":"6.0.1","timezone":"Asia/Shanghai","user_agent":"Android com.starbucks.cn/7.2.0 (ONE E1001; 6.0.1)"},"firstName":"即使","gender":"Male","language":"","lastName":"","optOut":"0","password":"密码","cellPhone":"13897546827","sourceCode":"APP","userName":"4a1563994124","token":"U_TOKEN_4a1563994124"}
复制代码
这里主要是分析  device_external_code
这个是之前的封包返回的

返回结果:callbackFunction('{"exp":"1564161017827","UDID":"NHKIBr8hHcElBSSR3r2puSdnO1SR231q","dfp":"hnISk9rMhqf6QfvEN4arIQu4MrUFVl7gYGChItYkc7SPbUwC0CiN_ZXyT3QaZJq7B34FRCeTwdEFqRxlPlEIa42m_L5EcQsioWjaMgO2Wogr03yESrca4JAQ7AkXRn-LkkZuasYvkTTFoWNYGU5MjnIzNOIOXNSk"}')

搜索找到cn.com.bsfit.dfp.android包下的FRMS类
getFingerPrint调用了 cn.com.bsfit.dfp.android.client.b.a.a().a((long) i, this.mContext, z, dFPCallback);
一步步跟踪
new cn.com.bsfit.dfp.android.client.c.b(context).a(new JSONObject(cn.com.bsfit.dfp.android.obj.a.a(a(b(context)))), "AND", dFPCallback, j);

这个jsonhook一下 就是设备信息的json格式
跟到这个a方法,重点来了
  1.   @SuppressLint({"SetJavaScriptEnabled", "AddJavascriptInterface"})
  2.     public void a(JSONObject jSONObject, String str, DFPCallback dFPCallback, long j) {
  3.         a.a = true;
  4.         final DFPCallback dFPCallback2 = dFPCallback;
  5.         final JSONObject jSONObject2 = jSONObject;
  6.         final String str2 = str;
  7.         final long j2 = j;
  8.         new Handler(Looper.getMainLooper()).post(new Runnable() {
  9.             public void run() {
  10.                 try {
  11.                     if (b.this.a == null) {
  12.                         b.this.a = new WebView(b.this.b);
  13.                         WebSettings settings = b.this.a.getSettings();
  14.                         settings.setJavaScriptEnabled(true);
  15.                         settings.setCacheMode(-1);
  16.                     }
  17.                     b.this.a.loadUrl("file:///android_asset/dfp/test.html");
  18.                     b.this.a.addJavascriptInterface(new a(b.this.b, dFPCallback2), "JS");
  19.                     b.this.a.setWebViewClient(new c(jSONObject2, str2));
  20.                     b.this.c = new C0017b(j2, 500, dFPCallback2);
  21.                     b.this.c.start();
  22.                 } catch (Throwable th) {
  23.                     a.b = true;
  24.                     if (a.a && dFPCallback2 != null) {
  25.                         a.a = false;
  26.                         dFPCallback2.onFailed("当前手机没有webview");
  27.                     }
  28.                 }
  29.             }
  30.         });
  31.     }
复制代码
首先加载 loadUrl("file:///android_asset/dfp/test.html");
然后调用 javascript:inputFields('" + this.a + "','" + this.b + "','" + b.e + "')
这个js是test.html里面的JS方法
hook下参数
inputFields('{"device":"bullhead","currentWifi":"[几时,4a:45:20:1d:eb:c4]","sensorList":"b83fa1ed287568e8","user":"android-build","timeZone":"[GMT+08:00,Asia\/Shanghai]","sdkVersion":"4.4.0","id":"MHC19Q","version":"6.0.1","uevent":"MAJOR10MINOR50DEVNAMEcpu_dma_latency","serial":"025282fee5a40b66","manufacturer":"LGE","ppp":"isContent","type":"user","rooted":"1","networkType":"WiFi","host":"vpec3.mtv.corp.google.com","totalSD":"0","totalSystem":"11454181376","fingerprint":"google\/bullhead\/bullhead:6.0.1\/MHC19Q\/2705526:user\/release-keys","misc":"2c0acfd2827311ba","platform":"AND","syncookies":"notExist","availableMemory":"559005696","brightness":"78","product":"bullhead","cellularIP":"192.168.155.2","existPipe":"0","packageName":"com.starbucks.cn","startupTime":"1563577938","isProxy":"0","cpufreq":"isContent","bootloader":"BHZ10m","appVersion":"7.2.0","isVPN":"0","availableSD":"0","availableSystem":"9372737536","tags":"release-keys","cpuABI":"armeabi-v7aarmeabi","battery":"[5,100]","bluetooth":"a0:91:69:94:1a:d4","stat":"isContent","wifiMacAddress":"64:bc:0c:2d:8a:71","switch":"isContent","parameters":"notExist","radio":"unknown","board":"bullhead","brand":"google","displayRom":"MHC19Q","resolution":"[2.625,1080,1794,2.625,422.03,424.069]","totalMemory":"1901912064","userAgent":"Dalvik\/2.1.0(Linux;U;Android6.0.1;Nexus5XBuild\/MHC19Q)","hardware":"bullhead","custID":"ato","adb":"notExist","model":"Nexus5X","existQemu":"0"}', 'AND', 'https://dfp.arm.starbucks.com.cn/public/downloads/frms-fingerprint.js?custID=ato&serviceUrl=https://dfp.arm.starbucks.com.cn/public/generate/jsonp&channel=AND&loadSource=script');
好了知道原理了
/android_asset/dfp/拖出来到我们的浏览器运行,当然你得把上面的inputFields方法手动写进去,
我们发现,计算好了,上面抓包的那些参数,并且ajax提交这个参数与设备签名返回给你真确的udid和dfp参数


如果我们要在易语言中调用,最简单的就是用wke浏览器框架加载这个test.html,然后执行js方法inputFields

JS设备指纹改写。这个设备指纹算法是开源项目
Fingerprintjs2 不过这个app有有修改过的,动态js,并且动态返回Fingerprintjs2的两个版本1.4.2与2.1,自定义签名算法,每次方法名都不一样,改写还是有一定的复杂度

帖上改写后的测试图



当然搞定了 设备算法,不代表你能注册成功,依旧被风控。根据网络上的文章猜测用了威胁猎人的 黑卡检测 与 黑ip检测, 注册成功率低到可怕.


另外,请勿根据此分析来做违法事情,只用来交流学习,如果有办法过这个风控,欢迎交流..

本帖子中包含更多资源

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

x

点评

支持!!!!!!!   重庆市重庆市  发表于 2019-11-30 03:15
发表于 2021-8-13 17:50:44 | 显示全部楼层   浙江省杭州市
牛啊阿啊阿啊紫薯布丁
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)
发表于 2019-11-24 22:14:54 | 显示全部楼层   浙江省绍兴市
lsjmll 发表于 2019-9-29 17:16
666  设备我过不了  黑卡和黑IP能解决

设备可过 能合作?
回复 支持 反对

使用道具 举报

发表于 2019-10-24 16:26:15 | 显示全部楼层   广东省深圳市
有没有一起学习的小伙伴
回复 支持 反对

使用道具 举报

发表于 2019-9-29 17:16:54 | 显示全部楼层   浙江省杭州市
666  设备我过不了  黑卡和黑IP能解决
回复 支持 反对

使用道具 举报

发表于 2019-9-29 11:04:19 | 显示全部楼层   浙江省绍兴市
66666 大佬,学习了! cn.com.bsfit.dfp.android  啧啧 原来星爸爸用的是邦盛的
回复 支持 反对

使用道具 举报

签到天数: 3 天

 楼主| 发表于 2019-7-30 11:59:06 | 显示全部楼层   安徽省合肥市
用代理IP+多米公开对接项目,成功率10%-20%之间

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2019-7-28 12:58:28 | 显示全部楼层   广东省广州市
6666666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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