掌上百科 - PDAWIKI

 找回密码
 免费注册
查看: 1215|回复: 22

[经验交流] eudic 文件格式浅析

[复制链接]

该用户从未签到

发表于 2021-3-18 01:43:19 | 显示全部楼层 |阅读模式
本帖最后由 bihaiorg 于 2021-4-8 06:49 编辑
4 Y+ m7 r) \; N# Q& w8 ~$ x6 J% W; ~- |' V( B
eudic 文件格式浅析4 X2 {9 r$ x3 B: O% }% R0 n+ I

: ]) J$ u/ ]8 `, O1 ~  |4月8日进度:1 P- |3 R9 r2 _0 f" ?  n
  • Debugging...
  • 已解密大部分《有道》只读不写、《欧路》词库,读写未加密词库。其余已支持《星际词霸stardict》、《灵格斯词霸》、《goldendict》等大多数词库格式。
  • 突发奇想,既然兼容了大部分词典,是不是应该考虑写一个新词典工具呢?恐怕要做自由软件,收费困难,动力不足。; s) w7 W! k( ^9 r5 ?

    7 F! l# i, [+ G" b% _, j) k+ M/ K! d/ F

) `) ?7 V, i5 C6 ^9 x; G) e5 o+ u# O5 m
4月5日进度:% q3 o# u" B" Q: q2 F7 H
感谢各位大佬支持鼓励!
4 S6 ]- {* r+ G1 z( I1 n, M+ i- ADebugging...
9 `, [7 p8 v0 A$ P6 i( P! e/ B" A& REUDIC全系列解码测试,包括AES192加密等。/ t  y" X) R  `2 T( K# R9 V
有道全系列解码测试,包括YDD、DAT、YDIC、JSON等。
8 {5 I' L7 L; j; ], i; j海笛词库解码测试,包括DGZ、ADGZ等。3 B; n1 _  N2 H$ K. `
其他的,还有必要解吗?大部分都是开源了。3 c( j( O6 [0 I6 L
个人觉得不应该发布这种转换工具,看他们用户协议写着“不能反编译、反向工程,不得制作类似软件”什么的,不过俺一不是他们用户,二不是靠反编译、反向工程,纯粹靠猜,至于是不是制作类似软件什么的,管的着吗?' O. _6 }- p& p  K
还是有点怕法务部。
9 q# T7 J8 S8 D; q# Y1 A! e很迷茫。。。
4 \2 ~* B3 x6 ^) d$ n# \" S各位大佬有转换需求,可以私信发给我,有空必回复。
! f9 o" e0 f2 g# L+ C) _( I2 t: F! A6 m9 \* J, S9 k! l5 L  I! m

* y! a0 e! ^: w. F0 c& s6 d
) b7 K1 x- Y! G! z% r. W3月26日进展:9 W' C5 R) G+ m$ W6 j: n7 l  s/ n
Debugging.../ f: U# j8 g( |4 j! I: w
顺便解析了《有道词典》安卓版的词库(桌面版格式不同), S7 N" @% m8 v& \6 {2 A
A�{"wordList":[{"h-g":{"p":[{"p":"pron"}],"i-g":{"i":{"audio":"http://ydschool-online.nos.netease.com/oxford_Advance_video_US__/_e/_em/_em_1_gb_1.mp3","content":"əm"},"y":{"audio":"http://ydschool-online.nos.netease.com/oxford_Advance_video_US__/_e/_em/_em_1_us_1.mp3"}},"r":[{"r":" <i>informal</i> "}],"h":"'em","x":[{"xr1":[{"xt":"eq","value":[{"xh":"them","xt":"eq"}]}]},{"chn":{"content":"别让他们跑掉。"},"content":"Don't let 'em get away."}]},"Name":"'em"}]}. }, Y/ w0 ?$ I  T. ~

- D4 L  h6 A4 j/ u0 L2 T. [
& I/ {1 ~" n/ w8 `- c+ N- Y) f3月24日进展:3 P+ Y, e: H1 Q+ |5 n
完成各种EUDIC版本格式解析,包括dic文件夹下的主词库combined.bin、phrase.bin,支持解密,支持解析附加资源文件。
  g8 H/ t" ^. S& d' d# z
0 J' F' \& F4 }1 A+ e
/ N2 P) `' ~2 V  B9 w8 N/ s( v' M- m) N& I; z

4 q+ d# i$ Z+ ]" M3月23日进展:
- P" T) M' L# _; n$ D( d6 M8 a完成eudic解密及词典目录列表,vb6写个演示版 9 w- K. n, A2 D9 @: e6 q2 y, H, I$ h+ Q

- w  {- d, d6 `4 |) e6 j
7 e6 Z( t1 i2 d- o8 P9 i5 c; |8 ~9 Z, n" l

5 M% p* M- a" r# Y5 h3月初! N6 g- _' a4 w; F& {. [) \- L
txt转EUDIC有专门的工具,反向的好像没找到,只好自己研究一下:7 E+ {- n. ]* k# R3 s
  1. private bool ReadDBHeader(GClass103 dbHeader, BinaryReader eudicReader)
    " N, L. s' C) f! V0 Z
  2.                 {
    + J( Q$ M! k% S; t0 y1 P9 c2 i6 G9 P
  3.                         MemoryStream memoryStream = new MemoryStream();
    9 g! E2 B1 N, A5 D9 X
  4.                         //BinaryReader BinaryReader = new BinaryReader(memoryStream);  ~7 G2 ?9 E/ Z: M0 x# \. E& D
  5.                        
    , |) g" ^  M8 X' k1 m
  6.                         eudicReader.BaseStream.Seek(0L, SeekOrigin.Begin);                        2 V0 c% u3 x; z0 e* |3 C$ v
  7.                         Byte bFoo = 0;
    " a) R+ Q8 M( `/ t
  8.                         bFoo = eudicReader.ReadByte();//86
    $ d0 W1 w2 R5 ^: D" G
  9.                         bFoo = eudicReader.ReadByte();//17
    ( W7 h$ b: m% G; y" m
  10.                         dbHeader.int_0 = eudicReader.ReadInt32();% R2 ]. W8 ^1 v& z
  11.                         dbHeader.int_1 = eudicReader.ReadInt32();
    4 t: ]0 e* E" q  I3 _( f
  12.                         dbHeader.genum5_0 = (GClass0.GEnum5)eudicReader.ReadInt32();
    7 B! u+ N1 X; g0 S. `9 }; @! G
  13.                         bFoo = eudicReader.ReadByte();//52
    5 L; w% d( c) w
  14.                         bFoo = eudicReader.ReadByte();//12
    ' v( V5 ]. n" j- n1 f5 t
  15.                         uint iFoo = eudicReader.ReadUInt32();//3u0 m* X% n$ h# P5 m1 o( D
  16.                         byte[] buffer = new byte[1018];
    2 A: p+ k: ]* b7 N; n; b4 I. P
  17.                         Random random = new Random();
    2 m8 @8 M5 M, G7 x( Q
  18.                         random.NextBytes(buffer);% X: t8 N4 j3 C7 k" _
  19.                         buffer=eudicReader.ReadBytes(1018);8 G* C( r, M( n7 I8 u6 u8 w5 Y
  20.                         byte[] array = { };* P8 e* p6 ~, ^% a
  21.                         int arrayLength = dbHeader.int_0;4 _, F& W+ a4 J5 R
  22.                         array =eudicReader.ReadBytes(arrayLength);
    : Q/ c" `; R; {& w, m3 L5 B
  23.                         dbHeader.int_5 = eudicReader.ReadInt32();
    ' o) N/ F2 `6 ^- g% c% X
  24.                         int num = 0;
    1 i# S3 E9 ?1 x" y7 a: C* O( a3 M
  25.                         checked
    : r# Z4 C4 P5 f. m0 `
  26.                         {
    0 b8 G: O! v4 i! s) \
  27.                                 int num2 = dbHeader.int_5 - 1;
    5 n+ n9 a% i" r0 Q* F9 V& V
  28.                                 for (int i = num; i <= num2; i++)
    % M0 ]9 B4 q( O
  29.                                 {# Y; a: d! {) |6 b( F
  30.                                         dbHeader.long_3[i] = eudicReader.ReadInt32();
    8 V9 ^5 r& P( m5 M
  31.                                 }$ O! ^2 ?$ L/ ^# `- ]
  32.                                 eudicReader.ReadBoolean();) W, B) B$ x  A7 ?+ u
  33.                                 dbHeader.int_1 = (int)eudicReader.BaseStream.Position;. a3 {8 K/ T+ I
  34.                                 //bool result = false;
    ! S' J; G8 x  [( \( S: Y
  35.                                 //return result;9 w) v% U1 r  }1 p, @
  36.                         }0 w' y) U, e  G. B- v4 C5 E3 r
  37.                         return true;
    + g& g  i  b) r0 Z8 H
  38.                 }
复制代码

$ G5 X: u+ v1 N! O# ?看来挺复杂,其实也没啥。+ x$ J) f% N3 k/ Z- T, O0 }  C6 Z
估计过几天放一个转换工具,不知道是不是侵犯版权?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?免费注册

x

评分

8

查看全部评分

该用户从未签到

 楼主| 发表于 2021-3-18 05:52:24 | 显示全部楼层
https://gitee.com/wp19991/eudic-dictionary-making
' P! z3 d$ s3 I3 X: S6 K0 {6 w3 ltxt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉得有必要吗?
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 137 天

    [LV.7]常住居民III

    发表于 2021-3-18 12:08:09 | 显示全部楼层
    bihaiorg 发表于 2021-3-18 05:52
    / S# g' P" a% Z6 |2 P2 s, z( H, l9 Uhttps://gitee.com/wp19991/eudic-dictionary-making" p( k$ x$ F+ c
    txt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉 ...

    ! K( ]; ~. q, l# n' dEUDIC转txt非常有必要,有的话,建议把工具放出来
  • TA的每日心情

    2021-4-8 19:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2021-3-18 08:19:27 | 显示全部楼层
    bihaiorg 发表于 2021-3-18 05:52" g, {1 I" o: v6 D6 E9 a" p8 o% T
    https://gitee.com/wp19991/eudic-dictionary-making4 L4 p5 A# r# F3 h0 \
    txt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉 ...
    ; l: W! D7 J/ W2 |0 t, ~  j( @4 U
    有必要,非常有必要

    该用户从未签到

     楼主| 发表于 2021-3-18 13:44:45 | 显示全部楼层
    研究了几天,不太容易,现在能做到解压,但是索引不好找
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2021-3-18 16:12:24 | 显示全部楼层
    bihaiorg 发表于 2021-3-18 13:44
    # R. a5 L# \' L6 O  Z4 |$ ], K( d研究了几天,不太容易,现在能做到解压,但是索引不好找
    5 t+ Y: ~0 ~, t+ J% z
    * [3 v0 g5 M# w9 ^& ~
    bihaiorg 兄,辛苦了!,更希望轉成 txt 格式帶有 html 標簽,則更易於轉成mdx

    该用户从未签到

     楼主| 发表于 2021-3-19 06:51:55 | 显示全部楼层
    解析了一下文件头:
    0 C; D! A& v, @$ ~( j) o5 O0 HHan_Yu_Da_Ci_Dian.eudic:, k9 n  f; A8 z; {
    汉语大辞典@可查成语48700条、汉字20973个、词语377590条、诗词93535首、歇后语16648条、灯谜40790条、对联5390幅、妙言警句13752条、俗语1929条、谚语1200条、同义词2036组、反义词3282组、别名近1000组、古文词语近1000组,内设【辞海成语词典】、【常用成语词典】、【新华字典】、【中华辞海】、【中华诗词】、【拼音专家】、【歇后语大全】、【灯谜大全】、【对联欣赏】、【同义反义别名词典】、【名言词典】、【古文词典】及【成语故事】等内容,其拼音、解释、出处、示例等等都一目了然。5 E3 K8 l/ f/ n! W$ c& O) S5 l
      i: Y) f( T8 F5 x0 a
    作者:Eudic
    ( V1 r* C  N. Q% Q3 H: L任重道远,格式复杂。

    该用户从未签到

     楼主| 发表于 2021-3-19 07:05:03 | 显示全部楼层
    欧陆的没啥意思,研究了一下海笛的DGZ/ADGZ,听说比较权威。
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 137 天

    [LV.7]常住居民III

    发表于 2021-3-19 12:07:05 | 显示全部楼层
    本帖最后由 kyletruman 于 2021-3-19 12:14 编辑
    3 p/ A; N7 d5 N3 H5 x3 Z
    bihaiorg 发表于 2021-3-19 07:05
    7 E% Q$ K  q  M" V+ o欧陆的没啥意思,研究了一下海笛的DGZ/ADGZ,听说比较权威。
    , L5 |1 ^/ c$ r) m2 _" C1 |; s
    ! ^3 ?  w# g. P+ N- P0 `
    海词(即海笛)的APP需要购买账号,只能联网查询,离线啥都看不见,比如牛津现代英汉双解大词典(第12版) [Concise Oxford English-Chinese Dictionary]这部词典,需要花钱:https://www.wandoujia.com/apps/7577097,目前论坛没有该词典的文字版mdx

    该用户从未签到

     楼主| 发表于 2021-3-19 12:34:47 | 显示全部楼层
    本帖最后由 bihaiorg 于 2021-3-19 15:39 编辑
    " z* V1 g0 j7 [- b& y- M* w3 a$ x  U+ m- I
    不能乱说了

    该用户从未签到

     楼主| 发表于 2021-3-19 12:43:04 | 显示全部楼层
    这几天主要研究“欧陆eudic”词库解压转txt,下周开始研究“有道”词库,争取做个通用工具

    该用户从未签到

    发表于 2021-3-19 20:31:19 | 显示全部楼层
    牛人,崇拜,期待通用转换工具

    该用户从未签到

     楼主| 发表于 2021-3-19 21:55:03 | 显示全部楼层
    举例:Han_Yu_Da_Ci_Dian.eudic,转换为TXT:
    1. <B>一</B><DIV><DIV>yī<BR>〡<BR>〔《廣韻》於悉切,入質,影。〕<BR>1.數詞。大寫作“壹”。最小的正整數。常用以表示人或事、物的最少數量。<BR> 《詩?鄭風?野有蔓草》:“有美一人,清揚婉兮。”<BR> 《論語?公冶長》:“﹝子貢﹞對曰:‘賜(子貢)也,何敢望回(顏回)?回也,聞一以知十;賜也,聞一以知二。’”唐韓愈《送石處士序》:“先生居嵩邙瀍穀之閒,冬一裘,夏一葛;食朝夕,飯一盂,蔬一盤。”<BR> 清彭端淑《為學一首示子侄》:“吾一瓶一缽足矣。”<BR>2.序數的第一位。<BR> 《書?洪範》:“五行:一曰水,二曰火,三曰木,四曰金,五曰土。”<BR> 《漢書?鮑宣傳》:“凡民有七亡:陰陽不和,水旱為災,一亡也。”<BR> 《儒林外史》第十九回:“﹝匡超人﹞考過,宗師着實稱贊,取在一等第一。”<BR> 魯迅《吶喊?明天》:“原來魯鎮是僻靜地方,還有些古風:不上一更,大家便都關門睡覺。”<BR>3.若干分中的一分或整數以外的零頭。<BR> 《左傳?隱公元年》:“先王之制,大都不過參國之一,中五之一,小九之一。”<BR> 《文選?陸機〈嘆逝賦〉》:“顧舊要於遺存,得十一於千百。”<BR> 李善注:“十一者,謂通千百而計之,十分而得其一。”<BR> 唐韓愈《別知賦》:“惟知心之難得,斯百一而為收。”<BR> 宋洪邁《容齋隨筆?俗語有所本》:“俗語謂錢一貫有畸曰千一、千二,米一石有畸曰石一、石二,長一丈有畸曰丈一、丈二之類。”<BR>4.表示一部份。<BR> 《呂氏春秋?舉難》:“尺之木必有節目,寸之玉必有瑕瓋,先王知物之不可全也,故擇務而貴取一也。”<BR> 高誘注:“一分。”<BR>5.表示動作一次或短暫。<BR> 《宋書?戴顒傳》:“綏(王綏)曰:‘聞卿善琴,試欲一聽。’”<BR> 《三國演義》第一○六回:“勝(李勝)曰:‘乞紙筆一用。’”<BR> 《二刻拍案驚奇》卷十一:“書生得了科名,難道不該歸來會一會宗族鄰里,這也罷,父母墳墓邊也不該去拜見一拜見的?”丁西林《一隻馬蜂》:“這幾天太陽已經很利害,不如叫他們先把南房裏的皮衣,拿出來曬一曬。”<BR> 毛澤東《實踐論》:“你要知道梨子的滋味,你就得變革梨子,親口吃一吃。”<BR>6.某一個。<BR> 漢劉向《列仙傳?騎龍鳴》:“一旦騎龍來游亭下,語云馮伯昌孫也。”<BR> 《三國演義》第九二回:“忽見一人自正南而來,口稱有機密事。”<BR> 清蒲松齡《聊齋志异?狼》:“一屠暮行,為狼所逼。”<BR> 毛澤東《矛盾論》一:“唯物辯證法的宇宙觀主張從事物的內部、從一事物對他事物的關係去研究事物的發展。”<BR>7.每個。<BR> 《三國演義》第二七回:“一人一個火把。”
    复制代码
    ' x0 r. ^) f+ Y# q$ L5 R

    0 v% d3 |2 n; M' v# j' g  |: j
    $ i5 C7 F7 ]3 u

    该用户从未签到

     楼主| 发表于 2021-3-19 21:59:10 | 显示全部楼层
    目前还不完善,有转换需求的话可以私信研究一下。目前只能转一下小文件,主要是懒得分析INDEX索引,所以解压后是一大坨。

    该用户从未签到

     楼主| 发表于 2021-3-19 21:59:45 | 显示全部楼层
    目前还不完善,有转换需求的话可以私信研究一下。目前只能转一下小文件,主要是懒得分析INDEX索引,所以解压后是一大坨。
  • TA的每日心情
    慵懒
    2020-10-26 11:05
  • 签到天数: 227 天

    [LV.7]常住居民III

    发表于 2021-3-21 00:46:35 | 显示全部楼层
    bihaiorg 发表于 2021-3-18 05:52  n, Y- t1 A7 [% u+ ^
    https://gitee.com/wp19991/eudic-dictionary-making9 b6 N7 F% d) `7 v4 [  J2 J# v+ M
    txt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉 ...

    / n9 u& w% y2 `. ^" c5 W1 W2 W$ i有必要的,亲,超级有必要,去做吧
  • TA的每日心情
    开心
    2020-12-6 12:00
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2021-3-23 16:47:25 | 显示全部楼层
    欧路那个离线词典不错的,还带图片。剩下的就是原声例句也不错。个人认为就这两本不错,其它我都加载别人制作的词典。

    该用户从未签到

     楼主| 发表于 2021-3-23 17:31:53 | 显示全部楼层
    不在乎它错不错,只希望兼容大部分词典格式

    该用户从未签到

     楼主| 发表于 2021-3-24 16:15:36 | 显示全部楼层
    个别EUDB还是解析失败,有好几种格式,有加密的有不加密的,没资料,难弄。
    / T* p3 w4 k3 [9 pProcessing: H:\stardict\eudic\unpack_EUDIC\2129724425.eudb
    ! [. w+ E: B& f+ q" W* PGot: 湘雅医学大词典@湘雅医学大词典 最权威的医学大词典, c1 e0 v# `; }* b: W) P# \9 [
    资料来源 StarDict Project
  • TA的每日心情
    无聊
    9 小时前
  • 签到天数: 534 天

    [LV.9]以坛为家II

    发表于 2021-3-24 22:58:54 | 显示全部楼层
    厉害,辛苦了

    该用户从未签到

     楼主| 发表于 2021-3-25 06:04:33 | 显示全部楼层
    本帖最后由 bihaiorg 于 2021-3-25 07:10 编辑
    0 y$ _% h! o% N1 ?% I$ w% E
    + M7 Y$ `3 \9 r3 P) f涉及eudic主密钥,这个工具就不适合公开发了,侵权是肯定的。$ [- Z* ~( `5 s" l7 {7 V. S
    为了避免纠纷,匿了。。。4 @% _. S5 p! ~! E' N; e7 s. u
    算法完成,目的达到,告一段落。
    ( x, ~8 I. P( m% x. F4 N* `本周目标解密《有道》YDIC文件格式,各位大佬有没有相关说明资料?
  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2021-3-31 00:13:02 | 显示全部楼层
    逆转 txt, 这就是破解词库啊....能做到方便的逆转词库, 获得各种词表, 那综合利用起来, 简直...

    该用户从未签到

    发表于 2021-4-13 09:47:31 | 显示全部楼层
    海迪的一些词典的index可以导出就好了
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    顶部qrcode底部
    关注掌上百科官方微信公众号送积分
    关注掌上百科官方微信公众号
    关注微信公众号 pdawiki,获取邀请码,看文抢积分,抽奖得浮云! Follow our Wechat official account "pdawiki", get invitation codes, and play the lottery to earn points (积分)!

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2021-4-22 11:25 , Processed in 0.050243 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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