掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4434|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。5 Y' x1 g: l  _7 V% m. j7 \7 u
研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。
+ d" b4 ?8 U( j' d! q顺便研究了一下语音库,使用了简单加密,轻松解决。. y- b  N* R' m8 b2 l, I) w
高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

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

* w/ B6 E. @% H# Q8 Z8 m1 J生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。
6 R# W' T: J/ t" d& s! u给个文件头自己看看吧:
. |, Z+ U( i7 H( }. [, g' ?
  1. Option Explicit
    5 _$ l% p( j. V8 N/ H9 {( a) u

  2. # B/ s* ?( d$ x* r5 V2 i8 ^$ ~
  3. '金山词霸DIC词库解析/ r" K4 r# \9 W6 E. d& s
  4. 'Kingsoft PowerWord Dic file format:
    ) h3 W' P, l* }4 @% h
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15! q! q, r% v& S$ t. \, e
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?( j6 `2 s1 @3 S% w
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?  U& A  }/ [2 G9 e4 e
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    + _: d5 W% s' O7 a" l" J
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 003 B9 S1 @; ?2 U# w( M
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x
    9 v4 b( i* s/ y. T, ]% N
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH! {% I" S# h- C! n
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    ) P- v  |" f- s0 m0 C; z  j- z
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c; v" z) K' c& S* k! C8 A1 \
  14. '每个zlib块解压后都是16384
    7 L5 ?( @9 u, b7 R6 k
  15. Type TCibaDIC0 N& [4 j3 E" N! Y4 N$ X9 J
  16.     lSign As Long '0x4944534b ie KSDI/ m% x6 U8 H. c8 H6 D: w
  17.     lFileSize As Long 'file size
    , o6 f% |! R2 Y
  18.     lFileSize1 As Long
    9 n! S& ?" r; q; b& @0 t+ ?6 ~! v
  19.     lFileSize2 As Long
    - z% e8 s7 A( M  A
  20.     lFileCRC32 As Long 'crc32?
    7 _5 `+ U1 f1 M6 [
  21.     lNum1 As Long '8- n# m0 s9 U# }+ P* e
  22.     lNum2 As Long '1" {$ ]( j1 W2 j
  23.     lFileSizeOrig As Long 'Original file size of decription2 [* {5 I; H9 R4 v
  24.     lBlockSize As Long '0x00004000: E- V5 T9 ~5 \( x
  25.     lNum4 As Long '0x000200018 q, U. g' V/ F8 P. g$ g
  26.     lSource_lcid As Long '0x00000804
    + g: ~& z# m: x: a
  27.     lTarget_lcid As Long '0x00000409
    7 l8 ~( n% @, z
  28.     lNum5 As Long '0x000008043 T$ @: a* `! k1 @
  29.     lNumWords As Long '0x1e1d
    7 x  k; A" ^# d: U" t# a1 a/ W% u% x
  30.     lNum6 As Long '0x20
    6 p+ W- |& H5 d, D
  31.     lNum7 As Long '0x11
    : u4 P  X+ [; Q" J
  32.     lNum8 As Long '0x01f4
    0 M/ q8 F8 y6 j0 k" l
  33.     lNum9 As Long '0x00. Q% Z2 E8 P: m, g
  34.     lOffStart As Long '0x784 h0 @) ?9 |3 J+ @- p+ \
  35.     lOffXML As Long '0x78
    . p# C" D& G7 {" t$ q
  36.     lLenXML As Long '0x07f8
    - x! D! @8 ]) X& P0 B5 b
  37.     lOffIdxTable As Long '0x78
    " O  }/ T( H2 H
  38.     lLenIdxTable As Long '0x78& p7 @" W' q0 Y' o
  39.     lOffIdxTable1 As Long '0x78% h( {: D% Y% A/ C# |& {( z
  40.     lLenIdxTable1 As Long '0x78
    2 x8 N9 C. L, U+ b* O1 ?# B$ [
  41.     lOffIndexTable As Long '0x78
    " Z+ c! [; A: ^" B
  42.     lLenIndexTable As Long '0x78' |% D9 U  l6 u, `$ k9 L8 a; ~5 C
  43.     lOffWordsTable As Long '0x78; }, `) j% O: T6 }3 z
  44.     lLenWordsTable As Long '0x78
    3 D" l& W. c* X( r# M6 a
  45. End Type$ Q' n2 A- m9 T) o0 j3 n; e0 X
复制代码
  • TA的每日心情

    昨天 02:38
  • 签到天数: 1423 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了
    - ]7 A6 X. M5 O# D9 Y1 `1 gsuperfan89高手的工具" i) j# J, {7 h+ W
    [工具] 金山词霸转Mdict脚本  E9 Q/ B2 A" l0 r& v

    该用户从未签到

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

    [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-5-3 13:40 , Processed in 0.019813 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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