kakaotalk数据库密钥生成方法

2024-02-29 09:28

本文主要是介绍kakaotalk数据库密钥生成方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PRAGMA KEY "ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402"的生成

PRAGMA KEY生成算法如下:

Base64Encode(SHA512(AES-128-CBC(UUID + Disk Model Name + Disk SerialNumber))) = ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==
来自服务器的用户唯一标识:410545402

获取系统UUID命令如下:
wmic csproduct get "UUID"

编程方式获取UUID:
https://www.cnblogs.com/strive-sun/p/12516247.html

获取Disk Model Name和Disk SerialNumber命令如下:
wmic diskdrive get model, serialnumber

具体方法如下:
原始字符串:                        4D5882F5-E72C-41E0-9ADA-E2DAD13438C6|Samsung SSD 870 EVO 1TB SCSI Disk Device|S6PVNX0W101380D
Padding后的字符串(16字节对齐):    4D5882F5-E72C-41E0-9ADA-E2DAD13438C6|Samsung SSD 870 EVO 1TB SCSI Disk Device|S6PVNX0W101380D\x03\x03\x03
                                    或如
                                    D1EA91EE-8E1C-D4C3-D204-0C9D9280E10B|Samsung SSD 860 EVO 250GB|S4CKNF0NB09400F\x02\x02

AES key的生成算法:
SHA1(BIN(1DC1B6C365BA5451DA4F730F237CF6635E272D273636363636363636363636363636363636363636363636363636363636363636363636363636363636363636)) = 9FBAE3118FDE5DEAEB8279D08F1D4C79
其中BIN(1DC1B6C365BA5451DA4F730F237CF6635E272D273636363636363636363636363636363636363636363636363636363636363636363636363636363636363636)为kakaotalk内置固定值
即9FBAE3118FDE5DEAEB8279D08F1D4C79也是固定值

最终密钥如下:
key: 9FBAE3118FDE5DEAEB8279D08F1D4C79
iv:  00000000000000000000000000000000

AES-128-CBC("4D5882F5-E72C-41E0-9ADA-E2DAD13438C6|Samsung SSD 870 EVO 1TB SCSI Disk Device|S6PVNX0W101380D\x03\x03\x03") = E68133E9403DDC9B296DAF66031EA677898E92FA8BF8C00C448175330713458B1441E202A6B07E07E929CDB804509F8231EE583D57828E82529425A617B70B8BB1B9FB20E86843F661811EE9CAC3CF95912A49569DD0B6E29DDA1D397E363752

SHA512(BIN("E68133E9403DDC9B296DAF66031EA67789..........."))后的值:
3834a79e4930c801ec5f080210840b0a90317526611ac29e815d18f04b1277be1d579b33677efe0aca8d28693122565f83ca7955720f77f2d38e8463da4171e0

Base64Encode(BIN(3834a79e4930c801ec5f080210840b0a90317526611ac29e815d18f04b1277be1d579b33677efe0aca8d28693122565f83ca7955720f77f2d38e8463da4171e0))后的值:
ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==


*****************************************************************************************************************************************************
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\chatLogs_***.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\chatListInfo.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\openLinkListInfo.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\talkfile.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\talkmedia.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\TalkUserDB.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\floatingList.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\CalendarDB.edb
    PRAGMA KEY='ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402';
    key: 3711E27978F77806353B53C64A04170A
    iv:  6D182988C85D70A7A68FB8D52327BDDB
    
    PRAGMA KEY生成方法:
        用PRAGMA KEY循环拼接凑够512字节,大于512字节截取512字节,然后计算512字节的MD5值得到key值,如下512字节:
        ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402ODSnnkkwyAHsXwgCEIQLCpAxdSZ
    
    key = MD5(PRAGMA KEY ... 512)
    iv = MD5(Base64Encode(BIN(key)))


*****************************************************************************************************************************************************
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\talk_user_prf.edb
    PRAGMA KEY='wNZcRLUmfenh9CsPpEd/lg==';
    key: DCA452465C0EA62218FC3A2BE31332B5
    iv:  D99ED28F9BE1C140A6D746BBBECBC1BC
    
    PRAGMA KEY生成方法:
        Base64Encode(BIN(MD5("ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402"))) = wNZcRLUmfenh9CsPpEd/lg==
    
    key = MD5(PRAGMA KEY ... 512)
    iv = MD5(Base64Encode(BIN(key)))
    

*****************************************************************************************************************************************************
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\Contacts\*.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\url_image_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\ocii_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\oci_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\mci_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\gfve_t_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\gfbe_t_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\fci_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\chat_data\cli_http_v2.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\OCH\*.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\DigitalItem\*.edb
    PRAGMA KEY='9c29e49f6f88e8205ba5ac69b69f2017ecef8a9cfa4914837ae28f9176d171829f0ce6a8500948b2849f59709383366af4d2c4f4d122ed0df4a1a74b5d0ed81a';
    key: D2CACEE5594F087A01DB4914AA86515D
    iv:  845A1BE233E620352CC603429221755E
    
    PRAGMA KEY生成方法:
        SHA512(ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402) = 9C29E49F6F88E8205BA5AC69B69F2017ECEF8A9CFA4914837AE28F9176D171829F0CE6A8500948B2849F59709383366AF4D2C4F4D122ED0DF4A1A74B5D0ED81A
    
    key = MD5(PRAGMA KEY ... 512)
    iv = MD5(Base64Encode(BIN(key)))
    
    
*****************************************************************************************************************************************************
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\CardList\*.edb
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\OpenLinkPreset\*.edb
    PRAGMA KEY='b9ece4a7b2db75a036668a183e8bcb92db6cf35ca6af43137c7c57e57c4e36a7d7b6e27c1fab53abf2fcafe28fd70f859827e8691a6a04d3140f6037a043084c';
    key: 69865EF5A4C942D613CB06911EE849A1
    iv:  C62B8FCC2609D56C1B42310640BEA6BA
    
    PRAGMA KEY生成方法:
        SHA512(ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==) = B9ECE4A7B2DB75A036668A183E8BCB92DB6CF35CA6AF43137C7C57E57C4E36A7D7B6E27C1FAB53ABF2FCAFE28FD70F859827E8691A6A04D3140F6037A043084C
    
    key = MD5(PRAGMA KEY ... 512)
    iv = MD5(Base64Encode(BIN(key)))
        
    
*****************************************************************************************************************************************************
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\MultiProfileDB.edb
    PRAGMA KEY='multiprofileODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402';
    key: B80CC2DF36B6E999E55F0E2F61822B8D
    iv:     5D3928A461849997F499D6AB48B265FE
    
    key = MD5(PRAGMA KEY ... 512)
    iv = MD5(Base64Encode(BIN(key)))
    
    
*****************************************************************************************************************************************************
C:\Users\coder\AppData\Local\Kakao\KakaoTalk\users\5fea7626aa67c9a1771a5187f2d76a0f72cea0ba\emoticon.edb
    PRAGMA KEY='lqiUl0d+4a5b128KX+hBAQ==';
    key: 07384C5E696577273FCAA39E6368E3E5
    iv:  70B046C444DAC5673C4B94FC38DF87EE

    PRAGMA KEY生成方法:
        Base64Encode(BIN(MD5(emoticonODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==emoticon))) = lqiUl0d+4a5b128KX+hBAQ==
    
    key = MD5(PRAGMA KEY ... 512)
    iv = MD5(Base64Encode(BIN(key)))


*****************************************************************************************************************************************************
聊天缓存文件密钥生成方法(该密钥可以解密缓存文件)(解密算法AES-128-CBC)
    TalkUserDB.edb中存在userId为410545402,type为-10
    
    MD5("ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==410545402") -> key: C0D65C44B5267DE9E1F42B0FA4477F96
    MD5("wNZcRLUmfenh9CsPpEd/lg==")                                                                          -> iv:  C250094FB2CD56DC05A2DBCCAA7473D7


    Base64Encode(Bin(C0D65C44B5267DE9E1F42B0FA4477F96)) -> "wNZcRLUmfenh9CsPpEd/lg=="

    python计算式子: 
    base64.b64encode(binascii.a2b_hex('C0D65C44B5267DE9E1F42B0FA4477F96')) -> "wNZcRLUmfenh9CsPpEd/lg=="


*****************************************************************************************************************************************************
资源文件(.xml)key、iv计算:
MD5("KAKAOTALK_PC_FOREVER")                                 -> key: 0836C74406758FAC2DB40BD748A822E1
MD5(Base64Encode(BIN("0836C74406758FAC2DB40BD748A822E1")))     -> iv:  B926ADA81AA03AEF588297D003460EDA


*****************************************************************************************************************************************************
connect_conf文件内容解密:
密钥生成方法:
MD5(ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==20150201) -> F5B7FA7B0AB82F001464071B06EDEA32
Base64Encode(BIN(F5B7FA7B0AB82F001464071B06EDEA32)) -> 9bf6ewq4LwAUZAcbBu3qMg==
MD5(9bf6ewq4LwAUZAcbBu3qMg==) -> 9D34DD3905C3D67DA976DB41A8BF18EC
key: F5B7FA7B0AB82F001464071B06EDEA32
iv:  9D34DD3905C3D67DA976DB41A8BF18EC

*****************************************************************************************************************************************************
mss.dat文件内容解密:
密钥生成方法:
MD5("ODSnnkkwyAHsXwgCEIQLCpAxdSZhGsKegV0Y8EsSd74dV5szZ37+CsqNKGkxIlZfg8p5VXIPd/LTjoRj2kFx4A==20220725") -> 6FA181D480D4FEFEE87F4EF3C4C717D2
Base64Encode(BIN(6FA181D480D4FEFEE87F4EF3C4C717D2)) -> b6GB1IDU/v7of07zxMcX0g==
MD5(b6GB1IDU/v7of07zxMcX0g==) -> 9C8CC6BB84D1D57CE01CE25E4D824663
key: 6FA181D480D4FEFEE87F4EF3C4C717D2
iv:  9C8CC6BB84D1D57CE01CE25E4D824663

这篇关于kakaotalk数据库密钥生成方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758296

相关文章

React 记忆缓存的三种方法实现

《React记忆缓存的三种方法实现》本文主要介绍了React记忆缓存的三种方法实现,包含React.memo、useMemo、useCallback,用于避免不必要的组件重渲染和计算,感兴趣的可以... 目录1. React.memo2. useMemo3. useCallback使用场景与注意事项在 Re

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e