|
本帖最后由 bihaiorg 于 2021-4-8 06:49 编辑
, b6 c2 l: W+ J( \1 `
* v \1 e! S1 x3 v1 Y# O1 t. d: I ]eudic 文件格式浅析
7 u$ \- }' N8 |: _- h3 n$ |
: D) N0 e, O* g4 L4月8日进度:
3 I0 E X1 D. ~ g- Debugging...
- 已解密大部分《有道》只读不写、《欧路》词库,读写未加密词库。其余已支持《星际词霸stardict》、《灵格斯词霸》、《goldendict》等大多数词库格式。
- 突发奇想,既然兼容了大部分词典,是不是应该考虑写一个新词典工具呢?恐怕要做自由软件,收费困难,动力不足。
5 _, D' Z# ?+ u" J }+ L: ]/ H
9 J) C) h2 {, K& t( M3 _9 s e; m' F5 R& a9 K, I4 u8 @
5 x- i4 B' e+ v/ ^) X5 y# t/ X
5 L5 |5 n8 e8 D$ I4月5日进度:
6 `' r7 i8 Q1 g$ {7 q3 \0 ?$ F. O感谢各位大佬支持鼓励!9 @ r/ |) w6 U6 p* `
Debugging...
" r3 q7 j6 t2 h4 h9 s# JEUDIC全系列解码测试,包括AES192加密等。
7 @ @3 s6 O" D" b6 ~% G; T有道全系列解码测试,包括YDD、DAT、YDIC、JSON等。" g5 R+ Z: N: V
海笛词库解码测试,包括DGZ、ADGZ等。- q+ k: J$ K- O
其他的,还有必要解吗?大部分都是开源了。
! s7 @) }( {2 i7 N个人觉得不应该发布这种转换工具,看他们用户协议写着“不能反编译、反向工程,不得制作类似软件”什么的,不过俺一不是他们用户,二不是靠反编译、反向工程,纯粹靠猜,至于是不是制作类似软件什么的,管的着吗?) l$ |) p. E5 E; {. p! Z
还是有点怕法务部。
6 a! h# a2 c, N6 o$ Z很迷茫。。。
/ ?5 |* R3 H: l# ~9 s各位大佬有转换需求,可以私信发给我,有空必回复。
+ o" G9 m3 g8 Z# R4 w" ?6 C
& c( k6 T/ w: ?/ l5 T
, I+ k* I3 k' C7 A+ o+ t* R# L5 @, V5 R6 e3 a e u
3月26日进展:! b: u! F, x6 |/ K
Debugging...
) p: b3 b* O! ^顺便解析了《有道词典》安卓版的词库(桌面版格式不同)3 U4 P( d( y& q# e1 W. o4 B
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"}]}
& l9 _- m9 e/ `3 }6 U$ o3 A2 B, h
# J9 Y& ~3 w' U( v. g F* r" _
3月24日进展:
3 p. r: u, N0 W9 r完成各种EUDIC版本格式解析,包括dic文件夹下的主词库combined.bin、phrase.bin,支持解密,支持解析附加资源文件。7 W8 c2 }( l2 }- {$ x6 R" P) x
E4 N5 d" o9 f9 O, b
9 n6 l! p0 B" M# |% ]8 A' }
" d/ l+ s- E7 E- j& f6 m6 {. H |5 k8 E: v4 J6 u5 J$ q [& P7 H
3月23日进展:
8 {* g' ?% a: }" Y! j2 w- e, v7 X完成eudic解密及词典目录列表,vb6写个演示版 I( D8 X# ~) F+ {# a0 l5 C$ N6 s
' C/ e. f) F% Q# @" E) z
6 \) k+ T$ Z4 E8 Q9 v2 l1 E
+ Y! ?3 q4 a1 e5 I9 |0 U0 \3 T4 P5 @! P6 S
3月初+ f- r% ^6 B! a: M# R7 R
txt转EUDIC有专门的工具,反向的好像没找到,只好自己研究一下:
" H- N! E( s- E2 ~2 _! W2 c, u- private bool ReadDBHeader(GClass103 dbHeader, BinaryReader eudicReader)
3 O: \5 z/ C: x: q* W - {8 T8 H9 j9 ?' m3 n
- MemoryStream memoryStream = new MemoryStream();
2 n4 f9 G* `8 N" Y - //BinaryReader BinaryReader = new BinaryReader(memoryStream);9 Q7 y+ M8 x1 q
- * x1 j/ p* x |& r
- eudicReader.BaseStream.Seek(0L, SeekOrigin.Begin); ) t9 g1 x/ G; h
- Byte bFoo = 0;! F" _, e2 k. }
- bFoo = eudicReader.ReadByte();//86
. D( e8 z% S+ G3 |' i - bFoo = eudicReader.ReadByte();//17, v- u' Z5 @8 A4 S" i% n) w
- dbHeader.int_0 = eudicReader.ReadInt32();
6 `) `0 [2 |0 K; v - dbHeader.int_1 = eudicReader.ReadInt32();# @5 H6 |/ q) @' A2 R2 }
- dbHeader.genum5_0 = (GClass0.GEnum5)eudicReader.ReadInt32();% [2 I- s; H. c2 E9 _# S U
- bFoo = eudicReader.ReadByte();//52 V+ V9 Q* r7 P. m: X
- bFoo = eudicReader.ReadByte();//12
- g8 O6 @$ n1 s$ [! }- A - uint iFoo = eudicReader.ReadUInt32();//3u
) W) ^9 f5 [7 E; V1 {9 Z9 M - byte[] buffer = new byte[1018];; g* a) h2 v. o- U; F
- Random random = new Random();( L l1 K7 z) I% w
- random.NextBytes(buffer);) g1 \5 d: c/ v! `
- buffer=eudicReader.ReadBytes(1018);
5 J1 |: y# K) W' j - byte[] array = { };! l6 \% b' S) O' g& x; z
- int arrayLength = dbHeader.int_0;6 E8 q- L1 N' p
- array =eudicReader.ReadBytes(arrayLength);2 @) \" s6 ?4 F g9 M
- dbHeader.int_5 = eudicReader.ReadInt32();( b. i. u l: G. Q$ O2 l0 R
- int num = 0;0 A k+ B. n0 l }' w2 K s4 u! D
- checked
" Q/ X& M' E" m) f" `% F - {
# D) c" ~$ s" Y! f6 P - int num2 = dbHeader.int_5 - 1;
0 t, g3 b# z4 E, u5 Z- j - for (int i = num; i <= num2; i++)
+ I5 D9 W2 J9 l9 t. j/ g! @ - {0 a1 _: r' s- T
- dbHeader.long_3[i] = eudicReader.ReadInt32();& i- \+ Q* ^- L
- }
% h* I \ k& E" b - eudicReader.ReadBoolean();
6 @- A- T+ o2 J - dbHeader.int_1 = (int)eudicReader.BaseStream.Position;
( `2 i% F* T, W4 m& w8 [ - //bool result = false; f! z" u! o6 ?, }
- //return result;8 C1 w$ z; s s, E# A( R) O
- }" ?8 E2 h" O# i
- return true;
) Z0 \+ N7 N' r" |$ \% J - }
复制代码
& `3 W$ `( M: k: @看来挺复杂,其实也没啥。6 J3 K/ z+ e. W1 L3 b
估计过几天放一个转换工具,不知道是不是侵犯版权? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?免费注册
x
评分
-
9
查看全部评分
-
|