掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3053|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-7-10 10:51:02 | 显示全部楼层 |阅读模式
没有《金山词霸》板块,只好发在这里。* ^" f! L$ d2 E8 G' M& S8 l2 k$ y: D
研究了一下《金山词霸2014》的词库文件格式DIC,网上有个DWING做了个KSDRIP,不过不开源,只能自己研究。其实也没用逆向技术,用WINHEX打开目测了一下,索引表+XML说明+zlib压缩数据,块大小16384,0x4000,不难解压缩,于是明白了为什么胡正STARDICT那么早就解密了《金山词霸》词库。8 |5 r' {. Y1 s" Z9 S0 e
顺便研究了一下语音库,使用了简单加密,轻松解决。
( z: W0 D" Z# _! g. ~3 k高手见笑了,抛砖引玉,欢迎拍砖。

该用户从未签到

 楼主| 发表于 2021-7-10 13:04:29 | 显示全部楼层
前面说的很清楚,KSDRIP不开源,而且其生成的DA3自动从utf-16LE转成了GB2312,丢失了索引和特殊字符,同时也无法解析语音库。
% T5 B0 @( T; H6 j+ u4 X# J/ @我这个是底层解析,只是说明技术可行性,只是为了好玩,不喜欢可以忽略。
# Q: i* V2 s& g7 ~* m  q3 ]有了这个源代码,完全可以在任何平台支持金山词霸DIC和ADIC。6 G( E7 n& L: D) P: X
目前已经解决了国内大部分词典的词库格式解析,包括有道、海笛、欧路、灵格斯、金山词霸、MDICT等等,只剩海笛的语音图片离线库没有解析完成,资料太少,加密比较复杂,等有空好好再研究一下。
9 _& b# ?3 |! S1 T2 b! Q; Y$ Z) q; T* N" t
生成DIC跟解析是两个工程,目前看,120字节的文件头有几个不知道什么意思,我个人没有这个需求,所以抽不出时间。! x+ {  `/ M1 ?0 F! Z3 R
给个文件头自己看看吧:+ _. x5 j* |7 {- O% n
  1. Option Explicit
    + ~4 U; n' H* [9 S$ ^9 U
  2. - w3 R6 P0 S# T1 Z% B7 j
  3. '金山词霸DIC词库解析
    ' a" S4 ^  ^5 Y
  4. 'Kingsoft PowerWord Dic file format:
    # z6 H* x2 j$ @6 Q
  5. 'Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15. L! w( V# k4 ^8 u8 t/ N; M) `, c& ^
  6. '00000000   4B 53 44 49 70 57 05 00  95 8B 00 00 52 A3 00 00   KSDIpW  晪  R?7 v' C4 q- X& f  u( n4 B2 k
  7. '00000016   68 58 22 49 08 00 00 00  01 00 00 00 78 A8 25 00   hX"I        x?' _+ @. I9 H# _1 x$ N
  8. '00000032   00 40 00 00 01 00 02 00  04 08 00 00 09 04 00 00    @! @3 r0 f: W; t  J7 c3 p
  9. '00000048   04 08 00 00 1D 1E 00 00  20 00 00 00 11 00 00 00
    : z: p! G% i6 O. t8 V, [. t
  10. '00000064   F4 01 00 00 00 00 00 00  78 00 00 00 78 00 00 00   ?      x   x0 J' ]" ^% W3 ^' ?
  11. '00000080   F8 07 00 00 70 08 00 00  F8 3F 00 00 68 48 00 00   ?  p   ?  hH6 c! O: M0 Z6 ~1 L+ v6 n0 @
  12. '00000096   E8 F0 00 00 50 39 01 00  D8 CB 01 00 28 05 03 00   桊  P9  厮  (
    + C* ?1 s; d- D! S5 {- Q" v
  13. '00000112   50 A3 22 00 00 00 00 00  3C 00 64 00 69 00 63 00   P?     < d i c
    ' \$ a! j: m; D. j4 o! Y) E% l% B
  14. '每个zlib块解压后都是16384
    + \  D7 U6 g6 k( ]/ G7 P6 ~; U; B
  15. Type TCibaDIC
    & b% k0 K. C1 T' e9 c( X* K
  16.     lSign As Long '0x4944534b ie KSDI
    5 M1 N# P1 Q) k( U; \' M
  17.     lFileSize As Long 'file size0 L$ `: H4 I# V* m- ^
  18.     lFileSize1 As Long
    ) ]# V- m; L# u6 I4 v
  19.     lFileSize2 As Long
    7 J' l. n9 z% q' u% J. n
  20.     lFileCRC32 As Long 'crc32?* b) h+ T3 N! F1 R
  21.     lNum1 As Long '8
    4 D" K# S. H( o5 [# z. }
  22.     lNum2 As Long '1
    . e+ u5 r) X) L" _
  23.     lFileSizeOrig As Long 'Original file size of decription! p0 F: t8 J/ F* r/ A3 ^
  24.     lBlockSize As Long '0x00004000, h  S1 t- C8 n7 A/ X) S8 P1 e! H) t
  25.     lNum4 As Long '0x000200019 x" k! q# W! P( p+ {
  26.     lSource_lcid As Long '0x00000804
    0 H2 f2 q: y1 Z9 E
  27.     lTarget_lcid As Long '0x00000409) h  P8 d# t8 {) z; T% g) c* q, k. L
  28.     lNum5 As Long '0x00000804
    9 ~% ~' D7 F% c
  29.     lNumWords As Long '0x1e1d* m( _& C1 R* k9 e9 D% k
  30.     lNum6 As Long '0x20* l! \7 Y' x  a# o+ f
  31.     lNum7 As Long '0x11
    " t: p2 a! g1 B4 Y$ [
  32.     lNum8 As Long '0x01f4
    ' X& H3 ~& L, J( M
  33.     lNum9 As Long '0x000 Q- Q4 R' f* `, `2 G
  34.     lOffStart As Long '0x78  q. `7 L7 k$ I( V" R
  35.     lOffXML As Long '0x78
    9 E7 b% {2 Y1 c0 Y" `5 Z) E
  36.     lLenXML As Long '0x07f8
    9 ^- }* Y3 _4 o0 s
  37.     lOffIdxTable As Long '0x78
    ) S: c, |/ w& @! e8 v  X2 x# X) u
  38.     lLenIdxTable As Long '0x787 x/ R; A- h; Y) D) F) P0 `
  39.     lOffIdxTable1 As Long '0x78( E7 ?% V( z7 i$ Q+ q" X3 [% W2 a6 e
  40.     lLenIdxTable1 As Long '0x78! E+ P5 g( M" [" f* e- \0 Z' x
  41.     lOffIndexTable As Long '0x78
    6 W& r! b. b( I( B0 J
  42.     lLenIndexTable As Long '0x78
    6 c+ g* r$ c" i$ T
  43.     lOffWordsTable As Long '0x78
    ) U0 A/ U, Z# v* Z6 L4 H
  44.     lLenWordsTable As Long '0x78
    ! \9 T$ I: \4 d5 t1 k
  45. End Type$ `1 ?# E! D9 n) I" N- v4 D6 Z+ ?2 Z( Y
复制代码
  • TA的每日心情

    3 天前
  • 签到天数: 1293 天

    [LV.10]以坛为家III

    发表于 2021-7-10 12:04:15 | 显示全部楼层
    早有人分享了
    9 K. ~2 u; ]. R' Rsuperfan89高手的工具. n, h5 Y* Z* B& _9 b
    [工具] 金山词霸转Mdict脚本
    # Y/ B+ D* Z! e' l- [& d3 d

    该用户从未签到

    发表于 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-6-16 08:52 , Processed in 0.047772 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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