掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 6141|回复: 5

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

[复制链接]

该用户从未签到

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

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。, a" l3 B" v: [  S. K7 p
我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
/ ^6 S+ _, K! g2 |有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。
0 r6 F+ b4 ~& p; P目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。
) X% N3 P. w6 ^2 \  r4 I3 ?' q$ E$ I9 k' I" g, F0 _) N) ?
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。
# `. w% w9 ?$ c1 e/ p给个文件头自己看看吧:( X, q7 d) x: K5 q
  1. Option Explicit
    % ^% S0 G% V: W; T+ N, y
  2.   }4 N6 R, z9 s7 |: U+ P3 o0 ?2 S
  3. '金山词霸DIC词库解析- k2 ~+ y2 k& M' h- y2 `
  4. 'Kingsoft PowerWord Dic file format:+ _# r8 k' Z; ?5 [
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 158 S- W% m3 w- B: s6 }6 U, C
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?
    3 v$ T! E- w& r5 @1 l
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?% Y  I. c& I" g* p
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    5 Y$ c  \$ I( B5 O) c: d
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00' d+ c0 Q& {$ Z) m" C. `& D) D
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x
    . ]" ?! ^$ s4 d7 H* i
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH. Z! w8 e* h2 p$ q
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (, A4 f9 |& r8 ~5 }% A
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c7 e, E/ g" w* ^( a' A1 q
  14. '每个zlib块解压后都是16384
    6 q* i& C7 a- H6 T* I0 o( n
  15. Type TCibaDIC
    ; y: p, A7 z( l0 z
  16.     lSign As Long '0x4944534b ie KSDI1 P1 \' Q6 Z" m: ~1 U
  17.     lFileSize As Long 'file size  d4 H9 A$ }- I1 K/ T9 R# P: o
  18.     lFileSize1 As Long1 [7 o' w* p: j7 H$ b0 ?6 s- T
  19.     lFileSize2 As Long# W/ a/ ?; n# M* ]& V* z' N
  20.     lFileCRC32 As Long 'crc32?
    4 n# \4 Z6 Y/ h4 P  R; @# j
  21.     lNum1 As Long '8$ N1 q/ H( l- Q/ e: i7 W% |- H' Y, W
  22.     lNum2 As Long '1& \; v2 m- S. u$ q
  23.     lFileSizeOrig As Long 'Original file size of decription  `" F: M  f6 ?0 e
  24.     lBlockSize As Long '0x00004000- J# q2 g1 p, K! e% o; a" k1 h
  25.     lNum4 As Long '0x00020001' G$ Z/ Y4 x) X2 s
  26.     lSource_lcid As Long '0x00000804
    7 {* X! u, K- O* E! J* V- ]. I! a
  27.     lTarget_lcid As Long '0x00000409
    1 ~/ m0 A+ M: L0 P5 _2 x
  28.     lNum5 As Long '0x000008048 w$ ]% e; r: [
  29.     lNumWords As Long '0x1e1d/ X8 C4 a" K: C0 _
  30.     lNum6 As Long '0x20/ v. w( F7 L+ ~; J& Y( P2 p
  31.     lNum7 As Long '0x115 A3 y; X0 z5 k7 E
  32.     lNum8 As Long '0x01f4
    0 b$ A! z2 G: d
  33.     lNum9 As Long '0x007 _. ^* z  s# g# d0 E+ P4 j& _
  34.     lOffStart As Long '0x78+ _+ d* D& x6 R& C! U/ ?% M
  35.     lOffXML As Long '0x78
    # a; b2 E- p  m% x. l. s3 c! L
  36.     lLenXML As Long '0x07f88 b7 u* x7 n& G) D- S& m
  37.     lOffIdxTable As Long '0x78/ m8 S$ v" Q) W: e
  38.     lLenIdxTable As Long '0x780 r. Z; H* l+ |  a: c. y
  39.     lOffIdxTable1 As Long '0x78
    / }! {' g2 \2 X
  40.     lLenIdxTable1 As Long '0x78% {* T  u! A! P
  41.     lOffIndexTable As Long '0x78
    8 o% F1 C8 d8 n
  42.     lLenIndexTable As Long '0x78
    2 }, E; {& S$ o' J( R% F
  43.     lOffWordsTable As Long '0x78
    ! S! ~1 l9 Q7 T  K" P
  44.     lLenWordsTable As Long '0x78
      \* _+ O, M3 v1 q3 s1 [
  45. End Type
    7 q4 }( F; b5 x. Y3 ^' K2 v
复制代码
  • TA的每日心情

    前天 03:21
  • 签到天数: 1657 天

    [LV.Master]伴坛终老

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了% V0 {) @+ H* x' [9 P3 z/ P
    superfan89高手的工具
    1 `( [9 Y0 ^) [+ c0 o8 X) |  d[工具] 金山词霸转Mdict脚本8 m" ^6 @3 I4 W* Z! |% L. `) _: \

    该用户从未签到

    发表于 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-8-30 13:20 , Processed in 0.019487 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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