本文仅用于学习和研究,不建议绕过 Typora 的正版授权机制。请合理使用,支持优秀的软件开发者!
一、项目背景
Typora 是一款极致优雅的 Markdown 文档编辑器,并提供手写样台体高度达成的手写组织体验。
Typora 原本是免费软件,但在进入正式发布版本后,已改为付费软件,无论是 Windows 还是 macOS,都有试用时间限制。
在试用期结束后,Typora 需要正版授权才能继续使用。那么,还有没有可能通过保留试用状态,实现同样效果的方法呢?
二、Typora 配置文件分析
Typora 在 Windows 上会把用户配置存储在
%APPDATA%\Typora\profile.data该文件本质是一个被 UTF-8 编码后再转换为 16 进制的 JSON 文件,我们可以将其转为 JSON,分析其中包含如下样的日期字段:
"_iD": "3/18/2025"非常明显,这是用于记录试用开始时间的字段。而 Typora 同步上下没有与服务器校验,那么,我们只需要修改这个日期,就有可能重新启动试用。
三、Python 脚本实现“日期重置试用”
import os
import json
from datetime import datetime
def hex_to_json(hex_str):
return json.loads(bytes.fromhex(hex_str).decode('utf-8'))
def json_to_hex(data):
json_str = json.dumps(data, separators=(',', ':'))
return json_str.encode('utf-8').hex()
def get_today_date_str():
today = datetime.today()
return f"{today.month}/{today.day}/{today.year}" # M/D/YYYY
def fix_path(path: str):
return path.replace("\\", "\\\\")
def main():
file_path = os.path.expandvars(r"%APPDATA%\\Typora\\profile.data")
if not os.path.exists(file_path):
print(f"\u6587\u4ef6\u4e0d\u5b58\u5728\uff1a{file_path}")
return
with open(file_path, "r", encoding="utf-8") as f:
hex_input = f.read().strip()
try:
data = hex_to_json(hex_input)
except Exception as e:
print("\u89e3\u6790\u5931\u8d25\uff0c\u8bf7\u786e\u8ba4\u6587\u4ef6\u5185\u5bb9\u662f hex \u7f16\u7801\u7684 JSON\u3002")
print("\u9519\u8bef\u4fe1\u606f\uff1a", e)
return
today_str = get_today_date_str()
data["_iD"] = today_str
print(f"\u5df2\u5c06 _iD \u66f4\u65b0\u4e3a\uff1a{today_str}")
if "pinFolder" in data:
data["pinFolder"] = fix_path(data["pinFolder"])
modified_hex = json_to_hex(data)
with open(file_path, "w", encoding="utf-8") as f:
f.write(modified_hex)
print("\u4fee\u6539\u6210\u529f \u2705")
print(f"\u65b0\u5185\u5bb9\u5199\u5165\uff1a{file_path}")
if __name__ == "__main__":
main()四、实验效果
- 每次运行脚本后,Typora 重启后会重新进入试用状态
- 每日更新一次即可“续杯”
五、结论 & 提示
- 实现简单。Typora 试用状态存储于本地,无服务器校验
- 无需纯删除文件,只修改日期即可
- 支持开源优秀软件,Typora 值得购买
