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

相关文章

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处