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

相关文章

Python清空Word段落样式的三种方法

《Python清空Word段落样式的三种方法》:本文主要介绍如何用python-docx库清空Word段落样式,提供三种方法:设置为Normal样式、清除直接格式、创建新Normal样式,注意需重... 目录方法一:直接设置段落样式为"Normal"方法二:清除所有直接格式设置方法三:创建新的Normal样

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Django HTTPResponse响应体中返回openpyxl生成的文件过程

《DjangoHTTPResponse响应体中返回openpyxl生成的文件过程》Django返回文件流时需通过Content-Disposition头指定编码后的文件名,使用openpyxl的sa... 目录Django返回文件流时使用指定文件名Django HTTPResponse响应体中返回openp

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分