背景
Maccy是一个不错的剪切板管理工具,可以利用它把很多命令自动管理起来。本文记录根据开源源码,读取Maccy的数据库获取存储的命令的方法,以方便做备份等功能
探索
根据开源仓库中storage的内容:https://github.com/p0deje/Maccy/blob/master/Maccy/Storage.swift,可以看到Maccy是sql的数据库,可以用sqlite3读取sqlite3 "/Users/vincent/Library/Containers/org.p0deje.Maccy/Data/Library/Application Support/Maccy/Storage.sqlite"
。读取的路径可以从活动管理器获取
然后用查看有哪些表:.table
基本推测是:ZHISTORYITEM
表
然后将ZHISTORYITEM表导出
生成的ZHISTORYITEM_export.csv文件打开查看,可以看到使用过的一些命令:
具体命令:
$ sqlite3 "/Users/vincent/Library/Containers/org.p0deje.Maccy/Data/Library/Application Support/Maccy/Storage.sqlite"
SQLite version 3.43.2 2023-10-10 13:08:14
Enter ".help" for usage hints.
sqlite> .table
ACHANGE ZHISTORYITEM Z_MODELCACHE
ATRANSACTION ZHISTORYITEMCONTENT Z_PRIMARYKEY
ATRANSACTIONSTRING Z_METADATA
sqlite> .tables
ACHANGE ZHISTORYITEM Z_MODELCACHE
ATRANSACTION ZHISTORYITEMCONTENT Z_PRIMARYKEY
ATRANSACTIONSTRING Z_METADATA
sqlite> .output ZHISTORYITEM_export.csv
sqlite> .mode csv
sqlite> SELECT * FROM ZHISTORYITEM;
sqlite> .quit
其他
开源仓库路径:https://github.com/p0deje/Maccy/blob/master/Maccy/Storage.swift
利用AI分析开源代码提问,然后结合活动管理器确定路径。
综述
探索过程中最开始用lsof查不到Maccy打开的,然后用活动监视器搜索到sqlite,并且结合代码用AI自动分析Maccy的代码,虽然不懂swift语法,可以直接帮忙解决。另外,可以用该方式将某些命令写入sql,玩法比较多。