吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14246|回复: 90
收起左侧

[原创] Typora 1.x 加密密钥

  [复制链接]
Thomas717 发表于 2021-11-28 14:00
Typora 1.x版本开始收费了,多年以来我一直认为这个翻译都是社区支持的软件应该是开源软件。

asar unpack之后,文件被加密了,base64解码后去掉前16字节就是密文,密钥如下:

算法:AES-256 CBC模式
密钥:4EE1B382949A024B802F52B4B4FE57F1BEF40853109256E2C20DECA3DD8DD56D
IV:文件前16字节

可以使用openssl解密文件:
[Bash shell] 纯文本查看 复制代码
openssl enc  -aes-256-cbc -d -in enc.bin -out dec.js -iv xxxxxxxxxx -K 4EE1B382949A024B802F52B4B4FE57F1BEF40853109256E2C20DECA3DD8DD56D


最近超级忙,遇到了顺手做了一下分析,欢迎大家继续研究。

免费评分

参与人数 20吾爱币 +30 热心值 +20 收起 理由
bjznhxy + 1 + 1 谢谢@Thanks!
yzhiren + 1 + 1 我很赞同!
rig + 1 + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Airey + 1 + 1 我就知道吾友最强了
kuaile365 + 1 + 1 谢谢@Thanks!
OYyunshen + 1 + 1 谢谢@Thanks!
addhone + 1 + 1 我很赞同!
十一七 + 1 pack with unpack: https://github.com/Mas0nShi/typoraCracker
889_ + 1 + 1 我很赞同!
zjytrhy + 1 + 1 谢谢@Thanks!
风绕柳絮轻敲雪 + 2 + 1 我很赞同!
夜泉 + 1 + 1 https://www.52pojie.cn/thread-1553371-1-1.html
笙若 + 1 + 1 谢谢@Thanks!
SunsetShimmer + 1 + 1 用心讨论,共获提升!
arryboom + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Zxis + 1 + 1 用心讨论,共获提升!
xiahhhr + 1 + 1 谢谢@Thanks!
冰雪堂主 + 1 + 1 我很赞同!
涛之雨 + 4 + 1 强啊,我只找到了开源库,然后dump到了js

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

iokeyz 发表于 2021-11-29 23:37
太强了,感谢楼主分享!
一个一个的调用 openssl 解密太麻烦了,写了个 python 脚本,放在目录里执行自动解密
[Python] 纯文本查看 复制代码
import os
from base64 import b64decode
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding


def dec(filename):
    with open(filename, 'rb') as file:
        fileb = b64decode(file.read())
        iv = fileb[:16]
        key = bytes.fromhex('4EE1B382949A024B802F52B4B4FE57F1BEF40853109256E2C20DECA3DD8DD56D')
        cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
        decryptor = cipher.decryptor()
        filed = decryptor.update(fileb[16:]) + decryptor.finalize()
        dest = open(filename+'-dec.js', 'wb')
        unpadder = padding.PKCS7(128).unpadder()
        data = unpadder.update(filed) + unpadder.finalize()
        dest.write(data)
        dest.close()


point = os.walk('.')
for pwd, dirl, filel in point:
    for filename in filel:
        if filename.endswith('js'):
            dec(filename)
            
Ursule 发表于 2021-11-30 15:37
改无限试用,去除弹窗,License.js

  • 修改 License.js 试用期时间的相关代码

    • getTrailRemains = (e, n) => {
      n = n || 15;
      var t = Math.floor((new Date - installDate) / 864e5),
          i = Math.max(0, n - t);
      return e && (i > n || isNaN(i)) && (i = n), i
      }, validateTrail = async () => {
      var e = (installDate = getInstallDate(!global.devVersion)) ? getTrailRemains(!1) : 100;
      (e > 15 || isNaN(e)) && (console.log("[validateTrail] Read from incorrupted InstallDate"), await writeInstallDate(!0), e = 15), console.log(`[validateTrail] installDate is ${installDate.toLocaleDateString("en-US")}, trail remains: ${e} days`)
      };
    • getTrailRemains = (e, n) => {
      n = n || 15;
      var t = Math.floor((1000) / 864e5),
          i = Math.max(0, n - t);
      return e && (i > n || isNaN(i)) && (i = n), i
      }, validateTrail = async () => {
      var e = (installDate = getInstallDate(!global.devVersion)) ? getTrailRemains(!1) : 100;
      (e > 15 || isNaN(e)) && (console.log("[validateTrail] Read from incorrupted InstallDate"), await writeInstallDate(!0), e = 15), console.log(`[validateTrail] installDate is ${installDate.toLocaleDateString("en-US")}, trail remains: ${e} days`)
      };
  • 修改试用期弹窗

    • showLicensePanelIfNeeded = function() {
          shouldShowNoLicenseHint(!0) && !app.setting.inFirstShow && (isLinux && Math.random() < .95 || (!lastShown || new Date - lastShown > 36e5 * (isLinux ? 4 : 2) || getTrailRemains(!0, 20) <= 0) && showLicensePanel())
      };
    • showLicensePanelIfNeeded = function() {
          1! && !app.setting.inFirstShow && (isLinux && Math.random() < .95 || (!lastShown || new Date - lastShown > 36e5 * (isLinux ? 4 : 2) || getTrailRemains(!0, 20) <= 0))
      };

点评

无限试用不需要修改JS,只需要重置一下注册表就行了。  详情 回复 发表于 2021-11-30 22:16
夜泉 发表于 2021-11-30 04:40
本帖最后由 FleTime 于 2021-11-30 09:14 编辑
iokeyz 发表于 2021-11-29 23:37
太强了,感谢楼主分享!
一个一个的调用 openssl 解密太麻烦了,写了个 python 脚本,放在目录里执行自动 ...

只需要解密 License.js 就可以了。。。

删除
侠骨留香喵 发表于 2021-11-29 16:44
涛之雨 发表于 2021-11-29 16:13
是不是有什么特殊的操作,我咋没尝试成功啊。。。
[mw_shl_code=asm,true]bad decrypt
428 ...

根据大佬们的说明,操作了下。版本1.0.2,asar unpack之后,base64解码后去掉前16字节就是密文。
比如 License.js 这个文件,先对文件进行base64解码,将解码后的文件存储为enc.bin,然后取enc.bin的前16字节作为IV,把enc.bin的前十六字节删掉保存下,然后去用openssl解密。
openssl enc -aes-256-cbc -d -in enc.bin -out dec.js -iv C5FB9AB8FF74A684417F9A00153F3B0C -K 4EE1B382949A024B802F52B4B4FE57F1BEF40853109256E2C20DECA3DD8DD56D
IV 是 C5FB9AB8FF74A684417F9A00153F3B0C ,解密是可以得到 js 文件的。
 楼主| Thomas717 发表于 2021-11-29 18:36
涛之雨 发表于 2021-11-29 09:06
强啊,我只找到了开源库,然后dump到了js
开源库:https://github.com/toyobayashi/electron-asar-encrypt ...

看了一下好像就是这个库,这个密钥就是js加密用的密钥了,测试已经可以解密出源码了。
这个可以对control flow做启发式分析,自动dump出key的,特征非常非常明显。
版主大大如果习惯写Electron,有时间的话要不用这个密钥重写打包一个给大伙用呗哈哈哈哈。
Hack3rHan 发表于 2021-11-29 09:35
Vvvvvoid 发表于 2021-11-29 09:23
尴尬了, 寻求 MarkDown 跨平台替代品

开源跨平台替代品,Mark Text
clanna 发表于 2021-11-29 14:28
好家伙, 刚收费, 就开始了, 不愧是吾爱
涛之雨 发表于 2021-11-29 09:46
云烟成雨 发表于 2021-11-29 09:34
这个密钥是干嘛用的,有了这个密钥还不能注册吧,期待大佬继续努力

就可以解密出js,然后自己改
其实最理想的状态是dll注入,包更新那种
涛之雨 发表于 2021-11-29 09:06
本帖最后由 涛之雨 于 2021-11-29 09:13 编辑

强啊,我只找到了开源库,然后dump到了js
开源库:https://github.com/toyobayashi/electron-asar-encrypt-demo
其实我一直想找一个通用爆破点,
比如植入js或者劫持js等等,反正就是不需要更新重新解包了。。。
不然多麻烦啊
(俗称通用破解补丁)
神幻静 发表于 2021-11-29 09:18
居然还收费了,还好我一直没更新过。。。。
Vvvvvoid 发表于 2021-11-29 09:23
尴尬了, 寻求 MarkDown 跨平台替代品
kotlyne 发表于 2021-11-29 09:25
不更新还能用,哈哈
云烟成雨 发表于 2021-11-29 09:34
这个密钥是干嘛用的,有了这个密钥还不能注册吧,期待大佬继续努力

点评

就可以解密出js,然后自己改 其实最理想的状态是dll注入,包更新那种  详情 回复 发表于 2021-11-29 09:46
Andy6ro 发表于 2021-11-29 09:50
感谢分享~
云烟成雨 发表于 2021-11-29 09:58
涛之雨 发表于 2021-11-29 09:46
就可以解密出js,然后自己改
其实最理想的状态是dll注入,包更新那种

哦豁,不过我觉得现在1.0版本刚出,跟之前的免费版本也没多少变化,我还是直接用以前免费版本算了,等他更新多了再看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 00:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表