掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3603|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。4 J' Z5 R# N$ p: w- j% F
研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。) [2 {  a) ^* d0 S, t9 j
顺便研究了一下语音库,使用了简单加密,轻松解决。
; @* D; n) Z" v/ r0 `- }9 r高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。
8 `- l6 K, h. w% ^我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
* H2 O4 ^0 m) z  U/ I! L3 a有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。
  Q  v5 z! O7 A# o* `2 r" D目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。" W& y; w! h1 L* c2 s* B6 }
6 Z8 Y( S% y8 O' q( x7 f4 j
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。8 C: m( L5 x4 h; E4 X3 j; p
给个文件头自己看看吧:8 s. U% s2 r: v0 z
  1. Option Explicit
    3 i7 P8 {9 R5 d" w. K  z5 A4 U

  2. 9 v5 [- W: D3 b' t5 Y
  3. '金山词霸DIC词库解析# p3 _- I* g  `* c
  4. 'Kingsoft PowerWord Dic file format:- C/ V) r- j% g) I* {, f$ E4 a' L
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
    7 A5 |% ]$ v; s: F6 g& ]4 S
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?
    % s/ I) n1 E+ v, x6 v9 x' t
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?
    1 u. ~3 b& h' x* q; b6 Y
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @
    . t/ @* q5 H' ]4 ^' x+ a+ |6 V
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00
    $ G6 E5 w/ ~  m' c6 n/ c- S
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x
    ( s9 @% a/ j% ]  U- g- x6 O0 q: @
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH( n2 A* {1 Y6 Y. s& h+ y
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    ) N- ?% t: T5 |# ~0 [' m6 h
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c7 @& g' @: W9 a
  14. '每个zlib块解压后都是16384
    . _/ @5 m8 b9 d  m% x7 p1 c
  15. Type TCibaDIC
    ' {2 I/ z/ ~  s3 [8 |0 i
  16.     lSign As Long '0x4944534b ie KSDI
    " r2 I6 ]9 [1 q2 x' @- n% j3 I
  17.     lFileSize As Long 'file size  r2 a# \2 W" c! o) s- G
  18.     lFileSize1 As Long
    # ^& f. z6 M. S/ w) a
  19.     lFileSize2 As Long
    - l% A. W5 \1 C$ @) L! h* ?4 L
  20.     lFileCRC32 As Long 'crc32?
    . L! a* C$ [: Q- m& z  z8 E
  21.     lNum1 As Long '84 E: P( v2 l2 I5 u
  22.     lNum2 As Long '1
    + @( C( Q9 \0 u$ M7 Y7 u
  23.     lFileSizeOrig As Long 'Original file size of decription- ]! h: z+ S+ f2 s8 B5 I
  24.     lBlockSize As Long '0x000040002 Q1 L6 @: G0 ~  d
  25.     lNum4 As Long '0x00020001
    . }3 b, ^5 m& y9 p
  26.     lSource_lcid As Long '0x00000804
    0 m2 S8 [+ W6 J( V! q4 j2 ]
  27.     lTarget_lcid As Long '0x00000409
    3 F$ `0 a$ X' F. J6 L
  28.     lNum5 As Long '0x00000804/ ?) C6 S- A& H9 y; @) q
  29.     lNumWords As Long '0x1e1d
    * |" I6 I1 \8 i" Y
  30.     lNum6 As Long '0x20
    ' p' A$ R) @' p6 F% @7 u  c' f+ K
  31.     lNum7 As Long '0x11
    3 S- z9 m( X  S0 _1 v5 m# A0 t4 P
  32.     lNum8 As Long '0x01f4
    * G. b8 p' \9 `5 o$ I# j
  33.     lNum9 As Long '0x00
    * n- H4 A4 \3 [2 l# U
  34.     lOffStart As Long '0x781 l1 L4 f* J/ l9 X4 p* V" U
  35.     lOffXML As Long '0x78
    . t! q8 _' _' ^
  36.     lLenXML As Long '0x07f89 t  y$ H- p+ y9 O% q
  37.     lOffIdxTable As Long '0x78
    8 F; y9 s* W0 ?% c
  38.     lLenIdxTable As Long '0x78+ c- n# n1 a* l- J
  39.     lOffIdxTable1 As Long '0x788 u6 ~! z1 K. p1 G0 v
  40.     lLenIdxTable1 As Long '0x78
    3 a# B& T* r5 v! n
  41.     lOffIndexTable As Long '0x78
    ; @# D( O( Z7 V2 E6 Z- A
  42.     lLenIndexTable As Long '0x78
    * m1 E6 O* w0 W, n* L! g! ~
  43.     lOffWordsTable As Long '0x78; F/ S  W$ Z' v# {6 o. R
  44.     lLenWordsTable As Long '0x781 w* ]( Y" o7 R& `/ r$ E* r
  45. End Type5 R8 X* c6 N* k; Z* N
复制代码
  • TA的每日心情

    前天 17:05
  • 签到天数: 1325 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了
    ; ^% c9 o5 M% D! Osuperfan89高手的工具. `( _( Q; S% H3 z* I. q
    [工具] 金山词霸转Mdict脚本
    , J3 d% [4 _2 T- ]( d" X

    该用户从未签到

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

    [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-9-11 22:07 , Processed in 0.063405 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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