掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4388|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。
0 j" Z2 O* c+ E+ \研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。' s1 i5 P- ~0 H7 q* ~/ i
顺便研究了一下语音库,使用了简单加密,轻松解决。
' N2 k/ l' |/ d; j3 w4 s8 D: c高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。( O( \) V2 P8 E% j: V' T# J6 O! [
我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。1 n: i: |3 m% ~$ L: b# K
有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。
4 }$ v& c# a* H. ~5 i" U目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。
4 V" W6 y& W0 h& q* h/ y4 T' D$ X' P
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。. p! L/ e0 Z( R/ I, o$ j: I
给个文件头自己看看吧:1 C  L1 X9 s) Q& ]
  1. Option Explicit9 Z5 e) c; e( J) F% \

  2. 7 R4 }/ S% Z; R" \! V
  3. '金山词霸DIC词库解析& m7 b3 p; y% J* v: i: U0 W
  4. 'Kingsoft PowerWord Dic file format:
    - b! e: }: {& R# l) p
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15+ X" F1 F0 {& {% H
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?6 p+ ~+ f0 N& O" ]5 G
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?
    - y2 Y5 R- r6 E( h8 M8 G7 E1 f
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    & }  ?' l! D0 \- B! |4 ?+ h2 S
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00& ^7 M: J' [8 l6 U; q# j6 D
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x7 v. ]7 t$ |6 g: A7 E+ N
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH
    ) d) ^8 @% B) p. n/ F) k
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    ( ~' a3 l$ Y1 p$ }3 V5 X0 Z* B7 e. ?! u
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c3 \( z7 F9 }! j' O( o* O
  14. '每个zlib块解压后都是16384. _5 a  P4 ]$ I
  15. Type TCibaDIC) k& z: i6 \- R* Y" C7 ^
  16.     lSign As Long '0x4944534b ie KSDI
    5 F$ l' o% F" f. ]" n3 p/ e
  17.     lFileSize As Long 'file size$ R; H3 u# a6 X3 p3 ~- c7 n6 B
  18.     lFileSize1 As Long
    2 U, w' b6 r! P4 p- a3 v# N
  19.     lFileSize2 As Long
    4 c. {% Z0 i; e& G
  20.     lFileCRC32 As Long 'crc32?. p$ z' L: Z* o! E
  21.     lNum1 As Long '8
    ( j) X  ~/ ~0 O  e
  22.     lNum2 As Long '1( t  B" e. @- Z8 w
  23.     lFileSizeOrig As Long 'Original file size of decription
    5 Z' {5 z' x3 |$ ]4 X
  24.     lBlockSize As Long '0x00004000
    2 X5 e5 Z6 h$ E* c$ P7 A
  25.     lNum4 As Long '0x00020001' f' c) U& Y: @6 _# i; o
  26.     lSource_lcid As Long '0x00000804
    ; v( [* X2 i7 H3 i8 M
  27.     lTarget_lcid As Long '0x000004091 E: P2 f. K& l' I' W3 ^6 }
  28.     lNum5 As Long '0x00000804
    ( }. O. A, e2 U+ K+ W( A
  29.     lNumWords As Long '0x1e1d
    $ J  W* u" Z8 F% W5 R
  30.     lNum6 As Long '0x20# M- J  S5 b9 p0 X& L
  31.     lNum7 As Long '0x11
    + Q5 l" [- h6 s# T! j
  32.     lNum8 As Long '0x01f4/ B" J& T( {, j2 k8 [8 T
  33.     lNum9 As Long '0x00
    1 I2 Z1 [$ l  _
  34.     lOffStart As Long '0x78$ k( U. l* l9 t; L( R8 f+ W
  35.     lOffXML As Long '0x787 \2 o' A+ B3 _
  36.     lLenXML As Long '0x07f8* h1 n. x+ h; ?
  37.     lOffIdxTable As Long '0x78! i2 A1 `7 e, }! i
  38.     lLenIdxTable As Long '0x78' l- S7 v7 ^$ F+ \  B( T
  39.     lOffIdxTable1 As Long '0x78
    ! Q+ Z) Y( \4 J# [8 _
  40.     lLenIdxTable1 As Long '0x78
    # j4 n" H: L! L: U+ Q+ L5 Z& g
  41.     lOffIndexTable As Long '0x78
    5 [% [; k$ ?9 f
  42.     lLenIndexTable As Long '0x78
    3 G: j, [! O5 A1 M/ w
  43.     lOffWordsTable As Long '0x784 H) R; |- D; Q: [7 f
  44.     lLenWordsTable As Long '0x788 V* t6 `4 X/ c  t! X
  45. End Type$ v2 h( M2 M2 E0 R. G0 ~
复制代码
  • TA的每日心情
    难过
    昨天 02:09
  • 签到天数: 1419 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了' J& T6 F% C" y- `8 e7 m, Z+ L
    superfan89高手的工具! b% u7 g. v. g( i, O) \7 U
    [工具] 金山词霸转Mdict脚本( W- ]; Z8 ^1 m/ A* s8 A2 v

    该用户从未签到

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

    [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-22 22:47 , Processed in 0.021113 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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