V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
h4x3rotab

搜狗用户词库解密工具

  •  
  •   h4x3rotab · Oct 7, 2018 · 11595 views
    This topic created in 2759 days ago, the information mentioned may be changed or developed.

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

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

    用法:

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

    代码发布在 GPLv3 协议之下。

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

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

    谢谢!
    h4x3rotab
        22
    h4x3rotab  
    OP
       Feb 1, 2019
    @motivation 算法已经被整合到了一个对新手更有好的工具里: https://github.com/studyzy/imewlconverter
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1481 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 17:06 · PVG 01:06 · LAX 10:06 · JFK 13:06
    ♥ Do have faith in what you're doing.