掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 6365|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。
2 ?7 E2 q, ?3 L9 H( v5 j5 |8 G研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。
" s. p# Q' S# F- K5 N# {/ {顺便研究了一下语音库,使用了简单加密,轻松解决。
) J/ b2 Y- s. ?# M4 b高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。4 K- q; J. }+ P/ m1 {8 O
我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。  \4 ], m9 T' A" V8 r9 Z. j
有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。
  G% P" W* x* |; F目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。# i9 ?9 Q" m3 o" U1 r' p2 c

; I) m& ]) Q4 A$ |生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。% ?& ^/ w$ ~9 \0 d
给个文件头自己看看吧:
2 _& z/ t+ l4 r! `- K% _2 |- q
  1. Option Explicit
    ) l/ x4 A0 e6 d3 G% r5 N0 _6 I
  2. / J8 F" x2 w! U* z- f  \
  3. '金山词霸DIC词库解析
    0 n) S6 j+ e" p# b* S
  4. 'Kingsoft PowerWord Dic file format:
    % Q( Z9 E7 i6 T
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
    ; f# |' I; P7 N) Y
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?
    - w+ s+ S/ i/ s: q( z& ^
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?
    " T9 ~  z- N  Q% ^, I/ F
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    " `! M- b* \' y9 w
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00) ]2 V6 V+ ~: i, C
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x8 q9 ^, |$ ^: p6 ]% j8 ]
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH' D6 `) S0 l$ t; m- ~8 y- O" e! |
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    : _& F# C, o/ g/ e2 l, t
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c- g8 h# D) p' c  t" r
  14. '每个zlib块解压后都是16384
      e$ E  Z1 p+ ^+ N% C* F. a  p% F  s* b
  15. Type TCibaDIC
    # i* O2 ?# X: A8 y5 H
  16.     lSign As Long '0x4944534b ie KSDI, V8 E, ~$ F0 O5 e
  17.     lFileSize As Long 'file size
    9 }6 c" P* Y: h
  18.     lFileSize1 As Long
    ) e6 m1 C/ X. [3 m; v
  19.     lFileSize2 As Long, M/ V$ z. \% ]1 S6 G3 J
  20.     lFileCRC32 As Long 'crc32?
    7 K" J6 B6 r/ L  M% ]
  21.     lNum1 As Long '8
    ) c3 @8 \5 c( h2 x7 s) P
  22.     lNum2 As Long '1* D% }1 l# e% @. B& a1 E  {' C/ H: ~
  23.     lFileSizeOrig As Long 'Original file size of decription
    % K8 F$ p( n4 v& m  q
  24.     lBlockSize As Long '0x00004000
    ( Y! g! s/ ~+ _- s5 X
  25.     lNum4 As Long '0x00020001) A8 M5 w# ~" j  s% x* v# A
  26.     lSource_lcid As Long '0x00000804
    ; u* Q- x" U" v; k& M" U& {' X
  27.     lTarget_lcid As Long '0x00000409
    5 b8 k1 ?8 w6 ^
  28.     lNum5 As Long '0x00000804: M3 n+ T& J  p5 e. e/ z0 ^0 ~
  29.     lNumWords As Long '0x1e1d) l* Y6 G; p! ?; f# W( G
  30.     lNum6 As Long '0x202 z7 J0 h  h* w+ s
  31.     lNum7 As Long '0x11. Y) ]) t1 w7 F2 Y
  32.     lNum8 As Long '0x01f4, G2 x4 X  @1 K# p
  33.     lNum9 As Long '0x000 w3 B5 X; A7 M) }5 X5 o8 d# [5 }
  34.     lOffStart As Long '0x787 G+ t; m1 u  V: w% y
  35.     lOffXML As Long '0x786 E- V# E2 }' z. T4 ^1 Q
  36.     lLenXML As Long '0x07f8$ R4 r( {$ n% J+ |8 |& z
  37.     lOffIdxTable As Long '0x78! ?: `4 a! S$ y- D
  38.     lLenIdxTable As Long '0x780 r0 Q, A5 G' ^) O$ f2 `% @1 ]
  39.     lOffIdxTable1 As Long '0x78. N' }. i3 z2 d# }$ D8 k0 A
  40.     lLenIdxTable1 As Long '0x788 T0 e" L5 ^' A7 V& P1 @8 j" |+ J
  41.     lOffIndexTable As Long '0x78+ H- v" B  Q: J* j
  42.     lLenIndexTable As Long '0x78
    6 I0 p0 v5 d* T# J0 p3 X8 R. ?
  43.     lOffWordsTable As Long '0x78
    * I( {/ B* G/ M( y! x) z% q4 V
  44.     lLenWordsTable As Long '0x78
    " d5 S. {! H% d
  45. End Type
    / c  q: X' s2 O2 N
复制代码
  • TA的每日心情
    慵懒
    昨天 02:07
  • 签到天数: 1695 天

    [LV.Master]伴坛终老

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了
    5 q  l7 K. ?) j- y3 K2 Ysuperfan89高手的工具9 {5 v+ @8 Q# F5 T
    [工具] 金山词霸转Mdict脚本( i& r9 B- \* ^! e/ X; h

    该用户从未签到

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

    [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, 2026-10-21 05:21 , Processed in 0.023746 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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