|
本帖最后由 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
- private bool ReadDBHeader(GClass103 dbHeader, BinaryReader eudicReader)
" N, L. s' C) f! V0 Z - {
+ J( Q$ M! k% S; t0 y1 P9 c2 i6 G9 P - MemoryStream memoryStream = new MemoryStream();
9 g! E2 B1 N, A5 D9 X - //BinaryReader BinaryReader = new BinaryReader(memoryStream); ~7 G2 ?9 E/ Z: M0 x# \. E& D
-
, |) g" ^ M8 X' k1 m - eudicReader.BaseStream.Seek(0L, SeekOrigin.Begin); 2 V0 c% u3 x; z0 e* |3 C$ v
- Byte bFoo = 0;
" a) R+ Q8 M( `/ t - bFoo = eudicReader.ReadByte();//86
$ d0 W1 w2 R5 ^: D" G - bFoo = eudicReader.ReadByte();//17
( W7 h$ b: m% G; y" m - dbHeader.int_0 = eudicReader.ReadInt32();% R2 ]. W8 ^1 v& z
- dbHeader.int_1 = eudicReader.ReadInt32();
4 t: ]0 e* E" q I3 _( f - dbHeader.genum5_0 = (GClass0.GEnum5)eudicReader.ReadInt32();
7 B! u+ N1 X; g0 S. `9 }; @! G - bFoo = eudicReader.ReadByte();//52
5 L; w% d( c) w - bFoo = eudicReader.ReadByte();//12
' v( V5 ]. n" j- n1 f5 t - uint iFoo = eudicReader.ReadUInt32();//3u0 m* X% n$ h# P5 m1 o( D
- byte[] buffer = new byte[1018];
2 A: p+ k: ]* b7 N; n; b4 I. P - Random random = new Random();
2 m8 @8 M5 M, G7 x( Q - random.NextBytes(buffer);% X: t8 N4 j3 C7 k" _
- buffer=eudicReader.ReadBytes(1018);8 G* C( r, M( n7 I8 u6 u8 w5 Y
- byte[] array = { };* P8 e* p6 ~, ^% a
- int arrayLength = dbHeader.int_0;4 _, F& W+ a4 J5 R
- array =eudicReader.ReadBytes(arrayLength);
: Q/ c" `; R; {& w, m3 L5 B - dbHeader.int_5 = eudicReader.ReadInt32();
' o) N/ F2 `6 ^- g% c% X - int num = 0;
1 i# S3 E9 ?1 x" y7 a: C* O( a3 M - checked
: r# Z4 C4 P5 f. m0 ` - {
0 b8 G: O! v4 i! s) \ - int num2 = dbHeader.int_5 - 1;
5 n+ n9 a% i" r0 Q* F9 V& V - for (int i = num; i <= num2; i++)
% M0 ]9 B4 q( O - {# Y; a: d! {) |6 b( F
- dbHeader.long_3[i] = eudicReader.ReadInt32();
8 V9 ^5 r& P( m5 M - }$ O! ^2 ?$ L/ ^# `- ]
- eudicReader.ReadBoolean();) W, B) B$ x A7 ?+ u
- dbHeader.int_1 = (int)eudicReader.BaseStream.Position;. a3 {8 K/ T+ I
- //bool result = false;
! S' J; G8 x [( \( S: Y - //return result;9 w) v% U1 r }1 p, @
- }0 w' y) U, e G. B- v4 C5 E3 r
- return true;
+ g& g i b) r0 Z8 H - }
复制代码
$ G5 X: u+ v1 N! O# ?看来挺复杂,其实也没啥。+ x$ J) f% N3 k/ Z- T, O0 } C6 Z
估计过几天放一个转换工具,不知道是不是侵犯版权? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
评分
-
8
查看全部评分
-
|