掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 9692|回复: 31

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

[复制链接]

该用户从未签到

发表于 2021-3-18 01:43:19 | 显示全部楼层 |阅读模式
本帖最后由 bihaiorg 于 2021-4-8 06:49 编辑 5 b3 d1 {- q$ c0 u  R1 ]
, p4 D* D, X5 }# ~8 `+ `( O
eudic 文件格式浅析
  _2 o4 O* b6 x" X3 \. U# L7 x. p; ?+ d# q/ P  r
4月8日进度:2 l# P8 O) B/ x! R
  • Debugging...
  • 已解密大部分《有道》只读不写、《欧路》词库,读写未加密词库。其余已支持《星际词霸stardict》、《灵格斯词霸》、《goldendict》等大多数词库格式。
  • 突发奇想,既然兼容了大部分词典,是不是应该考虑写一个新词典工具呢?恐怕要做自由软件,收费困难,动力不足。
    - `$ |, o; E% L3 V! ?0 i
    ' P; O( T; s6 ]
    - d1 }; R& Z5 f5 S8 m4 {- ^! D; O; `
; q6 r8 c- h7 o3 I- l# S

/ Z* i4 ^4 |* @4 u. o& R4月5日进度:
& Z* m2 L' T# R) B3 Y% t" k感谢各位大佬支持鼓励!0 n, ]/ I& Q0 A( j
Debugging...
7 O* {' G& e6 f+ SEUDIC全系列解码测试,包括AES192加密等。
" b0 e# X8 i; q  r! }0 Y8 o有道全系列解码测试,包括YDD、DAT、YDIC、JSON等。
: n$ o' c' {( v: U' ?, E" S2 O海笛词库解码测试,包括DGZ、ADGZ等。( h: ^9 `9 q5 m& m1 |0 o
其他的,还有必要解吗?大部分都是开源了。& Q5 ]1 ?% D7 [  f" h1 n
个人觉得不应该发布这种转换工具,看他们用户协议写着“不能反编译、反向工程,不得制作类似软件”什么的,不过俺一不是他们用户,二不是靠反编译、反向工程,纯粹靠猜,至于是不是制作类似软件什么的,管的着吗?
2 K6 f( c& ^. [# a% h0 U  o还是有点怕法务部。
7 N0 O4 _1 Z3 X; ?很迷茫。。。
% v4 B1 L) N: C  M" y1 o/ \$ [5 }' L各位大佬有转换需求,可以私信发给我,有空必回复。
( o  c# l; j; O, y: W4 X! h, o7 a0 M# Y$ L+ d" }5 ?. x
/ k9 j3 S* W: P" u7 U5 Y

" F, m: l9 J, h% R# D0 X+ z7 n; e! }1 \3月26日进展:& E0 l  k8 n4 `! Y) W. H
Debugging...& Y  i! i5 }: d: N2 L5 ]( R
顺便解析了《有道词典》安卓版的词库(桌面版格式不同)
$ g. W. o$ i2 w& l7 IA�{"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"}]}
0 n- i) X: B+ {. s! u; ?& \) |
( n2 S$ H8 z, w! F4 F1 Q% [* z$ d) R" j. B
3月24日进展:( X0 z& I9 g. V6 k% q
完成各种EUDIC版本格式解析,包括dic文件夹下的主词库combined.bin、phrase.bin,支持解密,支持解析附加资源文件。
' K9 t. D- P3 Y4 g' B' w$ c
$ P3 L1 j+ k9 i7 m
. N+ J% I0 C# Y' ]2 ^+ S: X( l
( G9 h3 w) v* P: R1 ^$ B5 F) {1 s, ~
- D/ d4 N0 D1 g9 m% B" i3月23日进展:
% B* n  h/ ]3 d" V- f完成eudic解密及词典目录列表,vb6写个演示版 6 |( \- O4 f7 g$ _/ N) ~
/ T% N3 B5 D) J  M5 Z! @
" M' {* H% ~8 P" {

% x) x+ Z; M) |- l8 Z2 `+ n. `/ M& y0 P
0 C* ]+ m% b' I$ c1 @3月初
5 d$ o# }, A* v% x; I8 d" mtxt转EUDIC有专门的工具,反向的好像没找到,只好自己研究一下:! m" K7 A; m( Z% w# v
  1. private bool ReadDBHeader(GClass103 dbHeader, BinaryReader eudicReader)6 u" @3 q8 j: ~' ?* U% E+ h
  2.                 {  N+ y& P' x: Z5 l* S/ {' G" Z
  3.                         MemoryStream memoryStream = new MemoryStream();
    # ^7 G8 Q# w6 B8 b' ^" K: A+ z
  4.                         //BinaryReader BinaryReader = new BinaryReader(memoryStream);( _. @: D0 ~- s& l8 C8 f: L
  5.                         / H1 R- z2 _. E# y+ D( F+ u$ L, K
  6.                         eudicReader.BaseStream.Seek(0L, SeekOrigin.Begin);                        . [$ v: ^# P5 Q( k  G( i
  7.                         Byte bFoo = 0;3 C5 S- T# j! y. v; v! l* A4 F
  8.                         bFoo = eudicReader.ReadByte();//863 K! h4 q+ d2 V3 y! Y8 F
  9.                         bFoo = eudicReader.ReadByte();//17% O5 z- y0 R: k" G. i4 e
  10.                         dbHeader.int_0 = eudicReader.ReadInt32();" J, ~+ K, ^' _- Y
  11.                         dbHeader.int_1 = eudicReader.ReadInt32();
    / a/ z4 q4 t: ?2 h+ t6 Y8 j3 ?
  12.                         dbHeader.genum5_0 = (GClass0.GEnum5)eudicReader.ReadInt32();  S6 `3 n! {6 K- s1 W' e% Y
  13.                         bFoo = eudicReader.ReadByte();//52
    ; J0 O% Q) C4 r' W& r% n3 C
  14.                         bFoo = eudicReader.ReadByte();//12- i* h( a: B0 v# S" B( r
  15.                         uint iFoo = eudicReader.ReadUInt32();//3u  a( j* \  ~( S
  16.                         byte[] buffer = new byte[1018];
    3 u! ?" I+ p! M6 i
  17.                         Random random = new Random();
    6 ?/ V  C) i% `, M- v; t9 c
  18.                         random.NextBytes(buffer);
    . {/ b" {( L  u6 f& R
  19.                         buffer=eudicReader.ReadBytes(1018);
    8 T! N3 G- ^9 _7 B& g. @, Q5 s
  20.                         byte[] array = { };! u* n* x! E$ ~" E1 z$ _
  21.                         int arrayLength = dbHeader.int_0;  ~. i7 V6 p9 a, {3 h8 @
  22.                         array =eudicReader.ReadBytes(arrayLength);
    / \6 w  E) C& n3 y# g
  23.                         dbHeader.int_5 = eudicReader.ReadInt32();
    ; h8 ^" F% I% }; y
  24.                         int num = 0;
    . Q/ H2 ?0 I, L" p
  25.                         checked0 k: E1 j- c! ], O7 w# q/ G0 ^1 w
  26.                         {8 ^! k' h% l( P4 c3 I
  27.                                 int num2 = dbHeader.int_5 - 1;/ P) F9 S8 _& t, ]! ?/ P9 s
  28.                                 for (int i = num; i <= num2; i++)* ~9 M8 p6 X" }, O8 F
  29.                                 {" y6 R( E! I3 ?+ ?( w
  30.                                         dbHeader.long_3[i] = eudicReader.ReadInt32();, `# {$ A/ q/ E  J, q6 t
  31.                                 }
    2 e+ |, h  N: ~% d
  32.                                 eudicReader.ReadBoolean();
    3 H2 n/ l9 [; u% k$ c5 R: G
  33.                                 dbHeader.int_1 = (int)eudicReader.BaseStream.Position;
    9 G+ [4 @  D3 g% K* N( V. X! g! K' V
  34.                                 //bool result = false;
    , }- M( u" C4 b- }: i% L  \5 R
  35.                                 //return result;
    3 {& H* @) a3 p! v  k
  36.                         }
    4 o1 c7 N, l, @8 `4 g) b$ i
  37.                         return true;
    . r, W* ~; O! k% Z) n1 J* \% q
  38.                 }
复制代码

7 \* t# n0 v' r9 W) k看来挺复杂,其实也没啥。# i4 J7 q) V9 _4 U
估计过几天放一个转换工具,不知道是不是侵犯版权?

本帖子中包含更多资源

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

x

评分

9

查看全部评分

该用户从未签到

 楼主| 发表于 2021-3-18 05:52:24 | 显示全部楼层
https://gitee.com/wp19991/eudic-dictionary-making
+ l  _7 K. ~* k* [txt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉得有必要吗?
  • TA的每日心情
    开心
    2023-1-18 23:24
  • 签到天数: 211 天

    [LV.7]常住居民III

    发表于 2021-3-18 12:08:09 | 显示全部楼层
    bihaiorg 发表于 2021-3-18 05:52$ c! C- S# v" D9 D0 b* M
    https://gitee.com/wp19991/eudic-dictionary-making
    . K( R" T' y) L6 z$ c8 ]& t1 Wtxt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉 ...
    0 l, [, T9 f) |* m. X
    EUDIC转txt非常有必要,有的话,建议把工具放出来

    该用户从未签到

     楼主| 发表于 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> 《三國演義》第二七回:“一人一個火把。”
    复制代码

    . n) A6 |; O! ^0 y: B' ^6 R# T
    0 B0 {  n& T- P  k8 r6 V6 Y' j% l+ m! H
  • TA的每日心情

    2023-3-8 00:39
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2021-3-18 08:19:27 | 显示全部楼层
    bihaiorg 发表于 2021-3-18 05:52
    6 F4 h6 I0 l" ^$ ~; P) ]4 G! ?6 X9 Xhttps://gitee.com/wp19991/eudic-dictionary-making" \& n2 o" N- h. y
    txt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉 ...
    / e8 U  c+ i; h( a& X. d8 V- s7 P
    有必要,非常有必要

    该用户从未签到

     楼主| 发表于 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
    - a$ _. n' I1 p% c% W研究了几天,不太容易,现在能做到解压,但是索引不好找
    5 Y) K6 _  a) \+ g& }9 p

    / f: q5 U' K4 D2 Jbihaiorg 兄,辛苦了!,更希望轉成 txt 格式帶有 html 標簽,則更易於轉成mdx

    该用户从未签到

     楼主| 发表于 2021-3-19 06:51:55 | 显示全部楼层
    解析了一下文件头:, T$ \( Z2 C8 s6 P4 Q' z
    Han_Yu_Da_Ci_Dian.eudic:
    0 I# v. F6 E! I; \7 C0 K1 |4 [: F汉语大辞典@可查成语48700条、汉字20973个、词语377590条、诗词93535首、歇后语16648条、灯谜40790条、对联5390幅、妙言警句13752条、俗语1929条、谚语1200条、同义词2036组、反义词3282组、别名近1000组、古文词语近1000组,内设【辞海成语词典】、【常用成语词典】、【新华字典】、【中华辞海】、【中华诗词】、【拼音专家】、【歇后语大全】、【灯谜大全】、【对联欣赏】、【同义反义别名词典】、【名言词典】、【古文词典】及【成语故事】等内容,其拼音、解释、出处、示例等等都一目了然。3 ~( b4 t5 {* i7 H  _6 h

    3 M9 P) N, A" i0 u8 g+ e* n+ q作者:Eudic
    / o7 q: o* T4 l6 a任重道远,格式复杂。

    该用户从未签到

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

    [LV.7]常住居民III

    发表于 2021-3-19 12:07:05 | 显示全部楼层
    本帖最后由 kyletruman 于 2021-3-19 12:14 编辑
    8 f6 J8 Y  H& L% J
    bihaiorg 发表于 2021-3-19 07:05
    ) {* D* p1 Y! ]" O欧陆的没啥意思,研究了一下海笛的DGZ/ADGZ,听说比较权威。

    3 p" x2 h9 v# n$ P  d+ `0 ^  |+ f4 T: y
    海词(即海笛)的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 编辑 8 @1 l- R% R3 Q9 G3 O3 R

    & X. F3 E: l) I7 X/ }$ C* E不能乱说了

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

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

    [LV.7]常住居民III

    发表于 2021-3-21 00:46:35 | 显示全部楼层
    bihaiorg 发表于 2021-3-18 05:52
    7 [5 {7 {0 G7 _" ]0 r3 o- T9 ~https://gitee.com/wp19991/eudic-dictionary-making( }  A+ V9 M; m! T  t
    txt转EUDIC是官方工具,EUDIC转txt好像还没有,大家觉 ...
    / c; l9 L: Z: ]9 X7 p
    有必要的,亲,超级有必要,去做吧
  • TA的每日心情
    奋斗
    2021-7-31 06:44
  • 签到天数: 5 天

    [LV.2]偶尔看看I

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

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2021-3-24 16:15:36 | 显示全部楼层
    个别EUDB还是解析失败,有好几种格式,有加密的有不加密的,没资料,难弄。5 x: Y  C: h; a$ r; I3 ]
    Processing: H:\stardict\eudic\unpack_EUDIC\2129724425.eudb  M, B0 \" H8 t! ?5 o! w$ }
    Got: 湘雅医学大词典@湘雅医学大词典 最权威的医学大词典9 G! i- D( y: t8 N5 n0 @
    资料来源 StarDict Project
  • TA的每日心情
    郁闷
    4 天前
  • 签到天数: 1272 天

    [LV.10]以坛为家III

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

    该用户从未签到

     楼主| 发表于 2021-3-25 06:04:33 | 显示全部楼层
    本帖最后由 bihaiorg 于 2021-3-25 07:10 编辑 . B1 H! z- h7 r# U+ V& ?
    * m" e5 j' p% Y, O3 X! o
    涉及eudic主密钥,这个工具就不适合公开发了,侵权是肯定的。# J. e) S5 g% Y& }% ]5 b3 c
    为了避免纠纷,匿了。。。( |/ a: L8 M! G& i5 l/ j4 y: _
    算法完成,目的达到,告一段落。+ e: ]4 k3 w* D0 }
    本周目标解密《有道》YDIC文件格式,各位大佬有没有相关说明资料?
  • TA的每日心情
    擦汗
    2023-2-17 10:15
  • 签到天数: 123 天

    [LV.7]常住居民III

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

    该用户从未签到

    发表于 2021-4-13 09:47:31 | 显示全部楼层
    海迪的一些词典的index可以导出就好了
  • TA的每日心情
    开心
    2021-9-17 12:38
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2021-9-16 11:21:18 | 显示全部楼层
    持续关注中

    该用户从未签到

    发表于 2021-9-19 14:06:37 | 显示全部楼层
    持续关注,加油
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 07:07 , Processed in 0.073016 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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