掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4430|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。
, a1 J2 Q$ L5 c9 L9 S: h研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。6 |7 J! E+ M3 j* ^3 w! z) y+ i
顺便研究了一下语音库,使用了简单加密,轻松解决。
; h' Q2 r" f, Y" W& o高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。3 t; S& x) r* Y4 I+ j& j
我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
8 f5 M( M0 V/ F9 h0 R1 ^! L- e& w有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。
5 x8 C" v. o# n9 Y' w目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。
1 ~& G' C, k4 g2 p1 p# }3 [/ z% q4 I" y/ i8 A
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。% u' h; l" J! o, q. m/ A& K
给个文件头自己看看吧:4 E5 S( h. n6 B: x( c2 T" N
  1. Option Explicit
    6 Y( v2 U/ e: V9 P! ]+ O% `9 T

  2. ) X& s( S; T- H: j0 L$ d6 U
  3. '金山词霸DIC词库解析) o" |- U0 f% G8 g+ ~
  4. 'Kingsoft PowerWord Dic file format:
    9 z- c0 H9 T+ G  o1 d. ]6 l, f
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
    9 {9 }" l+ T8 d7 e$ ?
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?& E* W" @, D; G$ F) j% e
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?
    % b8 y( m) N2 Y( `% ]& e& I" H
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    6 r+ y  e& I! P
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 004 c4 f2 B% U: \& Y) V: y$ X% i
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x
    1 H. H9 Z3 T1 I# y' v8 r( T, K9 V
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH
    ' b- z9 H4 L* l2 _, |; n8 v$ v5 M
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (2 W; ?" w7 N( ?; Z1 L6 [- Z
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c4 c9 b7 b. C- ?  l+ a" ?5 j* I
  14. '每个zlib块解压后都是16384
    ; V% i: e: j% Q4 S
  15. Type TCibaDIC
    ; r1 ]4 |0 @1 ]
  16.     lSign As Long '0x4944534b ie KSDI& f" O6 |+ z8 ^5 O0 u
  17.     lFileSize As Long 'file size
    4 Z1 z: z. i. z  z
  18.     lFileSize1 As Long
    : l0 v1 }) @5 `; |; _
  19.     lFileSize2 As Long
    4 H0 t" q  x' Y  k& v8 I" w7 M. P
  20.     lFileCRC32 As Long 'crc32?
    % v2 N$ i' F5 i+ O0 d; p3 M$ M
  21.     lNum1 As Long '8
    5 L: Z0 u2 W7 f9 }- i
  22.     lNum2 As Long '1
    , y% q/ O$ Q& j; l0 P5 q3 o* T$ @
  23.     lFileSizeOrig As Long 'Original file size of decription
    & ~; O; e. n; W) `2 G9 O- x
  24.     lBlockSize As Long '0x00004000
    ' T/ j+ P! _1 P8 k# }. @
  25.     lNum4 As Long '0x00020001
      j" n: G' _; Z) m. U: Q
  26.     lSource_lcid As Long '0x000008046 }! A. E& `% W) E  T3 ]3 N
  27.     lTarget_lcid As Long '0x00000409
    3 b4 U  d2 r; f' x$ _8 r9 a
  28.     lNum5 As Long '0x00000804% S8 p% n4 X* \" F& D+ J
  29.     lNumWords As Long '0x1e1d
    ; a+ E5 ?3 Z- S/ C) g
  30.     lNum6 As Long '0x20) A" b) O" D1 U. a  @
  31.     lNum7 As Long '0x115 H$ \2 w" U; b- D& j
  32.     lNum8 As Long '0x01f4
      h. A- @, M/ r& v
  33.     lNum9 As Long '0x003 |5 e7 K, ^$ k/ _$ r0 c2 R
  34.     lOffStart As Long '0x78; m/ X0 ?& Z' j, ^( H1 a7 \: l& _
  35.     lOffXML As Long '0x78
    - @. }4 L5 u* z) m1 ~7 r. e* w
  36.     lLenXML As Long '0x07f8" ?7 Z* k5 u! ]: h0 L' Q
  37.     lOffIdxTable As Long '0x78& y. Z) [8 }! }# Y
  38.     lLenIdxTable As Long '0x78
    " W9 w) I0 ?5 r4 U' D
  39.     lOffIdxTable1 As Long '0x78
    6 W7 ]1 ?4 Q) |
  40.     lLenIdxTable1 As Long '0x78
    9 I8 F0 I0 m1 [' F! M- T
  41.     lOffIndexTable As Long '0x78; x  t' P3 U, V9 J2 |% A
  42.     lLenIndexTable As Long '0x78
    1 C2 l' p0 x1 V/ A  B& N
  43.     lOffWordsTable As Long '0x78
    # A: k! o, ^0 E" \$ v5 }# K
  44.     lLenWordsTable As Long '0x78
    5 j) [- m5 D9 g$ J7 i
  45. End Type
    & f7 ]0 t& [" g8 k5 J
复制代码
  • TA的每日心情

    19 小时前
  • 签到天数: 1423 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了
    8 ]* ]9 v$ P/ H/ ~superfan89高手的工具( }0 z+ {; b4 B! V0 p( B& T
    [工具] 金山词霸转Mdict脚本
    * Y+ r  J" [5 D- J, c* h

    该用户从未签到

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

    [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, 2025-5-2 22:31 , Processed in 0.021828 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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