掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2886|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。  u# E. i! E$ I- W# a! F
研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。9 [2 A( j7 J+ M7 X# N: g7 L6 K
顺便研究了一下语音库,使用了简单加密,轻松解决。
9 ^' S# s3 L# f$ F  h, I高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。7 J+ h" |6 H& I1 Z. o& }) P% {" c
我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。, u! {" L. x  ^  z  A7 o
有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。
( S) w' R$ I- g3 a目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。2 N7 C5 a  k7 e* W% I+ R
5 G& w* j  L( w& T5 A( a
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。
. f3 H, y8 O+ r9 ^给个文件头自己看看吧:' ^- A: A& Y, [% _
  1. Option Explicit9 V# i$ d% F' s# H

  2. & u1 {- g4 x0 k/ A, W$ i
  3. '金山词霸DIC词库解析
    0 p6 o! I5 o  P8 `0 g/ J  A/ k
  4. 'Kingsoft PowerWord Dic file format:
    1 L: y5 R# I9 u4 H. M" [
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15  h3 b5 u7 a8 B1 Q
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?1 j4 b% I- h$ z, Y! c% L
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?5 @3 }0 s% c  [! T
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    * F7 C; f9 t3 j' ~# C
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00& D" N0 {) L5 P' @: s1 k7 A: y
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x' F' U  a- S4 F$ \2 l
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH, G4 q- z& l- y0 A: q
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    . s) S2 f9 X! o4 `
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c
    0 e) X3 v) X; f3 G# T
  14. '每个zlib块解压后都是163843 D7 S% G% d9 w1 d
  15. Type TCibaDIC
    : }9 ~) h$ I3 v
  16.     lSign As Long '0x4944534b ie KSDI6 p7 K% ~; `2 y% _
  17.     lFileSize As Long 'file size
    ' X7 i4 w8 {; O
  18.     lFileSize1 As Long' x3 x8 Y# p; V6 p( u
  19.     lFileSize2 As Long
    ! m! l6 e, }: A4 w5 z
  20.     lFileCRC32 As Long 'crc32?
    ! ^) g: D8 |3 N
  21.     lNum1 As Long '8
    ' A  X( p. @* F5 W7 A) w
  22.     lNum2 As Long '1
    * e2 d2 P: ?, z
  23.     lFileSizeOrig As Long 'Original file size of decription( j0 j2 i. l. e4 D, Y" W6 t6 ^
  24.     lBlockSize As Long '0x00004000
      L1 M; e2 k, B- r5 g
  25.     lNum4 As Long '0x00020001
    " j% j: E7 o5 K$ F" j; V' P
  26.     lSource_lcid As Long '0x00000804
    $ ?  K% g4 {4 b4 r1 y' j: z" y
  27.     lTarget_lcid As Long '0x00000409
    * U# I6 V6 n9 m" r: F
  28.     lNum5 As Long '0x00000804
    3 }/ Q$ ?9 @7 t# I7 E
  29.     lNumWords As Long '0x1e1d! n0 Z. d2 g! @- n0 `+ O, H. d  N
  30.     lNum6 As Long '0x20: }8 [  K! A+ O0 t% i% a
  31.     lNum7 As Long '0x118 ]4 t' J+ j, l6 F! s6 u
  32.     lNum8 As Long '0x01f4: q7 W' J3 z( S. Y/ v
  33.     lNum9 As Long '0x008 _1 y* y1 [" j5 \: r. n
  34.     lOffStart As Long '0x78
    8 Q; a: @/ k, Q5 o0 P* U. Z
  35.     lOffXML As Long '0x78
    " |: ^4 a8 I1 F" O; _, G+ E# v
  36.     lLenXML As Long '0x07f8
    6 J7 H0 K- P3 c# e& }
  37.     lOffIdxTable As Long '0x78
    * g' T6 J0 F  ?1 a
  38.     lLenIdxTable As Long '0x78
      i' m- _6 l9 u- U
  39.     lOffIdxTable1 As Long '0x78
      Y! _! E; n2 C- S6 z+ Y
  40.     lLenIdxTable1 As Long '0x78
    5 }. y& t! ~  K. }9 ?. V7 A
  41.     lOffIndexTable As Long '0x78
    ) c1 c1 B3 o" a1 z* ~
  42.     lLenIndexTable As Long '0x781 {) r* ?$ L- N7 J
  43.     lOffWordsTable As Long '0x78) ~9 o9 a3 C3 s
  44.     lLenWordsTable As Long '0x78
    7 W% a, P4 \! f# u3 P9 Q( i2 ?
  45. End Type
    8 O5 c8 q) A2 _* K) M
复制代码
  • TA的每日心情
    郁闷
    4 天前
  • 签到天数: 1272 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了
    8 x# z4 r5 C4 y; }& |* Qsuperfan89高手的工具
    6 t" T0 F* g/ a[工具] 金山词霸转Mdict脚本" ~' W$ ?0 O# E$ J, T9 w

    该用户从未签到

    发表于 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-27 09:25 , Processed in 0.058502 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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