掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 6007|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。
* C2 z  g* Y4 q, B2 q4 @研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。3 ^6 C$ r% M8 H3 B3 n4 Q
顺便研究了一下语音库,使用了简单加密,轻松解决。5 g' `/ i3 _6 b* a7 K
高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。+ U& f4 n+ @& Z! y
我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
( c$ K' j5 X2 u& W有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。
0 o5 ?0 |& }5 ~) Q  r目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。! T4 P8 s) u% s( q
5 }9 h0 F% q1 ?7 g
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。
; N  c" `/ H" n4 j+ p给个文件头自己看看吧:, U% ?* I& U# l. y7 p, U/ z* s
  1. Option Explicit% ]$ t- S- ^0 S0 L6 R7 @& \

  2. # Q; e& J) L! I
  3. '金山词霸DIC词库解析
    4 b2 f* g% R% i: r# R4 q
  4. 'Kingsoft PowerWord Dic file format:
    / |3 k. o7 d3 q/ j$ ]7 @/ ~. j4 X
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
    , R: H' x8 }7 i* D/ ?
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?$ {% L4 }# }; V/ k+ P- R* \
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?
    1 [2 j: Q6 A3 ^" I) H" U* v0 k
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @/ u- }/ C4 V8 J! G: h/ {) U. M% E
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00
    3 z" `9 i2 S2 T/ y' y
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x6 I! d7 {8 {0 F! w9 i
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH" j! r9 Z7 x4 t
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (* Z( N  N5 d. @
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c
    6 K( e7 Y" B( D* ~/ A' b
  14. '每个zlib块解压后都是16384
    6 i8 [0 S- ^$ C  x$ K% V: |. G
  15. Type TCibaDIC! S) X1 c0 O" b, G
  16.     lSign As Long '0x4944534b ie KSDI: h+ R' |2 Y0 Z
  17.     lFileSize As Long 'file size
    - V( D* C: [. m. {; c
  18.     lFileSize1 As Long
    , _# K: G2 i( p3 i
  19.     lFileSize2 As Long* Q3 w: O# K' _4 x3 J: M$ M
  20.     lFileCRC32 As Long 'crc32?! }, i% \' S/ z% ]2 W- }4 I
  21.     lNum1 As Long '8
    9 P. i2 ~# _' Z# D
  22.     lNum2 As Long '1
    0 w" n. |2 o! F" o. }
  23.     lFileSizeOrig As Long 'Original file size of decription
    ; G  U# Y& O  ^. q2 L, G, n: x
  24.     lBlockSize As Long '0x00004000+ o. k) o& G0 z" e8 g3 C1 B+ e
  25.     lNum4 As Long '0x00020001& W0 G+ W/ G2 s& K; g0 |1 ?
  26.     lSource_lcid As Long '0x00000804
    " o0 v$ R- k! [* f" n% E$ g% _
  27.     lTarget_lcid As Long '0x00000409
    & G( y3 t- X. Y& s% J7 J
  28.     lNum5 As Long '0x00000804+ N1 W* r5 k# h
  29.     lNumWords As Long '0x1e1d
    5 N; M9 B8 B. I+ V: C
  30.     lNum6 As Long '0x20" R; O+ S' v  K+ F+ \7 x
  31.     lNum7 As Long '0x11
    5 N& v/ @) t1 s. d# e9 ~! O
  32.     lNum8 As Long '0x01f4! I) l% K& \0 _4 T$ R9 A0 K9 v$ m
  33.     lNum9 As Long '0x00
    ) `1 ^+ }4 d! ?& m( l
  34.     lOffStart As Long '0x783 t2 [" L  Y+ X4 c
  35.     lOffXML As Long '0x78$ }: h  e4 C- G+ [) Z/ Y( `- U
  36.     lLenXML As Long '0x07f8
    8 {# z. _& L* L5 H
  37.     lOffIdxTable As Long '0x78
    8 S2 M3 Y: [$ A
  38.     lLenIdxTable As Long '0x78* o* W1 X  f3 D/ I
  39.     lOffIdxTable1 As Long '0x78
    2 d8 z- k: Z+ T# g" S' W* k
  40.     lLenIdxTable1 As Long '0x78
    ' _  P( K5 Z, V
  41.     lOffIndexTable As Long '0x781 S; a, R, z: T8 N2 ~+ \- h( i0 ?. V
  42.     lLenIndexTable As Long '0x78* U0 o' d( U% `& V
  43.     lOffWordsTable As Long '0x78) h& o6 S7 C! C) f8 A, R; ]
  44.     lLenWordsTable As Long '0x78* a) t: A. Y& e
  45. End Type& @6 ?! F* X5 X- P
复制代码
  • TA的每日心情

    昨天 02:41
  • 签到天数: 1626 天

    [LV.Master]伴坛终老

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了( @1 e* Q7 A/ X, A- q3 a6 F
    superfan89高手的工具
    - ]) I1 P$ X  Z. Q- o[工具] 金山词霸转Mdict脚本' t( N9 ~: a% k

    该用户从未签到

    发表于 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-7-13 06:14 , Processed in 0.017877 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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