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

相关文章

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安