搜狗用户词库解密工具

2018-10-07 21:12:06 +08:00
 h4x3rotab

https://github.com/h4x3rotab/Sogou-User-Dict-Converter

搜狗从某个版本开始导出的用户词库全部被加密,给迁移到其他输入法造成很大障碍。于是我做了这个工具,可以把导出的 bin 文件转换为词频 TSV 文件,然后就随便怎么玩了。

用法:

python3 parse.py <输入 bin 文件> <输出 tsv 文件>

代码发布在 GPLv3 协议之下。

9730 次点击
所在节点    分享创造
22 条回复
littleMaple
2018-10-07 21:22:59 +08:00
好奇解密原理是什么?搜狗公布了加密算法?
a1058021348
2018-10-07 22:17:53 +08:00
幸亏我一直留着那个词库文件😂
ax521
2018-10-07 22:36:02 +08:00
明天试试。用法能不能说清楚点,看不懂
h4x3rotab
2018-10-07 23:13:47 +08:00
逆向分析
easylee
2018-10-07 23:16:35 +08:00
@h4x3rotab 👍。
h4x3rotab
2018-10-07 23:16:55 +08:00
@ax521 先在搜狗设置里导出用户词库,导出成一个 bin 文件,然后作为命令行传入到 parse.py 里。

第一个参数是输入文件,第二个参数是输出文件。运行之后如果顺利,可以得到一个词频 tsv 文件,可以导入到其他输入法用了。
ax521
2018-10-07 23:29:12 +08:00
@h4x3rotab tsv 文件还能不能转成 txt 文件?
h4x3rotab
2018-10-07 23:56:36 +08:00
@ax521 可以直接用文本编辑器打开
gaupen1186
2018-10-08 00:20:06 +08:00
灰常感谢哈,正需要呢
mztql
2018-10-08 00:26:08 +08:00
好用感谢,8M 转换完是 1.3M ,有一部分输出日志显示'GetData overflow',是没解完全吗
nicoljiang
2018-10-08 12:50:16 +08:00
好东西,支持一下。
ax521
2018-10-08 16:19:54 +08:00
我 15 兆的词库,转化出来才 26k。打开看显示只转化了近期的一部分词,楼主转化出来全部转化了吗?
ax521
2018-10-08 16:29:34 +08:00
![报错.jpg]( https://i.loli.net/2018/10/08/5bbb14815a486.jpg)
报错这个,你看看怎么了?
h4x3rotab
2018-10-08 18:44:05 +08:00
@ax521 terminal 编码的问题?
ax521
2018-10-09 07:12:58 +08:00
@h4x3rotab 那该怎么办?
ax521
2018-10-09 08:28:01 +08:00
@h4x3rotab 那个编码对应韩文。但我没输入过韩文
NotNil1
2018-10-10 14:56:37 +08:00
搜狗会保存我输入的数据吗?
GuryYu
2018-10-10 17:17:31 +08:00
@h4x3rotab 执行过程中报错了, 解密出来的文件只有原始文件的十分之一大小, 这个正常吗
h4x3rotab
2018-10-12 10:41:16 +08:00
@GuryYu 这个警告是正常的,那个原始文件里面还有很多其他乱七八糟的东西没解出来
AuroraN
2018-10-16 15:23:37 +08:00
报错,报销信息如下:
hashstore [ offset: 2554880, count: 0 ]
Traceback (most recent call last):
File "/Users/Aurora/Source/Python/Algorithm/sougoUserDictConvert.py", line 432, in <module>
word = DecryptWordsEx(word_base, word_info.p1, usr_header.p2, usr_header.p3)
File "/Users/Aurora/Source/Python/Algorithm/sougoUserDictConvert.py", line 262, in DecryptWordsEx
dec_lstr.string = decwords.decode('utf-16')
UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 4-5: unexpected end of data

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/495403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX