掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4375|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。
5 q$ G: o3 i: v0 @% _, h研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。
4 r7 P5 S$ F. s) T顺便研究了一下语音库,使用了简单加密,轻松解决。
) P! w% E! |3 J- g" u4 n9 f3 d高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。
& |$ o; b/ q  R7 O& s- k我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
2 h$ J- n3 G# U4 R' |有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。' c3 c9 U9 e! Q
目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。
0 S) x) U# w# s, \* x* U1 |+ h. C- G& `% B; f" E
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。
1 I: D& u) k0 H$ {8 g/ L  O0 r给个文件头自己看看吧:
+ l- J6 G6 c( n* R- c4 |9 n
  1. Option Explicit- ?" ]& ]7 f6 o
  2. 0 A5 Z, Q& \8 [
  3. '金山词霸DIC词库解析( v7 J; R& d: A$ t0 l. M. u
  4. 'Kingsoft PowerWord Dic file format:
    $ j( Z" i% x( P" k
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
    7 @$ ~; p/ W- i' N7 D
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?
    3 q/ P5 N/ Y' ^6 F" X/ m7 S, |8 H8 C
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?
    ! y) ^6 W0 r6 D8 e- b; ?
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @4 S5 }) w' |0 B4 r% U' y
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00
    ' |+ J8 b  W. _- b, [
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x
    " @( j; R- ?6 d9 |, ~; @
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH
    " g& Q$ v$ ]; G$ f2 z9 g
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    * `) U: Z  p4 S7 N
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c6 h8 r! E! l$ K; H6 \& T4 P+ ]8 Y
  14. '每个zlib块解压后都是16384! t7 C* D2 ~: d8 h
  15. Type TCibaDIC
    2 g  Q8 z3 x# L2 F1 G8 h) U- x1 _
  16.     lSign As Long '0x4944534b ie KSDI+ ~* B$ _" Y0 I5 C" s
  17.     lFileSize As Long 'file size. e" N, \: }* o; Y
  18.     lFileSize1 As Long
    ! u5 i: ?3 c' i& L# f; {
  19.     lFileSize2 As Long' t1 Y+ P, ?7 y1 i( z! ?
  20.     lFileCRC32 As Long 'crc32?% Y" v- ?! |4 a
  21.     lNum1 As Long '8
    ( U# w* v2 y) h1 ^! m- M, P  K
  22.     lNum2 As Long '1
    5 \+ `* y% c0 P! l' ]  X9 m
  23.     lFileSizeOrig As Long 'Original file size of decription
    9 o! a1 F8 w6 o7 E0 X! p' Z0 g
  24.     lBlockSize As Long '0x00004000
    : A9 n8 L1 _: h% ~$ k# [, z
  25.     lNum4 As Long '0x00020001  Q8 F2 `5 D" o4 z7 c
  26.     lSource_lcid As Long '0x00000804
    1 u! i" I2 f! d6 I  [
  27.     lTarget_lcid As Long '0x00000409( n8 f3 T6 S+ a" X5 D( e3 b/ P
  28.     lNum5 As Long '0x00000804
    6 }' L( u; c$ v. K% b
  29.     lNumWords As Long '0x1e1d
    7 ^, V5 U- b8 c
  30.     lNum6 As Long '0x202 w7 o* q0 M3 i8 s. g. y8 x: n
  31.     lNum7 As Long '0x11
    1 l9 s; }7 j7 h: W& T# O
  32.     lNum8 As Long '0x01f4% L0 _+ N: J. s) n% ]) N4 k8 N
  33.     lNum9 As Long '0x00. z0 G7 ^% i! A
  34.     lOffStart As Long '0x78" T' y: u5 a! A7 z* B
  35.     lOffXML As Long '0x782 [4 V: C& l) H# m! t/ z2 }# W" y- A+ b& s
  36.     lLenXML As Long '0x07f8! @) [  j8 e; }8 `* h  v! T" ]) e
  37.     lOffIdxTable As Long '0x78
    : V1 u# {( ?3 Q- e7 K1 x# r
  38.     lLenIdxTable As Long '0x786 o$ M0 q  s: ]) S
  39.     lOffIdxTable1 As Long '0x78
    3 V. {! n  B, c8 s
  40.     lLenIdxTable1 As Long '0x78
    / q; j  ^: B5 p
  41.     lOffIndexTable As Long '0x78
    $ Y1 M  ~+ F$ H+ h' j; ?
  42.     lLenIndexTable As Long '0x780 X4 x/ X% A7 e6 S" d8 L
  43.     lOffWordsTable As Long '0x78
    7 ]$ o2 n6 {% {. \2 w* _! B6 a7 P' F
  44.     lLenWordsTable As Long '0x78, A9 g  ~4 O. i+ m( O' i5 Q
  45. End Type# ?1 H+ f: d9 p8 D. G* R- P
复制代码
  • TA的每日心情
    擦汗
    17 小时前
  • 签到天数: 1417 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了; [$ R9 o  T, p4 J  C5 N3 u
    superfan89高手的工具
    ; m$ N9 B* q9 ?! [: r, Q3 ?[工具] 金山词霸转Mdict脚本; [9 |7 {2 {" I

    该用户从未签到

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

    [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-4-19 19:23 , Processed in 0.020014 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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