本文目的:将手机上的某音缓存数据提取成我们常用的json格式ck。

某音将部分数据缓存至本地,其中包含了ck(device信息、token、app版本信息等),可以通过安卓程序将数据提取出来用于平时测试。因为该数据是缓存在应用的独立数据目录 安卓默认是不允许app互相访问独立数据,这里需要手机root后才可以提取。

缓存文件目录:/data/data/com.ss.android.ugc.aweme/shared_prefs

我们主要提取这五个文件  缓存文件包含数据

ttnetCookieStore.xml             cookie,涉及敏感数据,数据需解码(下方代码里的decode方法)
token_shared_preference.xml      x-tt-token
wschannel_multi_process_config.xml    登录的设备信息,包含device_id install_id 应用版本 手机版本等查询通用参数。
applog_stats.xml                 mac_addr fingerprint_codes等
LoginSharePreferences.xml        最后登录的账号信息

ttnetCookieStore.xml 部分内容如下:

<string name="http://snssdk.com/|odin_tt">aced000573720031636f6d2e6279746564616e63652e6672616d65776f726b732e626173656c69622e6e6574776f726b2e687474702e622e6858765a0a7f563d0c0300014a00016378707400076f64696e5f74747400806162663762643132383666343137303631623636346364333664313662386635613232303532633739643464346662333563643361646561646337323037373135336335336532323036623437393530643836393566363162643764656630346337336636656466646633653336356530626235613666383164343433633163707074000b2e736e7373646b2e636f6d77080000000005265c007400012f70770f000000010000010000017a6585797578</string>

提取到的内容部分需要解密。

解密python代码:

def decode_cookie(str):length = len(str)newData = ""i = 0while(i<length):newChar = (int(str[i],16)<<4) + (int(str[i+1],16))newData += chr(newChar)i=i+2return newData

解密java代码:

    /*** cookie解密* @param str cookie密文* @return*/public static String decodeCookie(String str){String cookieStr = "";int i = 0;while(i < str.length()){char c1 = str.charAt(i);int num1 = Integer.parseInt(String.valueOf(c1),16);char c2 = str.charAt(i+1);int num2 = Integer.parseInt(String.valueOf(c2),16);int newChar =  (num1<<4) + num2;cookieStr +=  (char) Integer.parseInt(String.valueOf(newChar));i=i + 2;}return cookieStr;}

解密结果:

’ sr 1com.bytedance.frameworks.baselib.network.http.b.hXvZ
V= J cxpt odin_ttt abf7bd1286f417061b664cd36d16b8f5a22052c79d4d4fb35cd3adeadc72077153c53e2206b47950d8695f61bd7def04c73f6edfdf3e365e0bb5a6f81d443c1cppt .snssdk.com    &\ t /pw      zeyux

但是我们发现他还是有些其它地方乱码了,但是蓝色方框是我们的结果,其实这是因为他解密之后是一个protobuf格式,我们只需要再次分割拿出来就可以了。具体完整代码都是读取文件和正则匹配或者分割下就好了,关键是ck这里加密,主要给出解密代码.

wschannel_multi_process_config.xml 部分内容如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="key_enable_offline_detect" value="false" />
<string name="ws_apps">[{&quot;channel_id&quot;:1239108,&quot;app_id&quot;:1128,&quot;device_id&quot;:&quot;61919431820&quot;,&quot;install_id&quot;:&quot;3149472127268080&quot;,&quot;urls&quot;:[&quot;wss:\/\/frontier-aweme.snssdk.com\/ws\/v2&quot;],&quot;app_version&quot;:160501,&quot;platform&quot;:0,&quot;fpid&quot;:9,&quot;app_kay&quot;:&quot;e1bd35ec9db7b8d846de66ed140b1ad9&quot;,&quot;extra&quot;:&quot;ws_connect_protocol=0&amp;os_api=25&amp;device_type=MI%206&amp;manifest_version_code=160502&amp;dpi=480&amp;is_guest_mode=0&amp;is_background=1&amp;app_name=aweme&amp;version_name=16.5.1&amp;ts=1624900639&amp;sid=&amp;cpu_support64=true&amp;ttnet_ignore_offline=1&amp;app_type=normal&amp;ac=wifi&amp;appTheme=dark&amp;channel=xiaomi_1128_64&amp;update_version_code=16519900&amp;host_abi=arm64-v8a&amp;_rticket=1624900639691&amp;device_platform=android&amp;iid=3149472127268080&amp;ttnet_heartbeat_interval=30&amp;ne=1&amp;version_code=160501&amp;cdid=903a39a1-841c-4a7c-89d3-9337ec85eec9&amp;openudid=f4135260f97231ac&amp;device_id=61919431820&amp;resolution=1080*1920&amp;ping-interval=30&amp;language=zh&amp;device_brand=Xiaomi&amp;os_version=7.1.1&amp;aid=1128&amp;minor_status=0&quot;}]</string>
</map>

其中ws_apps包含json数据,但是需要解析

[{&quot;channel_id&quot;:1239108,&quot;app_id&quot;:1128,&quot;device_id&quot;:&quot;61919431820&quot;,&quot;install_id&quot;:&quot;3149472127268080&quot;,&quot;urls&quot;:[&quot;wss:\/\/frontier-aweme.snssdk.com\/ws\/v2&quot;],&quot;app_version&quot;:160501,&quot;platform&quot;:0,&quot;fpid&quot;:9,&quot;app_kay&quot;:&quot;e1bd35ec9db7b8d846de66ed140b1ad9&quot;,&quot;extra&quot;:&quot;ws_connect_protocol=0&amp;os_api=25&amp;device_type=MI%206&amp;manifest_version_code=160502&amp;dpi=480&amp;is_guest_mode=0&amp;is_background=1&amp;app_name=aweme&amp;version_name=16.5.1&amp;ts=1624900639&amp;sid=&amp;cpu_support64=true&amp;ttnet_ignore_offline=1&amp;app_type=normal&amp;ac=wifi&amp;appTheme=dark&amp;channel=xiaomi_1128_64&amp;update_version_code=16519900&amp;host_abi=arm64-v8a&amp;_rticket=1624900639691&amp;device_platform=android&amp;iid=3149472127268080&amp;ttnet_heartbeat_interval=30&amp;ne=1&amp;version_code=160501&amp;cdid=903a39a1-841c-4a7c-89d3-9337ec85eec9&amp;openudid=f4135260f97231ac&amp;device_id=61919431820&amp;resolution=1080*1920&amp;ping-interval=30&amp;language=zh&amp;device_brand=Xiaomi&amp;os_version=7.1.1&amp;aid=1128&amp;minor_status=0&quot;}]

java中通过方法可以解析

        String str = "[{&quot;channel_id&quot;:1239108,&quot;app_id&quot;:1128,&quot;device_id&quot;:&quot;61919431820&quot;,&quot;install_id&quot;:&quot;3149472127268080&quot;,&quot;urls&quot;:[&quot;wss:\\/\\/frontier-aweme.snssdk.com\\/ws\\/v2&quot;],&quot;app_version&quot;:160501,&quot;platform&quot;:0,&quot;fpid&quot;:9,&quot;app_kay&quot;:&quot;e1bd35ec9db7b8d846de66ed140b1ad9&quot;,&quot;extra&quot;:&quot;ws_connect_protocol=0&amp;os_api=25&amp;device_type=MI%206&amp;manifest_version_code=160502&amp;dpi=480&amp;is_guest_mode=0&amp;is_background=1&amp;app_name=aweme&amp;version_name=16.5.1&amp;ts=1624900639&amp;sid=&amp;cpu_support64=true&amp;ttnet_ignore_offline=1&amp;app_type=normal&amp;ac=wifi&amp;appTheme=dark&amp;channel=xiaomi_1128_64&amp;update_version_code=16519900&amp;host_abi=arm64-v8a&amp;_rticket=1624900639691&amp;device_platform=android&amp;iid=3149472127268080&amp;ttnet_heartbeat_interval=30&amp;ne=1&amp;version_code=160501&amp;cdid=903a39a1-841c-4a7c-89d3-9337ec85eec9&amp;openudid=f4135260f97231ac&amp;device_id=61919431820&amp;resolution=1080*1920&amp;ping-interval=30&amp;language=zh&amp;device_brand=Xiaomi&amp;os_version=7.1.1&amp;aid=1128&amp;minor_status=0&quot;}]";String json = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(str);

最后拿到参数数据:

[{"channel_id":1239108,"app_id":1128,"device_id":"61919431820","install_id":"3149472127268080","urls":["wss:\/\/frontier-aweme.snssdk.com\/ws\/v2"],"app_version":160501,"platform":0,"fpid":9,"app_kay":"e1bd35ec9db7b8d846de66ed140b1ad9","extra":"ws_connect_protocol=0&os_api=25&device_type=MI%206&manifest_version_code=160502&dpi=480&is_guest_mode=0&is_background=1&app_name=aweme&version_name=16.5.1&ts=1624900639&sid=&cpu_support64=true&ttnet_ignore_offline=1&app_type=normal&ac=wifi&appTheme=dark&channel=xiaomi_1128_64&update_version_code=16519900&host_abi=arm64-v8a&_rticket=1624900639691&device_platform=android&iid=3149472127268080&ttnet_heartbeat_interval=30&ne=1&version_code=160501&cdid=903a39a1-841c-4a7c-89d3-9337ec85eec9&openudid=f4135260f97231ac&device_id=61919431820&resolution=1080*1920&ping-interval=30&language=zh&device_brand=Xiaomi&os_version=7.1.1&aid=1128&minor_status=0"}]

或者使用完整的解析代码:

/*** 解析某音xml参数* @param douyinParamXml* @return* @throws DocumentException*/public static String parseParamsXml(String douyinParamXml) throws DocumentException {//1.创建Reader对象SAXReader reader = new SAXReader();//2.加载xml//读取XML文件,获得document对象//Document document = reader.read(new File("C:\\Users\\Administrator\\Desktop\\wschannel_multi_process_config.xml"));//解析XML形式的文本,得到document对象Document document = DocumentHelper.parseText(douyinParamXml);//3.获取根节点Element rootElement = document.getRootElement();Iterator iterator = rootElement.elementIterator();while (iterator.hasNext()){Element stu = (Element) iterator.next();List<Attribute> attributes = stu.attributes();for (Attribute attribute : attributes) {if ("ws_apps".equalsIgnoreCase(attribute.getValue())){String json = stu.getStringValue();return json;}}}return null;}

某音提取真机cookie,cookie参数解密相关推荐

  1. 抖音提取ttnetCookieStore.xml,cookie参数PHP解密

    抖音提取ttnetCookieStore.xml部分参数片段如下: <string name="http://snssdk.com/|odin_tt">aced0005 ...

  2. 小程序真机测试「启动参数」解析出错问题

    写小程序2年了 前两天才碰到的这个问题 以前没出错过 话不多说 直接上图 1.小程序 - 启动参数图例  2 2.微信开发者工具-模拟器输出参数-正常图例  这是没问题! 3.真机测试-输出参数-错误 ...

  3. 提取谷歌游览器Cookie的五重境界

    经常玩爬虫的童鞋都知道cookie的重要性,目前为止大部分网站都仍然使用cookie标识登录状态,只有少部分网站升级到使用jwt记录登录状态. 提取cookie作用不言而喻,那么提取cookie有哪些 ...

  4. 使用抖音开发工具真机调试Android可以,而ios不行,而预览可以

    首先检查抖音版本是否太低咯, 其次是点击真机调试,点击切换至旧版真机调试即可

  5. Xcode 真机调试: AVAudioPlayer 模拟器有声音,真机耳机有声音,扬音器没有声音的解决办法

    Xcode 真机调试:  AVAudioPlayer 模拟器有声音,真机耳机有声音,扬音器没有声音解决办法 1.在创建:AVAudioPlayer前,加入以下代码 AVAudioSession *au ...

  6. 荣耀note10无缘鸿蒙,赵明确认荣耀NOTE10 真机参数疑似全曝光!

    近日荣耀总裁赵明公开表示,GPU Turbo之后,荣耀还会有更多"非常吓人"的产品和技术与大家见面.荣耀NOTE10就是其中之一,这款手机荣耀准备了两年,大家可以期待下.随后有网友 ...

  7. APP自动化测试系列之adb连接真机和模拟器

    VOL 160 21 2020-09 今天距2021年101天 这是ITester软件测试小栈第160次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  8. 移动端真机调试,手机端调试,移动端调试

    移动端真机调试方法 一.chrome真机调试:局限性:只能调试手机端的chrome浏览器,其他浏览器均不适用:优点是: 简单快捷: 二.spy-debugger调试:spy-debugger,安装稍微 ...

  9. 微信H5移动端真机调试--vConsole

    在移动端实际开发中,还是会碰到一些棘手的bug,想看看到底哪里出了问题,苦于移动端不能F12啊.友好的微信给我们提供了这么一个入口,使开发者可以真机调试.给微信开发者点赞.然后就可以看到你打印的内容及 ...

最新文章

  1. oracle11g资源过低,Sun Cluster3.3+Oracle11g配置数据库资源问题
  2. 用开源的人工标注数据来增强RoFormer-Sim
  3. ApacheSkyWalking APM 生态衍生多语言监控, 支持 .NET Core
  4. 2.Linux 高性能服务器编程 --- IP 协议详解
  5. win7下安装openSSH
  6. 计算机网络:王道考研
  7. java毕业设计开题报告基于SSM学生成绩管理系统
  8. 2022 东北四省赛 VP记录/补题
  9. 利用mlxtend进行数据关联分析
  10. Android Studio的报错提示:Error while Launching activity
  11. 通过wireshark抓包对nmap一些原理分析
  12. 【电子书资源】 PDF格式 持续更新
  13. 关于“W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-1.fw for module r8169”问题的解决
  14. 计算机电池维修方案,解决方案:计算机主板电池已耗尽,如果不更换电池该怎么办?如何更换电池...
  15. [树莓派1] 硬件选购指南
  16. 大数据分析及挖掘技术
  17. Android向SDCard中上传文件时报错:Failed to push items
  18. excel中如何将数字转换成文本
  19. MobileNetV1实战:使用MobileNetV1实现植物幼苗分类
  20. 用arduino IDE开发esp8266 wifi

热门文章

  1. 求矩阵主对角线元素及副对角线元素之和
  2. 微信公众号开发 - 配置表设计以及接入公众号接口开发
  3. win10怎么关闭443端口(超详细)
  4. spring史上最全笔记
  5. java吸血鬼_4位吸血鬼数字的java实现思路与实例讲解
  6. BT结束,高宽带有何用?
  7. Vue技术栈(全家桶)
  8. OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法
  9. 主码、候选码与外码的区别
  10. 关于二手交易平台的思路背景