掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2882|回复: 5

[专有词库] 金山词霸DIC文件格式简析

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。
" {; ^1 |1 S+ m, k& O研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。
- f' y' `% v( I+ |  }顺便研究了一下语音库,使用了简单加密,轻松解决。$ |' Z- t9 P: {, w0 p( e
高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。0 Z  ]0 Q+ P* [: v- B
我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
5 o9 e) P1 P7 x有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。1 E  N4 G6 K/ O+ a3 Q& B
目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。
# M( n4 N! `* m& y8 N! Y
, v0 [4 u$ F1 b0 Q% \生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。! B" f6 j+ u$ @
给个文件头自己看看吧:
0 B2 @3 {6 y5 S0 H
  1. Option Explicit$ O! m/ ^( ^, p3 }
  2. , F2 ^0 s8 P. C, e9 {
  3. '金山词霸DIC词库解析
    3 j2 R  e! _; c
  4. 'Kingsoft PowerWord Dic file format:& V: g1 u  c. P: z* ?1 e# d) Y
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
    * m/ ], S9 w# o; t; n5 [/ i
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?
    8 \& ~2 ?) E8 w& k% \
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?
    6 B6 U, N' K/ G" F
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @$ H) n, ~) i4 _! ?
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00# V3 Z# ]6 v/ K- }! |
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x% ?3 K7 z) @8 Q6 D% ^9 P# j
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH$ s8 Q2 o5 V# Z: h
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (& p+ m; T7 x+ c: H
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c
    ! ~, F' U& k) ?' u$ O; V1 X5 j. ~
  14. '每个zlib块解压后都是163840 c. o& P9 g7 e+ n6 Q' Y1 y" F5 j
  15. Type TCibaDIC
    9 V" x5 M( M9 E7 `5 Z& ?
  16.     lSign As Long '0x4944534b ie KSDI
    # t: {+ E; X+ ]% z, o
  17.     lFileSize As Long 'file size0 R* _4 W/ a* V' X9 s
  18.     lFileSize1 As Long5 {. E/ R7 e: y; W4 u7 u; z
  19.     lFileSize2 As Long
    - y# E( O& A( n, D1 V0 c) n' {, {
  20.     lFileCRC32 As Long 'crc32?
    $ g' o) z5 B) o! `, A5 v
  21.     lNum1 As Long '8, J. k  i0 c# D% D
  22.     lNum2 As Long '1* f, V# I6 X/ n, ~# k6 `+ z1 Y' k
  23.     lFileSizeOrig As Long 'Original file size of decription
    8 U. O1 j6 p$ X/ w& i# G& @; u5 ?0 ?
  24.     lBlockSize As Long '0x00004000+ ?  }4 l, a  p/ Q$ g0 D
  25.     lNum4 As Long '0x00020001
    . H2 ]3 X6 ~7 M) l# [: I
  26.     lSource_lcid As Long '0x00000804
    ) K' H" t- m0 n3 Q9 _. f
  27.     lTarget_lcid As Long '0x00000409
    9 x/ K: R) ~1 b) J# ?2 {* `0 I
  28.     lNum5 As Long '0x00000804
    8 F- a3 u. y* T: y  z9 C8 {2 Y' _- o
  29.     lNumWords As Long '0x1e1d
    8 i: n% J# }, `, }
  30.     lNum6 As Long '0x20
    1 E' x. C: W' n& |# r, G3 }! T
  31.     lNum7 As Long '0x11$ s0 K: \1 [7 K4 @
  32.     lNum8 As Long '0x01f4# s" W. k0 J* d3 a7 U  }
  33.     lNum9 As Long '0x00
    # a  K$ r" z* c3 W8 j2 L. ~
  34.     lOffStart As Long '0x78
    ( ]$ X0 x3 N$ Q" ^# Y# L& W
  35.     lOffXML As Long '0x78# c' N7 ^' S  Y" {# q6 f' X
  36.     lLenXML As Long '0x07f8
    , _3 o5 k$ T( A0 ?
  37.     lOffIdxTable As Long '0x78
    6 c. u8 o# s8 o2 J9 c2 a2 O
  38.     lLenIdxTable As Long '0x788 P3 G4 S0 U: w) a" ?% ]( w% D2 V
  39.     lOffIdxTable1 As Long '0x78
    ( E7 @6 |5 K4 r% ]4 Z5 \& k
  40.     lLenIdxTable1 As Long '0x78- o4 b: W  e" B
  41.     lOffIndexTable As Long '0x78
    0 ]; f/ y# ~# F7 a5 Z9 ^* P% v
  42.     lLenIndexTable As Long '0x78
    & w6 H4 e% p! w# e1 D
  43.     lOffWordsTable As Long '0x78( J' V7 N" ^' K. q5 n6 ^
  44.     lLenWordsTable As Long '0x78& r6 C) y3 @+ D, }
  45. End Type, U% J0 M6 R; ?$ y8 G
复制代码
  • TA的每日心情
    郁闷
    3 天前
  • 签到天数: 1272 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了+ p' D3 E3 F2 E6 S7 Z, E
    superfan89高手的工具( Q* d  P: O# J0 d6 y9 z8 n
    [工具] 金山词霸转Mdict脚本
    , `# h4 ^* U. n8 A3 ]+ |, `

    该用户从未签到

    发表于 2021-7-10 12:07:06 | 显示全部楼层
    楼主很棒!能制作个生成金山DIC格式词库的工具吗?
  • TA的每日心情
    开心
    2023-12-8 21:55
  • 签到天数: 1273 天

    [LV.10]以坛为家III

    发表于 2021-7-11 19:53:04 | 显示全部楼层
    可考虑解压他的最新金山的东西啊?
  • TA的每日心情

    2022-1-8 11:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2022-1-8 00:14:41 | 显示全部楼层
    666,能不能私聊我,教教我有道ydic在解码
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-26 14:32 , Processed in 0.077120 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表