阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

TikTok 的应用程序日志都记录了什么内容?

  • 2020-09-10
  • 本文字数:6281 字

    阅读完需:约 21 分钟

TikTok 的应用程序日志都记录了什么内容?

近日,TikTok 的命运可谓一波三折。本文,我们来看下黑客对 TikTok 的研究结果吧。


本文最初发表在 Medium 博客,经原作者 Elliot Alderson 授权,InfoQ 中文站翻译并分享。


自从我发表第一篇文章《TikTok 用什么算法传输并加密内容?》(TikTok: Logs, Logs, Logs)以来,发生了很多事情。



我们还是用事实说话,以更好地了解 TikTok。

免责声明

  • TikTok 为用户提供了大量功能,这要归功于它高达数百万行的代码。因此,仅靠一篇文章是不可能涵盖像“TikTok 是否对国家安全构成威胁?”这样宽泛而模糊的问题答案。因此,我计划在一系列文章中讨论该问题,每篇文章都有特定的主题。

  • 我是一名法国安全研究员,多年来,一直在分析移动应用程序。你可以在 http://fs0c131y.com/press 网站找到我的公开作品,在 http://twitter.com/fs0c131y 找到我。

  • 我的目标完全透明,就是分享我知道的所有内容。

  • 如果想跳过技术细节,可以在本文末尾找到总结。

前言

在我上一篇文章《TikTok 用什么算法传输并加密内容?》(TikTok: Logs, Logs, Logs)中,我对 TikTok 发出的 app_log 网络请求的内容进行了解密。



完成解密后,有一个问题仍然存在:


事件记录。我需要仔细研究一下他们认为的“事件”是什么,但就我所知,这似乎是一个相当标准的分析解决方案。


在本文中,我将回答以下问题:TikTok 的应用程序日志的定义是什么?

什么是 TikTok 的应用程序日志?

我们的起点是 app_log 这一关键字。为了解 TikTok 是如何处理应用程序日志的,我对应用程序进行了反编译,并分析了源代码。我很快在 DBHelper 类中找到了 ss_app_log.db 的定义。



这很有趣,TikTok 使用本地数据库来存储应用程序日志。我特意查看了测试用的手机才确认这一点。



正如你所见,TikTok 创建了许多数据库。如果你打开 ss_app_log.db 这个文件,你可以在事件表中找到一些数据。



这些方法的签名给我们提供了 3 个新对象:LogEvent、LogPage、LogSession。



这回答了我们最初的问题!TikTok 的应用程序日志可以是 LogEvent、LogPage 或 LogSession。

这些应用程序日志(实际上)里面有什么?

很好,我找到了不同日志对象的定义,但 TikTok 真正发送的是什么呢?


是时候用 Frida 拦截 DBHelper 类的 6 种插入方法了。



通过这种方法,我得到了 TikTok 在使用应用程序时创建的所有应用程序日志的详细信息。下面是日志会话、日志事件和日志以及杂项日志的示例。


[Log Session]active = falseapp_version =  17.2.4duration = 0eventIndex = 0id = 0launch_sent = falsenon_page = truepausetime = 1596980554524timestamp = 1596980554524value = 6630a167-4cf8-46a3-ac6c-c4b45aab0a00version_code = 2021702040[Log Event]category = event_v3ext_json =  {"is_cache":1,"is_timeout":1,"cache_num":1,"_event_v3":1,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","nt":4}ext_value = 0id = 0instant_only = falselabel = nullmHasTimelySend = falsesession_id = 39tag = pull_out_cache_videoteaEventIndex = 1timestamp = 1596980554524user_id = 0value = 0[Log]value = {"event":[{"ad_extra_data":"{\"non_hb_ad\":0,\"hb_ad\":0}","is_ad_event":1,"is_i18n_sdk":1,"refer":"sdk","ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","nt":4,"category":"event_v1","tag":"sdk_ad","label":"ad_sdk_bid_upload","session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34","event_id":655},{"nt":4,"category":"event_v1","tag":"launch_time","label":"perf_monitor","ext_value":858,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34","event_id":658}],"event_v3":[{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"pull_out_cache_video","params":{"is_cache":1,"is_timeout":1,"cache_num":1},"event_id":653,"tea_event_index":1,"local_time_ms":1596980554524,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"caijing_iap_google_set_host","params":{"params_for_special":"caijing_pay_casher","set_host":"tp-pay-mva.byteoversea.com"},"event_id":654,"tea_event_index":2,"local_time_ms":1596980554600,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"caijing_iap_google_upload_host","params":{"params_for_special":"caijing_pay_casher","upload_host":"tp-pay-mva.byteoversea.com","from":"confirm_task"},"event_id":656,"tea_event_index":3,"local_time_ms":1596980554729,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"main_boot_type","params":{"type":1},"event_id":657,"tea_event_index":5,"local_time_ms":1596980554808,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"},{"nt":4,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623","event":"power_launch_log","params":{"last_start_power":"100","last_session":"18980","last_end_power":"100","current_power":"100","launch_num":"14","is_cold_launch":"1","is_charging":"1"},"event_id":659,"tea_event_index":6,"local_time_ms":1596980554851,"session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","datetime":"2020-08-09 15:42:34"}],"launch":[{"datetime":"2020-08-09 15:42:34","session_id":"6630a167-4cf8-46a3-ac6c-c4b45aab0a00","local_time_ms":1596980554524,"tea_event_index":0,"is_background":true,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623"},{"datetime":"2020-08-09 15:42:34","session_id":"05430002-b046-4ab3-9e7b-e4cc52f1a0b3","local_time_ms":1596980554861,"tea_event_index":0,"ab_sdk_version":"1799896,185215011,1868782,1788470,1791623"}],"magic_tag":"ss_app_log","time_sync":{"server_time":1596980557,"local_time":1596980557},"header":{"openudid":"e4340d3235274e4b","sdk_version":"2.5.6.3","package":"com.zhiliaoapp.musically","channel":"googleplay","display_name":"TikTok","app_version":"17.2.4","version_code":2021702040,"timezone":1,"access":"wifi","os":"Android","os_version":"8.1.0","os_api":27,"device_model":"Nexus 6P","device_brand":"google","device_manufacturer":"Huawei","language":"en","resolution":"2392x1440","display_density":"mdpi","density_dpi":560,"clientudid":"8e9b0431-e442-49c7-ac03-4bfea91b540f","install_id":"6857220033589053189","device_id":"6727990782160700929","sig_hash":"194326e82c84a639a52e5c023116f12a","aid":1233,"push_sdk":[1,2,7,8,9],"rom":"EMUI-4805388","release_build":"074debc_20200803","update_version_code":2021702040,"manifest_version_code":2021702040,"app_version_minor":"","cpu_abi":"arm64-v8a","not_request_sender":0,"rom_version":"OPM6.171019.030.E1","region":"US","tz_name":"Europe\/Paris","tz_offset":7200,"custom":{"filter_warn":0,"web_ua":"Mozilla\/5.0 (Linux; Android 8.1.0; Nexus 6P Build\/OPM6.171019.030.E1; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/84.0.4147.111 Mobile Safari\/537.36","user_period":-1,"user_mode":-1},"google_aid":"315f154c-a3a0-48de-b932-319e0595114b"},"_gen_time":1596980557330}log_type =  0[Misc Log]session_id = 40log_type =  media_loadervalue = {"cache_content_length":0,"cache_hit_off":0,"download_task_num":0,"encrypt_version":1,"end_req_t":1596980559207,"err_code":0,"file_key":"v09044ac0000brd02sf4gdtjhfg5lrtg_bytevc1_540p_981609","han_sh_st":4,"io_read_size":0,"io_read_time":1,"is_auth_err":-1,"is_crc_err":-1,"is_hiJack_err":0,"l_err_code":0,"l_sta_code":206,"loader_download_size":1897451,"loader_info":"{\n   \"ac_check_level\" : 0,\n   \"check_sum_level\" : 0,\n   \"cost_time\" : 2042,\n   \"crc_err_url_index\" : 0,\n   \"down_load_size\" : 1897451,\n   \"download_size\" : 1897451,\n   \"end_req_t\" : 1596980559204,\n   \"err_code\" : 0,\n   \"err_stage\" : 0,\n   \"io_write_size\" : 1897451,\n   \"io_write_time\" : 171,\n   \"is_all_forbid\" : 0,\n   \"is_call_f_api\" : 0,\n   \"is_crc_err\" : -1,\n   \"is_enble_pre_con\" : 1,\n   \"is_hiJack_err\" : 0,\n   \"marked_io_speed\" : 0,\n   \"net_log\" : [\n      {\n         \"dns_start_t\" : 1596980557162,\n         \"dns_t\" : 1596980557266,\n         \"end_req_t\" : 1596980559204,\n         \"http_err_code\" : 0,\n         \"http_err_stage\" : -1,\n         \"http_first_body_t\" : 1596980557589,\n         \"http_open_end_t\" : 1596980557589,\n         \"ip_info\" : \"2.21.35.19\",\n         \"ip_list\" : \"2.21.35.19,2.21.35.42,2.21.35.8,2.21.35.24,2.21.35.43,2.21.35.41,2.21.35.16,2.21.35.25,2.21.35.27,\",\n         \"is_crc_err\" : -1,\n         \"is_force_https\" : 0,\n         \"is_socket_reuse\" : 0,\n         \"is_tls_ses_reuse\" : 0,\n         \"read_off\" : 1897451,\n         \"read_size\" : 1897451,\n         \"req_check_t\" : -1,\n         \"req_t\" : 1596980557162,\n         \"tcp_con_start_t\" : 1596980557266,\n         \"tcp_con_t\" : 1596980557322,\n         \"tcp_err_code\" : 0,\n         \"tcp_first_pack_t\" : 1596980557393,\n         \"tcp_window_size\" : -100000,\n         \"tls_version\" : \"TLSv1.2\",\n         \"url_index\" : 0\n      }\n   ],\n   \"network_version\" : \"avnetwork_andorid_1.1.4.5_boringssl\",\n   \"ori_url_num\" : -1,\n   \"read_off\" : 1897451,\n   \"req_t\" : 0,\n   \"speed_coe_value\" : 0.0,\n   \"tcp_err_code\" : 0,\n   \"url_fail_count\" : 0,\n   \"url_index\" : 0,\n   \"url_suc_count\" : 1,\n   \"urls\" : [\n      \"https:\/\/v16m.tiktokcdn.com\/2120bf3fa76a176531a3c7a37d1008eb\/5f32a04c\/video\/tos\/useast2a\/tos-useast2a-pve-0068\/73089af821d24176945a10483a866aec\/?a=1233&br=1916&bt=958&cr=3&cs=2&dr=0&ds=6&er=&l=20200809134235010189066019293A1EAC&lr=all&mime_type=video_mp4&qs=11&rc=anU4aW1nN3YzdTMzZjczM0ApODlmOjg4ODs5NzRlNzYzZWdxaWRlcWRjL2FfLS1eMTZzczZfYjUxY2JhL2FfMDJjYGI6Yw%253D%253D&vl=&vr=\",\n      \"https:\/\/v19.tiktokcdn.com\/3740f4af6869fd6e64346601b8163868\/5f32a04c\/video\/tos\/useast2a\/tos-useast2a-pve-0068\/73089af821d24176945a10483a866aec\/?a=1233&br=1916&bt=958&cr=3&cs=2&dr=0&ds=6&er=&l=20200809134235010189066019293A1EAC&lr=all&mime_type=video_mp4&qs=11&rc=anU4aW1nN3YzdTMzZjczM0ApODlmOjg4ODs5NzRlNzYzZWdxaWRlcWRjL2FfLS1eMTZzczZfYjUxY2JhL2FfMDJjYGI6Yw%253D%253D&vl=&vr=\",\n      \"https:\/\/api16-normal-c-useast1a.tiktokv.com\/aweme\/v1\/play\/?video_id=v09044ac0000brd02sf4gdtjhfg5lrtg&line=0&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&bytevc1=1&quality_type=11&adapt540=1&source=PackSourceEnum_FEED&pass-region=1&pass-route=1&iid=6857220033589053189&device_id=6727990782160700929&ac=wifi&channel=googleplay&aid=1233&app_name=musical_ly&version_code=170204&version_name=17.2.4&device_platform=android&ab_version=17.2.4&ssmix=a&device_type=Nexus%2b6P&device_brand=google&language=en&os_api=27&os_version=8.1.0&openudid=e4340d3235274e4b&manifest_version_code=2021702040&resolution=1440%2a2392&dpi=560&update_version_code=2021702040&_rticket=1596980556917&storage_type=1&current_region=FR&app_type=normal&pass-route=1&cpu_support64=true&host_abi=arm64-v8a&sys_region=US&appTheme=light&pass-region=1&timezone_name=Europe%252FParis&residence=FR&app_language=en&ac2=wifi&uoo=0&op_region=FR&timezone_offset=3600&build_number=17.2.4&locale=en&region=US&ts=1596980556&cdid=3506991f-9724-4c2c-b62e-37e84dc465fe\"\n   ]\n}\n","loader_type":0,"log_type":"media_loader","net_content_length":1897451,"raw_key":"v09044ac0000brd02sf4gdtjhfg5lrtg_bytevc1_540p_981609","read_cache_size":0,"read_loader_size":1897451,"receive_req_t":1596980557154,"reply_code":206,"reply_player_size":1897451,"req_end_off":0,"req_off":0,"ret":0,"sdk_ua":"AVMDL-1.0.33.1-boringssl-boringssl-ANDROID","sdk_version":"AVMDL-1.0.33.1-boringssl-boringssl","task_type":1,"trace_id":"6727990782160700929T1596980557123T18185","use_file_mgr":1,"wait_task_num":0}
复制代码


我还发布了 TikTok 在应用程序启动期间创建的应用程序日志的完整列表:


https://gist.github.com/fs0c131y/b4ef278e8863c636964793e1b27f889d



这些日志是否包含个人数据?答案是没有。你最多能找到的是关于设备的数据,如操作系统、操作系统版本、设备型号、设备品牌、像素密度等,基本上就这些了,仅此而已。

总结

在本文中,我找到了 TikTok 不同类型日志的定义,并观察了他们是如何动态创建的。经过分析,应用程序日志似乎并不含个人数据。


通过这两篇文章,我们对 TikTok 应用程序日志有了一个很好的概述。下一篇文章将专门讨论 TikTok 如何在 Android 系统上使用一个众所周知的技巧来获取用户设备的 Mac 地址。


前文回顾:


TikTok 用什么算法传输并加密内容?


作者介绍:


Elliot Alderson,法国黑客。在 Predicta Lab 打击虚假信息,与 USANetwork 无关。


原文链接:


https://medium.com/@fs0c131y/tiktok-what-is-an-app-log-da70193f875


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-09-10 11:361690

评论 1 条评论

发布
用户头像
应该给懂王看看
2020-09-24 08:21
回复
没有更多了
发现更多内容

日记 2021年2月19日(周五)

Changing Lin

2月春节不断更

开源数据库管理系统现在比商业产品更受欢迎

PostgreSQLChina

数据库 postgresql 软件 开源社区

使用 Tye 辅助开发 k8s 应用竟如此简单(三)

newbe36524

Docker 微服务 k8s dotnet

【LeetCode】最大连续1的个数三Java题解

Albert

算法 LeetCode 2月春节不断更

DPDK大页内存原理

赖猫

Linux DPDK

【STM32】ST-LINK下载器下载后需复位,程序才运行的问题

AXYZdong

硬件 stm32 2月春节不断更

竞猜商城系统软件制作

v16629866266

架构师week12心得

Geek_xq

前端学习总结,经验分享,项目经验分享过程

我是哪吒

学习 程序员 Vue 大前端 2月春节不断更

对DevOps的九大误解,是时候纠正了!

禅道项目管理

开源 DevOps 敏捷 自动化 持续交付

LeetCode题解:1143. 最长公共子序列,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

技术秘籍 | 如何简单优雅的适配textview行间距?

百度开发者中心

大前端 TextView

万字长文:解读区块链7类共识算法

华为云开发者联盟

区块链 公有链 拜占庭容错 共识算法 公式算法

诊所数字化:就诊流程标准化和产品SOP设计

boshi

数字化转型 医疗 七日更

如何读懂CNN、BBC、经济学人、卫报、纽约时报?看完这本经典即可事半功倍!

wbliu85

学习 英语

15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工

梦想橡皮擦

Python 2月春节不断更

Hive HMS Canary 时间较长异常分析

笨小康

大数据 hadoop hive

CoralCache:一个提高微服务可用性的中间件

华为云开发者联盟

数据库 微服务 中间件 内存 CoralCache

Kafka.01 - 简介

insight

kafka 2月春节不断更

最新Hadoop的面试题总结

大数据老哥

GitHub上爆火的Java性能优化100+小技巧!(干货建议收藏)

Java架构师迁哥

TCP 协议灵魂问题,巩固你的网路底层基础

数据中心决策如何快人一步?一块大屏轻松实现3D数据可视化

一只数据鲸鱼

物联网 数据中心 数据可视化 IDC 机房管理

翻译:《实用的Python编程》01_07_Functions

codists

Python 人工智能 后端 数据结构与算法 函数

一文搞懂TCP的三次握手和四次挥手

不脱发的程序猿

三次握手 四次挥手 TCP/IP 网络通信协议 二月春节不断更

linux内核协议栈 邻居协议之ARP协议处理初始化

赖猫

Linux 协议栈 Linux内核

地表建筑物识别Dayo1

IT蜗壳-Tango

七日更 2月春节不断更

Elasticsearch Search API 基础语法

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

一、MongoDB简介

Kylin

数据库 mongodb 学习 七日更 二月春节不断更

架构师week12作业

Geek_xq

DIY一款4路USB转TTL串口调试模块

不脱发的程序猿

DIY 电路设计 硬件设计 USB电路 USB转TTL

TikTok 的应用程序日志都记录了什么内容?_AI&大模型_Elliot Alderson_InfoQ精选文章