搜狗用户词库解密工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
h4x3rotab
V2EX    分享创造

搜狗用户词库解密工具

  •  
  •   h4x3rotab 2018-0-07 21:12:06 +08:00 10794 次点击
    这是一个创建于 2560 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    用法:

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

    代码发布在 GPLv3 协议之下。

    第 1 条附言    2019-02-01 02:38:07 +08:00
    解密逻辑已经被整合到了一个对用户更有好的 GUI 工具下:
    https://github.com/studyzy/imewlconverter
    22 条回复    2019-02-01 02:37:23 +08:00
    littleMaple
        1
    littleMaple  
       2018-10-07 21:22:59 +08:00
    好奇解密原理是什么?搜狗公布了加密算法?
    a1058021348
        2
    a1058021348  
       2018-10-07 22:17:53 +08:00 via iPhone   1
    幸亏我一直留着那个词库文件
    ax521
        3
    ax521  
       2018-10-07 22:36:02 +08:00 via Android
    明天试试。用法能不能说清楚点,看不懂
    h4x3rotab
        4
    h4x3rotab  
    OP
       2018-10-07 23:13:47 +08:00 via iPhone   1
    逆向分析
    easylee
        5
    easylee  
       2018-10-07 23:16:35 +08:00 via Android
    h4x3rotab
        6
    h4x3rotab  
    OP
       2018-10-07 23:16:55 +08:00 via iPhone
    @ax521 先在搜狗设置里导出用户词库,导出成一个 bin 文件,然后作为命令行传入到 parse.py 里。

    第一个参数是输入文件,第二个参数是输出文件。运行之后如果顺利,可以得到一个词频 tsv 文件,可以导入到其他输入法用了。
    ax521
        7
    ax521  
       2018-10-07 23:29:12 +08:00 via Android
    @h4x3rotab tsv 文件还能不能转成 txt 文件?
    h4x3rotab
        8
    h4x3rotab  
    OP
       2018-10-07 23:56:36 +08:00
    @ax521 可以直接用文本编辑器打开
    gaupen1186
        9
    gaupen1186  
       2018-10-08 00:20:06 +08:00 via Android
    灰常感谢哈,正需要呢
    mztql
        10
    mztql  
       2018-10-08 00:26:08 +08:00
    好用感谢,8M 转换完是 1.3M ,有一部分输出日志显示'GetData overflow',是没解完全吗
    nicoljiang
        11
    nicoljiang  
    PRO
       2018-10-08 12:50:16 +08:00
    好东西,支持一下。
    ax521
        12
    ax521  
       2018-10-08 16:19:54 +08:00
    我 15 兆的词库,转化出来才 26k。打开看显示只转化了近期的一部分词,楼主转化出来全部转化了吗?
    ax521
        13
    ax521  
       2018-10-08 16:29:34 +08:00
    ![报错.jpg]( https://i.loli.net/2018/10/08/5bbb14815a486.jpg)
    报错这个,你看看怎么了?
    h4x3rotab
        14
    h4x3rotab  
    OP
       2018-10-08 18:44:05 +08:00 via iPhone
    @ax521 terminal 编码的问题?
    ax521
        15
    ax521  
       2018-10-09 07:12:58 +08:00 via Android
    @h4x3rotab 那该怎么办?
    ax521
        16
    ax521  
       2018-10-09 08:28:01 +08:00 via Android
    @h4x3rotab 那个编码对应韩文。但我没输入过韩文
    NotNil1
        17
    NotNil1  
       2018-10-10 14:56:37 +08:00
    搜狗会保存我输入的数据吗?
    GuryYu
        18
    GuryYu  
       2018-10-10 17:17:31 +08:00
    @h4x3rotab 执行过程中报错了, 解密出来的文件只有原始文件的十分之一大小, 这个正常吗
    h4x3rotab
        19
    h4x3rotab  
    OP
       2018-10-12 10:41:16 +08:00 via iPhone
    @GuryYu 这个警告是正常的,那个原始文件里面还有很多其他乱七八糟的东西没解出来
    AuroraN
        20
    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
    motivation
        21
    motivation  
       2018-11-07 15:02:40 +08:00
    可以告知一下如何使用嘛,我是纯小白,现在已经装好了 python3 和下载好了 GITHUB 上的文件,搜狗的.bin 文件也导出完成了,那么接下来需要做什么呢。

    谢谢!
    h4x3rotab
        22
    h4x3rotab  
    OP
       2019-02-01 02:37:23 +08:00
    @motivation 算法已经被整合到了一个对新手更有好的工具里: https://github.com/studyzy/imewlconverter
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2706 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 11:27 PVG 19:27 LAX 04:27 JFK 07:27
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86