掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2826|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。  \  ?. l1 Y' P" |$ x
研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。0 k0 z. L& M/ O/ B" J* k
顺便研究了一下语音库,使用了简单加密,轻松解决。$ T) \2 D- ^/ L2 h5 V# S: ~( Y
高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。
8 L2 S+ B8 Y/ J5 @# G我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
5 @5 p$ I& `  q" W# J8 f( u# ^. F有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。( s" h' x) S% g1 L2 y' U
目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。! ~/ `/ L/ \; W( v; K7 Y& e

$ |: f+ q6 E6 B* Y# c% N6 G生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。- i/ R9 w# F+ s5 w) N4 C
给个文件头自己看看吧:
$ \6 x" B! h1 O3 V2 I) ?
  1. Option Explicit2 K2 m, q6 Z- Z5 P" Z: Z
  2. + y" w# L7 C3 _8 q1 D
  3. '金山词霸DIC词库解析3 {  M# @  h, S. d
  4. 'Kingsoft PowerWord Dic file format:1 E; Z2 `+ I2 u  K( B
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15: P; F- d$ u( v3 Y  `3 K3 f3 j: s
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?
    ! T* J  B" W5 Z: {; |/ R9 @* p
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?0 r) }$ o, I- v* T) Z8 M* X
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    ( M4 h" g+ z3 }# L5 _, {5 w% V
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00" g  o( a: @$ F8 h4 m/ O
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x
    ; J3 i+ N" F; x5 D3 o7 n, N
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH
    / v- p, v- k  T5 x. s( v
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    3 ], _2 T, M1 J8 i" }: b* x) U
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c
    . `& w" I' Z: c$ a
  14. '每个zlib块解压后都是163844 {) ?, U' @% t" Y: Z
  15. Type TCibaDIC
    $ F6 D3 E8 N! x. U8 j3 a
  16.     lSign As Long '0x4944534b ie KSDI
    # |. u# k3 `: |" `/ B9 ~9 L
  17.     lFileSize As Long 'file size
    ' u) c' p. Y! @$ f  w' e1 h9 J
  18.     lFileSize1 As Long* p! t8 m- u' o0 _5 s1 [
  19.     lFileSize2 As Long! `, r+ b( E& p) W8 ?' \
  20.     lFileCRC32 As Long 'crc32?
    4 d: x3 v9 d" l! y
  21.     lNum1 As Long '82 U* X2 T- f; ]5 \% n+ [
  22.     lNum2 As Long '12 h8 T  Z. v% h5 Y# M
  23.     lFileSizeOrig As Long 'Original file size of decription
      {- t( r2 I# F4 |+ p) A3 Q* N
  24.     lBlockSize As Long '0x00004000
    : S6 X7 o# N+ c) `4 K# _5 O' n' }
  25.     lNum4 As Long '0x00020001" Y6 n( a7 O+ m& a- k
  26.     lSource_lcid As Long '0x00000804
    * j6 J5 B& I$ D* S+ e, j7 I
  27.     lTarget_lcid As Long '0x00000409
    2 Z3 i( g, x$ P6 `# P+ T; o4 [
  28.     lNum5 As Long '0x00000804
    : D2 n4 j) r5 h5 ~9 Z! ^
  29.     lNumWords As Long '0x1e1d
    ; H4 m. u1 s& O$ s/ K0 J7 K
  30.     lNum6 As Long '0x20
    5 L# L3 a% e  x9 O& W6 c1 V! r
  31.     lNum7 As Long '0x116 y" C6 ~. R9 i' O& p/ j
  32.     lNum8 As Long '0x01f4
    1 t: V3 c- a& v) @' G# [1 f/ F
  33.     lNum9 As Long '0x00
    1 G& Q: j. {; N. d. q
  34.     lOffStart As Long '0x78$ u# J) {' L. F! y- g1 |' P) N
  35.     lOffXML As Long '0x78
    ) w3 w/ Q+ a% @1 U4 m
  36.     lLenXML As Long '0x07f82 w5 F7 b  W9 m) E4 Q% c0 B' z$ w
  37.     lOffIdxTable As Long '0x78
    ' M- X# B6 J+ c4 O! [( r+ g8 d
  38.     lLenIdxTable As Long '0x78
    6 B- B! z7 g4 c% T
  39.     lOffIdxTable1 As Long '0x789 \5 }7 b  b, m: L7 I, m
  40.     lLenIdxTable1 As Long '0x78/ {) g0 r& r& `- s
  41.     lOffIndexTable As Long '0x78
    2 W2 `' ]3 h' i, f$ _  z
  42.     lLenIndexTable As Long '0x78; C( H% v4 @+ V$ x) K
  43.     lOffWordsTable As Long '0x78
    * @- m' `# g3 l% T! I
  44.     lLenWordsTable As Long '0x78: h, h& ^) P! @& z
  45. End Type
    $ w8 @6 k& a% [+ i) t( g
复制代码
  • TA的每日心情

    昨天 17:44
  • 签到天数: 1268 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了
    9 x: w- }& q" w+ r* {. o$ ^. n8 wsuperfan89高手的工具
    2 _7 r: J6 ~+ V$ V2 O[工具] 金山词霸转Mdict脚本) D% L: x+ |4 @, Q! }- b# y

    该用户从未签到

    发表于 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-16 14:30 , Processed in 0.047526 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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